You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by David Glasser <gl...@davidglasser.net> on 2007/10/09 13:17:19 UTC

Re: svn commit: r27036 - trunk/subversion/tests/cmdline

Blair, this rev breaks test 8 for me:

dhcp-172-19-36-49:~/Projects/Subversion/svn-trunk/subversion/tests/cmdline
glasser$ ./externals_tests.py 8
UNEXPECTED EXCEPTION:
Traceback (most recent call last):
  File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/tests/cmdline/svntest/main.py",
line 930, in run
    rc = apply(self.pred.run, (), kw)
  File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/tests/cmdline/svntest/testcase.py",
line 121, in run
    return self.func(sandbox)
  File "./externals_tests.py", line 684, in
disallow_dot_or_dotdot_directory_reference
    set_externals_for_path_expect_error(B_path, externals_value_1, wc_dir)
  File "./externals_tests.py", line 653, in set_externals_for_path_expect_error
    svntest.main.file_append(tmp_f, val)
  File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/tests/cmdline/svntest/main.py",
line 478, in file_append
    file_write(path, new_text, 'a')  # open in (a)ppend mode
  File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/tests/cmdline/svntest/main.py",
line 489, in file_write
    fp = open(path, mode)
IOError: [Errno 2] No such file or directory:
'svn-test-work/working_copies/externals_tests-8/tmpAsfgXu'
FAIL:  externals_tests.py 8: error if external target dir involves '.' or '..'

--dave

On 10/8/07, blair@tigris.org <bl...@tigris.org> wrote:
> Author: blair
> Date: Mon Oct  8 20:59:07 2007
> New Revision: 27036
>
> Log:
> Prepare the externals_tests.py file for testing relative URLs by
> having externals_test_setup() return a dictionary keyed by the
> directory created by the external with the external URL as the value.
> The users of externals_test_setup() now use the dictionary to get the
> URLs instead of manually constructing the URLs.
>
> This allows externals_test_setup() to set up different URL styles,
> absolute and different relatives.
>
> * subversion/tests/cmdline/externals_tests.py
>   (externals_test_setup):
>     Construct and return a dictionary keyed by the directory name
>       created by the external and the external's URL.
>   (update_receive_new_external),
>   (update_lose_external),
>   (update_change_pristine_external),
>   (update_change_modified_external),
>   (modify_and_update_receive_new_external),
>   (external_with_peg_and_op_revision),
>   (new_style_externals),
>   (old_style_externals_ignore_peg_reg):
>     Instead of using
>       other_repo_url + "some/path"
>     use
>       external_url_for["some/path"]
>     This ends up having all the tests use the same URLs, as there were
>       some inconsistencies, such as "scheme://host/some/path" and
>       "scheme://host/some/path/".
>   (disallow_dot_or_dotdot_directory_reference):
>     Cycle through the URLs from externals_test_setup() instead of a
>       single URL to test.
>
>
> Modified:
>    trunk/subversion/tests/cmdline/externals_tests.py
>
> Modified: trunk/subversion/tests/cmdline/externals_tests.py
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/cmdline/externals_tests.py?pathrev=27036&r1=27035&r2=27036
> ==============================================================================
> --- trunk/subversion/tests/cmdline/externals_tests.py   (original)
> +++ trunk/subversion/tests/cmdline/externals_tests.py   Mon Oct  8 20:59:07 2007
> @@ -61,6 +61,9 @@
>                      exdir_A/G        <scheme>:///<other_repos>/A/D/G
>                      exdir_A/H  -r 3  <scheme>:///<other_repos>/A/D/H
>                      x/y/z/blah       <scheme>:///<other_repos>/A/B
> +
> +  A dictionary is returned keyed by the directory created by the
> +  external whose value is the URL of the external.
>    """
>
>    # The test itself will create a working copy
> @@ -134,10 +137,16 @@
>    # of random stuff, with no svn:externals props set yet.
>    svntest.main.copy_repos(repo_dir, other_repo_dir, 5)
>
> +  # This is the returned dictionary.
> +  external_url_for = { }
> +
> +  external_url_for["A/C/exdir_G"] = other_repo_url + "/A/D/G"
> +  external_url_for["A/C/exdir_H"] = other_repo_url + "/A/D/H"
> +
>    # Set up the externals properties on A/B/ and A/D/.
>    externals_desc = \
> -           "exdir_G       " + other_repo_url + "/A/D/G" + "\n" + \
> -           "exdir_H  -r 1 " + other_repo_url + "/A/D/H" + "\n"
> +           "exdir_G       " + external_url_for["A/C/exdir_G"] + "\n" + \
> +           "exdir_H  -r 1 " + external_url_for["A/C/exdir_H"] + "\n"
>
>    tmp_f = os.tempnam(wc_init_dir, 'tmp')
>    svntest.main.file_append(tmp_f, externals_desc)
> @@ -149,14 +158,19 @@
>
>    os.remove(tmp_f)
>
> +  external_url_for["A/D/exdir_A"]    = other_repo_url + "/A"
> +  external_url_for["A/D/exdir_A/G/"] = other_repo_url + "/A/D/G/"
> +  external_url_for["A/D/exdir_A/H"]  = other_repo_url + "/A/D/H"
> +  external_url_for["A/D/x/y/z/blah"] = other_repo_url + "/A/B"
> +
>    externals_desc = \
> -           "exdir_A           " + other_repo_url + "/A"      + \
> -           "\n"                                              + \
> -           "exdir_A/G/        " + other_repo_url + "/A/D/G/" + \
> -           "\n"                                              + \
> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H"  + \
> -           "\n"                                              + \
> -           "x/y/z/blah        " + other_repo_url + "/A/B"    + \
> +           "exdir_A           " + external_url_for["A/D/exdir_A"]     + \
> +           "\n"                                                       + \
> +           "exdir_A/G/        " + external_url_for["A/D/exdir_A/G/"]  + \
> +           "\n"                                                       + \
> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/H"]   + \
> +           "\n"                                                       + \
> +           "x/y/z/blah        " + external_url_for["A/D/x/y/z/blah"]  + \
>             "\n"
>
>    svntest.main.file_append(tmp_f, externals_desc)
> @@ -181,6 +195,7 @@
>                                          None, None, None, None, None,
>                                          wc_init_dir)
>
> +  return external_url_for
>
>  def change_external(path, new_val):
>    """Change the value of the externals property on PATH to NEW_VAL,
> @@ -274,7 +289,7 @@
>  def update_receive_new_external(sbox):
>    "update to receive a new external module"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    other_wc_dir   = sbox.add_wc_path('other')
> @@ -298,15 +313,15 @@
>    # Add one new external item to the property on A/D.  The new item is
>    # "exdir_E", deliberately added in the middle not at the end.
>    new_externals_desc = \
> -           "exdir_A           " + other_repo_url + "/A"     + \
> +           "exdir_A           " + external_url_for["A/D/exdir_A"]    + \
>             "\n"                                             + \
> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
> +           "exdir_A/G/        " + external_url_for["A/D/exdir_A/G/"] + \
>             "\n"                                             + \
>             "exdir_E           " + other_repo_url + "/A/B/E" + \
>             "\n"                                             + \
> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/H"]  + \
>             "\n"                                             + \
> -           "x/y/z/blah        " + other_repo_url + "/A/B/E" + \
> +           "x/y/z/blah        " + external_url_for["A/D/x/y/z/blah"] + \
>             "\n"
>
>    # Set and commit the property
> @@ -322,7 +337,7 @@
>  def update_lose_external(sbox):
>    "update to lose an external module"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    other_wc_dir   = sbox.add_wc_path('other')
> @@ -360,11 +375,11 @@
>    #    A/D/exdir_A/H/...                     A/D/exdir_A/H/...
>
>    new_externals_desc = \
> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
> +           "exdir_A/G         " + external_url_for["A/D/exdir_A/G/"] + \
>             "\n"                                             + \
> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/H"]  + \
>             "\n"                                             + \
> -           "x/y/z/blah        " + other_repo_url + "/A/B/E" + \
> +           "x/y/z/blah        " + external_url_for["A/D/x/y/z/blah"] + \
>             "\n"
>
>    # Set and commit the property
> @@ -393,7 +408,7 @@
>  def update_change_pristine_external(sbox):
>    "update change to an unmodified external module"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    other_wc_dir   = sbox.add_wc_path('other')
> @@ -418,11 +433,11 @@
>    # URL.  Since no changes were made to the old checked-out external,
>    # we should get a clean replace.
>    new_externals_desc = \
> -           "exdir_A           " + other_repo_url + "/A"     + \
> +           "exdir_A           " + external_url_for["A/D/exdir_A"]    + \
>             "\n"                                             + \
> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
> +           "exdir_A/G         " + external_url_for["A/D/exdir_A/G/"] + \
>             "\n"                                             + \
> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/H"]  + \
>             "\n"                                             + \
>             "x/y/z/blah        " + other_repo_url + "/A/B/F" + \
>             "\n"
> @@ -444,7 +459,7 @@
>  def update_change_modified_external(sbox):
>    "update changes to a modified external module"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    other_wc_dir   = sbox.add_wc_path('other')
> @@ -477,11 +492,11 @@
>    # URL.  There are some local mods under the old checked-out external,
>    # so the old dir should be saved under a new name.
>    new_externals_desc = \
> -           "exdir_A           " + other_repo_url + "/A"     + \
> +           "exdir_A           " + external_url_for["A/D/exdir_A"]    + \
>             "\n"                                             + \
> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
> +           "exdir_A/G/        " + external_url_for["A/D/exdir_A/G/"] + \
>             "\n"                                             + \
> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/H"]  + \
>             "\n"                                             + \
>             "x/y/z/blah        " + other_repo_url + "/A/B/F" + \
>             "\n"
> @@ -593,7 +608,7 @@
>  def modify_and_update_receive_new_external(sbox):
>    "commit and update additional externals"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    repo_dir       = sbox.repo_dir
> @@ -610,9 +625,9 @@
>    # Add one more external item
>    B_path = os.path.join(wc_dir, "A/B")
>    externals_desc = \
> -          "exdir_G       " + other_repo_url + "/A/D/G" + "\n" + \
> -          "exdir_H  -r 1 " + other_repo_url + "/A/D/H" + "\n" + \
> -          "exdir_Z       " + other_repo_url + "/A/D/H" + "\n"
> +          "exdir_G       " + external_url_for["A/D/exdir_A/G/"] + "\n" + \
> +          "exdir_H  -r 1 " + external_url_for["A/D/exdir_A/H"]  + "\n" + \
> +          "exdir_Z       " + external_url_for["A/D/exdir_A/H"]  + "\n"
>
>    tmp_f = os.tempnam()
>    svntest.main.file_append(tmp_f, externals_desc)
> @@ -638,7 +653,8 @@
>
>  def disallow_dot_or_dotdot_directory_reference(sbox):
>    "error if external target dir involves '.' or '..'"
> -  sbox.build()
> +
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>    repo_url       = sbox.repo_url
>
> @@ -656,15 +672,25 @@
>    H_path = os.path.join(wc_dir, 'A', 'D', 'H')
>    C_path = os.path.join(wc_dir, 'A', 'C')
>    F_path = os.path.join(wc_dir, 'A', 'C', 'F')
> -  externals_value_1 = "../foo"         + " " + repo_url + "/A/B/E" + "\n"
> -  externals_value_2 = "foo/bar/../baz" + " " + repo_url + "/A/B/E" + "\n"
> -  externals_value_3 = "foo/.."         + " " + repo_url + "/A/B/E" + "\n"
> -  externals_value_4 = "."              + " " + repo_url + "/A/B/E" + "\n"
> -  externals_value_5 = "./"             + " " + repo_url + "/A/B/E" + "\n"
> -  externals_value_6 = ".."             + " " + repo_url + "/A/B/E" + "\n"
> -  externals_value_7 = "././/.///."     + " " + repo_url + "/A/B/E" + "\n"
> -  externals_value_8 = "/foo"           + " " + repo_url + "/A/B/E" + "\n"
>
> +  external_urls = external_url_for.values()
> +
> +  externals_value_1 = "../foo"         + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
> +  externals_value_2 = "foo/bar/../baz" + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
> +  externals_value_3 = "foo/.."         + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
> +  externals_value_4 = "."              + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
> +  externals_value_5 = "./"             + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
> +  externals_value_6 = ".."             + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
> +  externals_value_7 = "././/.///."     + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
> +  externals_value_8 = "/foo"           + " " + external_urls.pop() + "\n"
> +  if not external_urls: external_urls = external_url_for.values()
>
>    set_externals_for_path_expect_error(B_path, externals_value_1, wc_dir)
>    set_externals_for_path_expect_error(G_path, externals_value_2, wc_dir)
> @@ -775,7 +801,7 @@
>  def external_with_peg_and_op_revision(sbox):
>    "use a peg revision to specify an external module"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    repo_dir       = sbox.repo_dir
> @@ -793,13 +819,14 @@
>    svntest.actions.run_and_verify_svn(None, None, [],
>                                       '--username', svntest.main.wc_author,
>                                       '--password', svntest.main.wc_passwd,
> -                                     'rm', other_repo_url +
> -                                     '/A/D/H', '-m', 'remove original A/D/H')
> +                                     'rm',
> +                                     external_url_for["A/D/exdir_A/H"],
> +                                     '-m', 'remove original A/D/H')
>
>    # Set an external property using peg revision syntax.
>    new_externals_desc = \
> -           other_repo_url + "/A/D/H@4  exdir_A/H \n" + \
> -           other_repo_url + "/A/D/G    exdir_A/G \n"
> +           external_url_for["A/D/exdir_A/H"]  + "@4 exdir_A/H \n" + \
> +           external_url_for["A/D/exdir_A/G/"] + "   exdir_A/G \n"
>
>    # Set and commit the property.
>    change_external(os.path.join(wc_dir, "A/D"), new_externals_desc)
> @@ -824,7 +851,7 @@
>  def new_style_externals(sbox):
>    "check the new '-rN URL PATH' syntax"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    repo_url       = sbox.repo_url
> @@ -839,9 +866,9 @@
>
>    # Set an external property using the new '-rN URL PATH' syntax.
>    new_externals_desc = \
> -           other_repo_url + "/A/D/G exdir_G \n" + \
> -           "-r 1 " + other_repo_url + "/A/D/H exdir_H \n" + \
> -           "-r1 " + other_repo_url + "/A/D/H exdir_I \n"
> +           external_url_for["A/C/exdir_G"] + " exdir_G \n" + \
> +           "-r 1 " + external_url_for["A/C/exdir_H"] + " exdir_H \n" + \
> +           "-r1 "  + external_url_for["A/C/exdir_H"] + " exdir_I \n"
>
>    # Set and commit the property.
>    change_external(os.path.join(wc_dir, "A/C"), new_externals_desc)
> @@ -927,7 +954,7 @@
>  def old_style_externals_ignore_peg_reg(sbox):
>    "old 'PATH URL' format should ignore peg revisions"
>
> -  externals_test_setup(sbox)
> +  external_url_for = externals_test_setup(sbox)
>    wc_dir         = sbox.wc_dir
>
>    repo_url       = sbox.repo_url
> @@ -948,7 +975,7 @@
>
>    # Set an external property using the old 'PATH URL' syntax with
>    # @HEAD in the URL.
> -  ext = "exdir_G " + other_repo_url + "/A/D/G@HEAD \n"
> +  ext = "exdir_G " + external_url_for["A/C/exdir_G"] + "@HEAD\n"
>
>    # Set and commit the property.
>    change_external(os.path.join(wc_dir, "A"), ext)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: svn-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: svn-help@subversion.tigris.org
>
>


-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: svn commit: r27036 - trunk/subversion/tests/cmdline

Posted by Lieven Govaerts <sv...@mobsol.be>.
Blair Zajac wrote:
> That test works for me.
>
> Which OS and scheme method are you using?
It was a failure on Mac over ra_neon & ra_serf. The issue was fixed in
r27173.

Lieven

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: svn commit: r27036 - trunk/subversion/tests/cmdline

Posted by Blair Zajac <bl...@orcaware.com>.
That test works for me.

Which OS and scheme method are you using?

Blair

On Oct 9, 2007, at 6:17 AM, David Glasser wrote:

> Blair, this rev breaks test 8 for me:
>
> dhcp-172-19-36-49:~/Projects/Subversion/svn-trunk/subversion/tests/ 
> cmdline
> glasser$ ./externals_tests.py 8
> UNEXPECTED EXCEPTION:
> Traceback (most recent call last):
>   File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/ 
> tests/cmdline/svntest/main.py",
> line 930, in run
>     rc = apply(self.pred.run, (), kw)
>   File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/ 
> tests/cmdline/svntest/testcase.py",
> line 121, in run
>     return self.func(sandbox)
>   File "./externals_tests.py", line 684, in
> disallow_dot_or_dotdot_directory_reference
>     set_externals_for_path_expect_error(B_path, externals_value_1,  
> wc_dir)
>   File "./externals_tests.py", line 653, in  
> set_externals_for_path_expect_error
>     svntest.main.file_append(tmp_f, val)
>   File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/ 
> tests/cmdline/svntest/main.py",
> line 478, in file_append
>     file_write(path, new_text, 'a')  # open in (a)ppend mode
>   File "/Users/glasser/Projects/Subversion/svn-trunk/subversion/ 
> tests/cmdline/svntest/main.py",
> line 489, in file_write
>     fp = open(path, mode)
> IOError: [Errno 2] No such file or directory:
> 'svn-test-work/working_copies/externals_tests-8/tmpAsfgXu'
> FAIL:  externals_tests.py 8: error if external target dir involves  
> '.' or '..'
>
> --dave
>
> On 10/8/07, blair@tigris.org <bl...@tigris.org> wrote:
>> Author: blair
>> Date: Mon Oct  8 20:59:07 2007
>> New Revision: 27036
>>
>> Log:
>> Prepare the externals_tests.py file for testing relative URLs by
>> having externals_test_setup() return a dictionary keyed by the
>> directory created by the external with the external URL as the value.
>> The users of externals_test_setup() now use the dictionary to get the
>> URLs instead of manually constructing the URLs.
>>
>> This allows externals_test_setup() to set up different URL styles,
>> absolute and different relatives.
>>
>> * subversion/tests/cmdline/externals_tests.py
>>   (externals_test_setup):
>>     Construct and return a dictionary keyed by the directory name
>>       created by the external and the external's URL.
>>   (update_receive_new_external),
>>   (update_lose_external),
>>   (update_change_pristine_external),
>>   (update_change_modified_external),
>>   (modify_and_update_receive_new_external),
>>   (external_with_peg_and_op_revision),
>>   (new_style_externals),
>>   (old_style_externals_ignore_peg_reg):
>>     Instead of using
>>       other_repo_url + "some/path"
>>     use
>>       external_url_for["some/path"]
>>     This ends up having all the tests use the same URLs, as there  
>> were
>>       some inconsistencies, such as "scheme://host/some/path" and
>>       "scheme://host/some/path/".
>>   (disallow_dot_or_dotdot_directory_reference):
>>     Cycle through the URLs from externals_test_setup() instead of a
>>       single URL to test.
>>
>>
>> Modified:
>>    trunk/subversion/tests/cmdline/externals_tests.py
>>
>> Modified: trunk/subversion/tests/cmdline/externals_tests.py
>> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/tests/ 
>> cmdline/externals_tests.py?pathrev=27036&r1=27035&r2=27036
>> ===================================================================== 
>> =========
>> --- trunk/subversion/tests/cmdline/externals_tests.py   (original)
>> +++ trunk/subversion/tests/cmdline/externals_tests.py   Mon Oct  8  
>> 20:59:07 2007
>> @@ -61,6 +61,9 @@
>>                      exdir_A/G        <scheme>:///<other_repos>/A/D/G
>>                      exdir_A/H  -r 3  <scheme>:///<other_repos>/A/D/H
>>                      x/y/z/blah       <scheme>:///<other_repos>/A/B
>> +
>> +  A dictionary is returned keyed by the directory created by the
>> +  external whose value is the URL of the external.
>>    """
>>
>>    # The test itself will create a working copy
>> @@ -134,10 +137,16 @@
>>    # of random stuff, with no svn:externals props set yet.
>>    svntest.main.copy_repos(repo_dir, other_repo_dir, 5)
>>
>> +  # This is the returned dictionary.
>> +  external_url_for = { }
>> +
>> +  external_url_for["A/C/exdir_G"] = other_repo_url + "/A/D/G"
>> +  external_url_for["A/C/exdir_H"] = other_repo_url + "/A/D/H"
>> +
>>    # Set up the externals properties on A/B/ and A/D/.
>>    externals_desc = \
>> -           "exdir_G       " + other_repo_url + "/A/D/G" + "\n" + \
>> -           "exdir_H  -r 1 " + other_repo_url + "/A/D/H" + "\n"
>> +           "exdir_G       " + external_url_for["A/C/exdir_G"] +  
>> "\n" + \
>> +           "exdir_H  -r 1 " + external_url_for["A/C/exdir_H"] + "\n"
>>
>>    tmp_f = os.tempnam(wc_init_dir, 'tmp')
>>    svntest.main.file_append(tmp_f, externals_desc)
>> @@ -149,14 +158,19 @@
>>
>>    os.remove(tmp_f)
>>
>> +  external_url_for["A/D/exdir_A"]    = other_repo_url + "/A"
>> +  external_url_for["A/D/exdir_A/G/"] = other_repo_url + "/A/D/G/"
>> +  external_url_for["A/D/exdir_A/H"]  = other_repo_url + "/A/D/H"
>> +  external_url_for["A/D/x/y/z/blah"] = other_repo_url + "/A/B"
>> +
>>    externals_desc = \
>> -           "exdir_A           " + other_repo_url + "/A"      + \
>> -           "\n"                                              + \
>> -           "exdir_A/G/        " + other_repo_url + "/A/D/G/" + \
>> -           "\n"                                              + \
>> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H"  + \
>> -           "\n"                                              + \
>> -           "x/y/z/blah        " + other_repo_url + "/A/B"    + \
>> +           "exdir_A           " + external_url_for["A/D/ 
>> exdir_A"]     + \
>> +            
>> "\n"                                                       + \
>> +           "exdir_A/G/        " + external_url_for["A/D/exdir_A/ 
>> G/"]  + \
>> +            
>> "\n"                                                       + \
>> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/ 
>> H"]   + \
>> +            
>> "\n"                                                       + \
>> +           "x/y/z/blah        " + external_url_for["A/D/x/y/z/ 
>> blah"]  + \
>>             "\n"
>>
>>    svntest.main.file_append(tmp_f, externals_desc)
>> @@ -181,6 +195,7 @@
>>                                          None, None, None, None,  
>> None,
>>                                          wc_init_dir)
>>
>> +  return external_url_for
>>
>>  def change_external(path, new_val):
>>    """Change the value of the externals property on PATH to NEW_VAL,
>> @@ -274,7 +289,7 @@
>>  def update_receive_new_external(sbox):
>>    "update to receive a new external module"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    other_wc_dir   = sbox.add_wc_path('other')
>> @@ -298,15 +313,15 @@
>>    # Add one new external item to the property on A/D.  The new  
>> item is
>>    # "exdir_E", deliberately added in the middle not at the end.
>>    new_externals_desc = \
>> -           "exdir_A           " + other_repo_url + "/A"     + \
>> +           "exdir_A           " + external_url_for["A/D/ 
>> exdir_A"]    + \
>>             "\n"                                             + \
>> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
>> +           "exdir_A/G/        " + external_url_for["A/D/exdir_A/ 
>> G/"] + \
>>             "\n"                                             + \
>>             "exdir_E           " + other_repo_url + "/A/B/E" + \
>>             "\n"                                             + \
>> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
>> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/ 
>> H"]  + \
>>             "\n"                                             + \
>> -           "x/y/z/blah        " + other_repo_url + "/A/B/E" + \
>> +           "x/y/z/blah        " + external_url_for["A/D/x/y/z/ 
>> blah"] + \
>>             "\n"
>>
>>    # Set and commit the property
>> @@ -322,7 +337,7 @@
>>  def update_lose_external(sbox):
>>    "update to lose an external module"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    other_wc_dir   = sbox.add_wc_path('other')
>> @@ -360,11 +375,11 @@
>>    #    A/D/exdir_A/H/...                     A/D/exdir_A/H/...
>>
>>    new_externals_desc = \
>> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
>> +           "exdir_A/G         " + external_url_for["A/D/exdir_A/ 
>> G/"] + \
>>             "\n"                                             + \
>> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
>> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/ 
>> H"]  + \
>>             "\n"                                             + \
>> -           "x/y/z/blah        " + other_repo_url + "/A/B/E" + \
>> +           "x/y/z/blah        " + external_url_for["A/D/x/y/z/ 
>> blah"] + \
>>             "\n"
>>
>>    # Set and commit the property
>> @@ -393,7 +408,7 @@
>>  def update_change_pristine_external(sbox):
>>    "update change to an unmodified external module"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    other_wc_dir   = sbox.add_wc_path('other')
>> @@ -418,11 +433,11 @@
>>    # URL.  Since no changes were made to the old checked-out  
>> external,
>>    # we should get a clean replace.
>>    new_externals_desc = \
>> -           "exdir_A           " + other_repo_url + "/A"     + \
>> +           "exdir_A           " + external_url_for["A/D/ 
>> exdir_A"]    + \
>>             "\n"                                             + \
>> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
>> +           "exdir_A/G         " + external_url_for["A/D/exdir_A/ 
>> G/"] + \
>>             "\n"                                             + \
>> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
>> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/ 
>> H"]  + \
>>             "\n"                                             + \
>>             "x/y/z/blah        " + other_repo_url + "/A/B/F" + \
>>             "\n"
>> @@ -444,7 +459,7 @@
>>  def update_change_modified_external(sbox):
>>    "update changes to a modified external module"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    other_wc_dir   = sbox.add_wc_path('other')
>> @@ -477,11 +492,11 @@
>>    # URL.  There are some local mods under the old checked-out  
>> external,
>>    # so the old dir should be saved under a new name.
>>    new_externals_desc = \
>> -           "exdir_A           " + other_repo_url + "/A"     + \
>> +           "exdir_A           " + external_url_for["A/D/ 
>> exdir_A"]    + \
>>             "\n"                                             + \
>> -           "exdir_A/G         " + other_repo_url + "/A/D/G" + \
>> +           "exdir_A/G/        " + external_url_for["A/D/exdir_A/ 
>> G/"] + \
>>             "\n"                                             + \
>> -           "exdir_A/H   -r 1  " + other_repo_url + "/A/D/H" + \
>> +           "exdir_A/H   -r 1  " + external_url_for["A/D/exdir_A/ 
>> H"]  + \
>>             "\n"                                             + \
>>             "x/y/z/blah        " + other_repo_url + "/A/B/F" + \
>>             "\n"
>> @@ -593,7 +608,7 @@
>>  def modify_and_update_receive_new_external(sbox):
>>    "commit and update additional externals"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    repo_dir       = sbox.repo_dir
>> @@ -610,9 +625,9 @@
>>    # Add one more external item
>>    B_path = os.path.join(wc_dir, "A/B")
>>    externals_desc = \
>> -          "exdir_G       " + other_repo_url + "/A/D/G" + "\n" + \
>> -          "exdir_H  -r 1 " + other_repo_url + "/A/D/H" + "\n" + \
>> -          "exdir_Z       " + other_repo_url + "/A/D/H" + "\n"
>> +          "exdir_G       " + external_url_for["A/D/exdir_A/G/"] +  
>> "\n" + \
>> +          "exdir_H  -r 1 " + external_url_for["A/D/exdir_A/H"]  +  
>> "\n" + \
>> +          "exdir_Z       " + external_url_for["A/D/exdir_A/H"]  +  
>> "\n"
>>
>>    tmp_f = os.tempnam()
>>    svntest.main.file_append(tmp_f, externals_desc)
>> @@ -638,7 +653,8 @@
>>
>>  def disallow_dot_or_dotdot_directory_reference(sbox):
>>    "error if external target dir involves '.' or '..'"
>> -  sbox.build()
>> +
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>    repo_url       = sbox.repo_url
>>
>> @@ -656,15 +672,25 @@
>>    H_path = os.path.join(wc_dir, 'A', 'D', 'H')
>>    C_path = os.path.join(wc_dir, 'A', 'C')
>>    F_path = os.path.join(wc_dir, 'A', 'C', 'F')
>> -  externals_value_1 = "../foo"         + " " + repo_url + "/A/B/ 
>> E" + "\n"
>> -  externals_value_2 = "foo/bar/../baz" + " " + repo_url + "/A/B/ 
>> E" + "\n"
>> -  externals_value_3 = "foo/.."         + " " + repo_url + "/A/B/ 
>> E" + "\n"
>> -  externals_value_4 = "."              + " " + repo_url + "/A/B/ 
>> E" + "\n"
>> -  externals_value_5 = "./"             + " " + repo_url + "/A/B/ 
>> E" + "\n"
>> -  externals_value_6 = ".."             + " " + repo_url + "/A/B/ 
>> E" + "\n"
>> -  externals_value_7 = "././/.///."     + " " + repo_url + "/A/B/ 
>> E" + "\n"
>> -  externals_value_8 = "/foo"           + " " + repo_url + "/A/B/ 
>> E" + "\n"
>>
>> +  external_urls = external_url_for.values()
>> +
>> +  externals_value_1 = "../foo"         + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>> +  externals_value_2 = "foo/bar/../baz" + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>> +  externals_value_3 = "foo/.."         + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>> +  externals_value_4 = "."              + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>> +  externals_value_5 = "./"             + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>> +  externals_value_6 = ".."             + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>> +  externals_value_7 = "././/.///."     + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>> +  externals_value_8 = "/foo"           + " " + external_urls.pop 
>> () + "\n"
>> +  if not external_urls: external_urls = external_url_for.values()
>>
>>    set_externals_for_path_expect_error(B_path, externals_value_1,  
>> wc_dir)
>>    set_externals_for_path_expect_error(G_path, externals_value_2,  
>> wc_dir)
>> @@ -775,7 +801,7 @@
>>  def external_with_peg_and_op_revision(sbox):
>>    "use a peg revision to specify an external module"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    repo_dir       = sbox.repo_dir
>> @@ -793,13 +819,14 @@
>>    svntest.actions.run_and_verify_svn(None, None, [],
>>                                       '--username',  
>> svntest.main.wc_author,
>>                                       '--password',  
>> svntest.main.wc_passwd,
>> -                                     'rm', other_repo_url +
>> -                                     '/A/D/H', '-m', 'remove  
>> original A/D/H')
>> +                                     'rm',
>> +                                     external_url_for["A/D/ 
>> exdir_A/H"],
>> +                                     '-m', 'remove original A/D/H')
>>
>>    # Set an external property using peg revision syntax.
>>    new_externals_desc = \
>> -           other_repo_url + "/A/D/H@4  exdir_A/H \n" + \
>> -           other_repo_url + "/A/D/G    exdir_A/G \n"
>> +           external_url_for["A/D/exdir_A/H"]  + "@4 exdir_A/H \n"  
>> + \
>> +           external_url_for["A/D/exdir_A/G/"] + "   exdir_A/G \n"
>>
>>    # Set and commit the property.
>>    change_external(os.path.join(wc_dir, "A/D"), new_externals_desc)
>> @@ -824,7 +851,7 @@
>>  def new_style_externals(sbox):
>>    "check the new '-rN URL PATH' syntax"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    repo_url       = sbox.repo_url
>> @@ -839,9 +866,9 @@
>>
>>    # Set an external property using the new '-rN URL PATH' syntax.
>>    new_externals_desc = \
>> -           other_repo_url + "/A/D/G exdir_G \n" + \
>> -           "-r 1 " + other_repo_url + "/A/D/H exdir_H \n" + \
>> -           "-r1 " + other_repo_url + "/A/D/H exdir_I \n"
>> +           external_url_for["A/C/exdir_G"] + " exdir_G \n" + \
>> +           "-r 1 " + external_url_for["A/C/exdir_H"] + " exdir_H  
>> \n" + \
>> +           "-r1 "  + external_url_for["A/C/exdir_H"] + " exdir_I \n"
>>
>>    # Set and commit the property.
>>    change_external(os.path.join(wc_dir, "A/C"), new_externals_desc)
>> @@ -927,7 +954,7 @@
>>  def old_style_externals_ignore_peg_reg(sbox):
>>    "old 'PATH URL' format should ignore peg revisions"
>>
>> -  externals_test_setup(sbox)
>> +  external_url_for = externals_test_setup(sbox)
>>    wc_dir         = sbox.wc_dir
>>
>>    repo_url       = sbox.repo_url
>> @@ -948,7 +975,7 @@
>>
>>    # Set an external property using the old 'PATH URL' syntax with
>>    # @HEAD in the URL.
>> -  ext = "exdir_G " + other_repo_url + "/A/D/G@HEAD \n"
>> +  ext = "exdir_G " + external_url_for["A/C/exdir_G"] + "@HEAD\n"
>>
>>    # Set and commit the property.
>>    change_external(os.path.join(wc_dir, "A"), ext)
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: svn-unsubscribe@subversion.tigris.org
>> For additional commands, e-mail: svn-help@subversion.tigris.org
>>
>>
>
>
> -- 
> David Glasser | glasser@davidglasser.net | http:// 
> www.davidglasser.net/
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org