changeset 132:3a9d6cd18332

test_fetch_renames: test file and directory case changes
author Patrick Mezard <pmezard@gmail.com>
date Wed, 10 Dec 2008 11:03:23 -0600
parents 4d42dbbb5127
children 2242dd1163c6
files tests/fixtures/filecase.sh tests/fixtures/filecase.svndump tests/test_fetch_renames.py
diffstat 3 files changed, 326 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100755
--- /dev/null
+++ b/tests/fixtures/filecase.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# Generate filecase.svndump
+# WARNING: this script must be run on a case-sensitive file system
+#
+
+mkdir temp
+cd temp
+
+mkdir project-orig
+cd project-orig
+mkdir trunk
+cd ..
+
+svnadmin create testrepo
+svnurl=file://`pwd`/testrepo
+svn import project-orig $svnurl -m "init project"
+
+svn co $svnurl project
+cd project/trunk
+# Test files and directories differing in case only
+echo a > a
+echo A > A
+echo b > b
+mkdir d
+echo a > d/a
+mkdir D
+echo a > D/a
+mkdir e
+echo a > e/a
+mkdir f
+echo a > f/a
+echo F > F
+svn add a A b d D e f F
+svn ci -m 'add files'
+# Rename files and directories, changing only their case
+svn mv b B
+svn mv d/a d/A
+svn mv e E
+svn ci -m 'change case'
+cd ../..
+
+svnadmin dump testrepo > ../filecase.svndump
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/filecase.svndump
@@ -0,0 +1,268 @@
+SVN-fs-dump-format-version: 2
+
+UUID: 43703c40-3731-4eff-a4bd-16f771fbf860
+
+Revision-number: 0
+Prop-content-length: 56
+Content-length: 56
+
+K 8
+svn:date
+V 27
+2008-12-07T13:00:57.919880Z
+PROPS-END
+
+Revision-number: 1
+Prop-content-length: 114
+Content-length: 114
+
+K 7
+svn:log
+V 12
+init project
+K 10
+svn:author
+V 7
+pmezard
+K 8
+svn:date
+V 27
+2008-12-07T13:00:58.039069Z
+PROPS-END
+
+Node-path: trunk
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Revision-number: 2
+Prop-content-length: 110
+Content-length: 110
+
+K 7
+svn:log
+V 9
+add files
+K 10
+svn:author
+V 7
+pmezard
+K 8
+svn:date
+V 27
+2008-12-07T13:00:59.209541Z
+PROPS-END
+
+Node-path: trunk/A
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: bf072e9119077b4e76437a93986787ef
+Content-length: 12
+
+PROPS-END
+A
+
+
+Node-path: trunk/D
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: trunk/D/a
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3
+Content-length: 12
+
+PROPS-END
+a
+
+
+Node-path: trunk/F
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: d2a33790e5bf28b33cdbf61722a06989
+Content-length: 12
+
+PROPS-END
+F
+
+
+Node-path: trunk/a
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3
+Content-length: 12
+
+PROPS-END
+a
+
+
+Node-path: trunk/b
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 3b5d5c3712955042212316173ccf37be
+Content-length: 12
+
+PROPS-END
+b
+
+
+Node-path: trunk/d
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: trunk/d/a
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3
+Content-length: 12
+
+PROPS-END
+a
+
+
+Node-path: trunk/e
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: trunk/e/a
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3
+Content-length: 12
+
+PROPS-END
+a
+
+
+Node-path: trunk/f
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: trunk/f/a
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3
+Content-length: 12
+
+PROPS-END
+a
+
+
+Revision-number: 3
+Prop-content-length: 113
+Content-length: 113
+
+K 7
+svn:log
+V 11
+change case
+K 10
+svn:author
+V 7
+pmezard
+K 8
+svn:date
+V 27
+2008-12-07T13:01:03.159028Z
+PROPS-END
+
+Node-path: trunk/B
+Node-kind: file
+Node-action: add
+Node-copyfrom-rev: 2
+Node-copyfrom-path: trunk/b
+Text-copy-source-md5: 3b5d5c3712955042212316173ccf37be
+Prop-content-length: 34
+Content-length: 34
+
+K 13
+svn:mergeinfo
+V 0
+
+PROPS-END
+
+
+Node-path: trunk/E
+Node-kind: dir
+Node-action: add
+Node-copyfrom-rev: 2
+Node-copyfrom-path: trunk/e
+Prop-content-length: 34
+Content-length: 34
+
+K 13
+svn:mergeinfo
+V 0
+
+PROPS-END
+
+
+Node-path: trunk/d/A
+Node-kind: file
+Node-action: add
+Node-copyfrom-rev: 2
+Node-copyfrom-path: trunk/d/a
+Text-copy-source-md5: 60b725f10c9c85c70d97880dfe8191b3
+Prop-content-length: 34
+Content-length: 34
+
+K 13
+svn:mergeinfo
+V 0
+
+PROPS-END
+
+
+Node-path: trunk/d/a
+Node-action: delete
+
+
+Node-path: trunk/b
+Node-action: delete
+
+
+Node-path: trunk/e
+Node-action: delete
+
+
--- a/tests/test_fetch_renames.py
+++ b/tests/test_fetch_renames.py
@@ -61,6 +61,21 @@ class TestFetchRenames(test_util.TestBas
     def test_rename_stupid(self):
         self._test_rename(True)
 
+    def _test_case(self, stupid):
+        repo = self._load_fixture_and_fetch('filecase.svndump', stupid)
+        files = {
+            0: ['A', 'a', 'e/a', 'b', 'd/a', 'D/a', 'f/a', 'F'],
+            1: ['A', 'a', 'E/a', 'B', 'd/A', 'D/a', 'f/a', 'F'],
+            }
+        for rev in repo:
+            self.assertEqual(sorted(files[rev]), sorted(repo[rev].manifest()))
+
+    def test_case(self):
+        self._test_case(False)
+
+    def test_case_stupid(self):
+        self._test_case(True)
+
 def suite():
     all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchRenames),
           ]