With this patch Windows now passes all but two tests. It is mostly
removing tests code that worked around Subversion always returning /'s
in paths...but that is changing now and tests were starting to break.
The first failure is a log test, where if you "svn commit -F
path\to\versioned\file" you don't get the warning. It only recognizes
the versioned file if forward slashes are used. This is a real buglet,
I think...as Brane said, probably a missing call to
svn_path_internal_style somewhere.
The second is the been-failing-for-me-for-months commit-22 test which
seems to fail somewhat sporadically -- it does not fail if I run it solo
or with all the commit tests but no others. It always functions
correctly, but expected output is an absolute path (sometimes?) where it
should not be, I think. I'm not sure how to pursue this one...and this
patch doesn't really affect it one way or the other. Any suggestions?
I started out changing the greek-status-tree on Windows, but many many
tests check for hardcoded 'A/B/G' paths and only one merge test actually
used a working copy path, so I changed the merge test to match the
others and left the greek tree alone.
Also, diffs still use /'s even in Windows, so I had to tweak diff-tests
and a svnlook test -- when/if diffs switch to using native separators,
it is trivial to remove that code.
Any comments?
DJ
Index: subversion/tests/clients/cmdline/diff_tests.py
===================================================================
--- subversion/tests/clients/cmdline/diff_tests.py (revision 7093)
+++ subversion/tests/clients/cmdline/diff_tests.py (working copy)
@@ -38,6 +38,9 @@
def check_diff_output(diff_output, name, diff_type):
"check diff output"
+# On Windows, diffs still display / rather than \ in paths
+ if svntest.main.windows == 1:
+ name = name.replace('\\', '/')
i_re = re.compile('^Index:')
d_re = re.compile('^Index: (\\./)?' + name)
p_re = re.compile('^--- (\\./)?' + name)
Index: subversion/tests/clients/cmdline/copy_tests.py
===================================================================
--- subversion/tests/clients/cmdline/copy_tests.py (revision 7093)
+++ subversion/tests/clients/cmdline/copy_tests.py (working copy)
@@ -400,8 +400,7 @@
# Use 'svn cp -r 1 URL URL' to resurrect the deleted directory, where
# the two URLs are identical. This used to trigger a failure.
- url = svntest.main.test_area_url + '/' \
- + svntest.main.current_repo_dir + '/A/D/G'
+ url = svntest.main.current_repo_url + '/A/D/G'
svntest.actions.run_and_verify_svn(None, None, [], 'cp',
'--username', svntest.main.wc_author,
'--password', svntest.main.wc_passwd,
@@ -604,8 +603,7 @@
# REPOS to WC copy of file with properties
rho_url_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho_url')
- rho_url = svntest.main.test_area_url + '/' \
- + svntest.main.current_repo_dir + '/A/D/G/rho'
+ rho_url = svntest.main.current_repo_url + '/A/D/G/rho'
svntest.actions.run_and_verify_svn(None, None, [],
'copy', rho_url, rho_url_path)
@@ -930,7 +928,7 @@
sbox.build()
- root = svntest.main.test_area_url + '/' + svntest.main.current_repo_dir
+ root = svntest.main.current_repo_url
mu = root + '/A/mu'
svntest.actions.run_and_verify_svn(None, None, [], 'cp',
Index: subversion/tests/clients/cmdline/basic_tests.py
===================================================================
--- subversion/tests/clients/cmdline/basic_tests.py (revision 7093)
+++ subversion/tests/clients/cmdline/basic_tests.py (working copy)
@@ -1079,8 +1079,7 @@
wc_dir)
# Now try to checkout revision 1 of A/D.
- url = svntest.main.test_area_url + '/' + svntest.main.current_repo_dir + \
- '/A/D'
+ url = svntest.main.current_repo_url + '/A/D'
wc2 = os.path.join (sbox.wc_dir, 'new_D')
svntest.actions.run_and_verify_svn("error checking out r1 of A/D",
None, [], 'co', '-r', '1',
@@ -1164,7 +1163,7 @@
svntest.main.file_append(new_path, "some text")
# import new files into repository
- url = os.path.join(svntest.main.current_repo_url, "dirA/dirB/new_file")
+ url = svntest.main.current_repo_url + "/dirA/dirB/new_file"
output, errput = svntest.actions.run_and_verify_svn(
'Cannot change node kind', None, [], 'import',
'--username', svntest.main.wc_author,
@@ -1503,7 +1502,7 @@
open(foo_o_path, 'w')
# import new dir into repository
- url = os.path.join(svntest.main.current_repo_url, 'dir')
+ url = svntest.main.current_repo_url + '/dir'
output, errput = svntest.actions.run_and_verify_svn(
None, None, [], 'import',
Index: subversion/tests/clients/cmdline/trans_tests.py
===================================================================
--- subversion/tests/clients/cmdline/trans_tests.py (revision 7093)
+++ subversion/tests/clients/cmdline/trans_tests.py (working copy)
@@ -29,19 +29,6 @@
Item = svntest.wc.StateItem
-# FIXME: Someday we'll create expected output with the right kind
-# of path separator; but the client doesn't consistently
-# use local style in output yet.
-def _tweak_paths(list):
- if os.sep != "/":
- tweaked_list = []
- for line in list:
- tweaked_list.append(string.replace(line, os.sep, "/"))
- return tweaked_list
- else:
- return list
-
-
######################################################################
# THINGS TO TEST
#
@@ -439,8 +426,6 @@
expected_output = ["Sending " + foo_path + "\n",
"Transmitting file data .\n",
"Committed revision 3.\n"]
- # FIXME: see commend at _tweak_paths
- expected_output = _tweak_paths(expected_output)
svntest.actions.run_and_verify_svn(None, expected_output, [],
'ci', '-m', 'log msg', foo_path)
Index: subversion/tests/clients/cmdline/svnlook_tests.py
===================================================================
--- subversion/tests/clients/cmdline/svnlook_tests.py (revision 7093)
+++ subversion/tests/clients/cmdline/svnlook_tests.py (working copy)
@@ -164,6 +164,9 @@
if len(output) != len(expected_output):
raise svntest.Failure
+ # On Windows, diff's still output / rather than \ in paths
+ if svntest.main.windows == 1:
+ iota_path = iota_path.replace('\\', '/')
# Replace all occurences of wc_dir/iota with iota in svn diff output
reiota = re.compile(iota_path)
Index: subversion/tests/clients/cmdline/schedule_tests.py
===================================================================
--- subversion/tests/clients/cmdline/schedule_tests.py (revision 7093)
+++ subversion/tests/clients/cmdline/schedule_tests.py (working copy)
@@ -30,19 +30,6 @@
Item = svntest.wc.StateItem
-# FIXME: Someday we'll create expected output with the right kind
-# of path separator; but the client doesn't consistently
-# use local style in output yet.
-def _tweak_paths(list):
- if os.sep != "/":
- tweaked_list = []
- for line in list:
- tweaked_list.append(string.replace(line, os.sep, "/"))
- return tweaked_list
- else:
- return list
-
-
######################################################################
# Tests
#
@@ -281,7 +268,6 @@
'--recursive', wc_dir)
### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see comment at _tweak_paths
output.sort()
expected_output.sort()
if output != expected_output:
@@ -307,7 +293,6 @@
'--recursive', wc_dir)
### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
output.sort()
expected_output.sort()
if output != expected_output:
@@ -332,7 +317,6 @@
'revert',
'--recursive', wc_dir)
### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
output.sort()
expected_output.sort()
if output != expected_output:
@@ -363,7 +347,6 @@
'--recursive', wc_dir)
### do we really need to sort these?
- expected_output = _tweak_paths(expected_output)
output.sort()
expected_output.sort()
if output != expected_output:
@@ -390,7 +373,6 @@
'revert',
'--recursive', wc_dir)
### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
output.sort()
expected_output.sort()
if output != expected_output:
@@ -425,7 +407,6 @@
'revert',
'--recursive', wc_dir)
### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
output.sort()
expected_output.sort()
if output != expected_output:
Index: subversion/tests/clients/cmdline/svntest/actions.py
===================================================================
--- subversion/tests/clients/cmdline/svntest/actions.py (revision 7093)
+++ subversion/tests/clients/cmdline/svntest/actions.py (working copy)
@@ -76,6 +76,8 @@
# build a URL for doing an import.
url = main.test_area_url + '/' + main.pristine_dir
+ if main.windows == 1:
+ url = url.replace('\\', '/')
# import the greek tree, using l:foo/p:bar
### todo: svn should not be prompting for auth info when using
Index: subversion/tests/clients/cmdline/svntest/main.py
===================================================================
--- subversion/tests/clients/cmdline/svntest/main.py (revision 7093)
+++ subversion/tests/clients/cmdline/svntest/main.py (working copy)
@@ -81,32 +81,6 @@
windows = 1
file_schema_prefix = 'file:///'
_exe = '.exe'
-
- # svn on windows doesn't support backslashes in path names
- _os_path_abspath_orig = os.path.abspath
- def _os_path_abspath(arg):
- path = _os_path_abspath_orig(arg)
- return path.replace('\\', '/')
- os.path.abspath = _os_path_abspath
-
- _os_path_join_orig = os.path.join
- def _os_path_join(*args):
- path = apply(_os_path_join_orig, args)
- return path.replace('\\', '/')
- os.path.join = _os_path_join
-
- _os_path_normpath_orig = os.path.normpath
- def _os_path_normpath(arg):
- path = _os_path_normpath_orig(arg)
- return path.replace('\\', '/')
- os.path.normpath = _os_path_normpath
-
- _os_path_dirname_orig = os.path.dirname
- def _os_path_dirname(arg):
- path = _os_path_dirname_orig(arg)
- return path.replace('\\', '/')
- os.path.dirname = _os_path_dirname
-
else:
windows = 0
file_schema_prefix = 'file://'
@@ -131,7 +105,10 @@
# Global URL to testing area. Default to ra_local, current working dir.
test_area_url = file_schema_prefix + os.path.abspath(os.getcwd())
+if windows == 1:
+ test_area_url = test_area_url.replace('\\', '/')
+
# Where we want all the repositories and working copies to live.
# Each test will have its own!
general_repo_dir = "repositories"
@@ -382,6 +359,8 @@
global current_repo_dir, current_repo_url
current_repo_dir = repo_dir
current_repo_url = test_area_url + '/' + repo_dir
+ if windows == 1:
+ current_repo_url = current_repo_url.replace('\\', '/')
######################################################################
@@ -395,6 +374,8 @@
self.wc_dir = os.path.join(general_wc_dir, self.name)
self.repo_dir = os.path.join(general_repo_dir, self.name)
self.repo_url = test_area_url + '/' + self.repo_dir
+ if windows == 1:
+ self.repo_url = self.repo_url.replace('\\', '/')
self.test_paths = [self.wc_dir, self.repo_dir]
def build(self):
Index: subversion/tests/clients/cmdline/merge_tests.py
===================================================================
--- subversion/tests/clients/cmdline/merge_tests.py (revision 7093)
+++ subversion/tests/clients/cmdline/merge_tests.py (working copy)
@@ -913,7 +913,7 @@
expected_output = wc.State(wc_dir, { rho_rel_path : Item(verb='Sending'), })
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.tweak(wc_rev=1)
- expected_status.tweak(rho_rel_path, wc_rev=2)
+ expected_status.tweak('A/D/G/rho', wc_rev=2)
svntest.actions.run_and_verify_commit (wc_dir,
expected_output,
expected_status,
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Sep 19 20:11:32 2003