changeset 126:24a64fb0e74b

run.py: register and develop test_fetch_symlinks
author Patrick Mezard <pmezard@gmail.com>
date Wed, 10 Dec 2008 11:03:19 -0600
parents c35f59aa200e
children 7e45bcf52b64
files tests/fixtures/symlinks.sh tests/fixtures/symlinks.svndump tests/run.py tests/test_fetch_symlinks.py
diffstat 4 files changed, 75 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/tests/fixtures/symlinks.sh
+++ b/tests/fixtures/symlinks.sh
@@ -35,6 +35,12 @@ ln -s b linkaa
 rm d2/linka
 ln -s b d2/linka
 svn ci -m "update symlinks"
+# Replace a symlink with a regular file
+rm linkaa
+echo data > linkaa
+svn propdel svn:special linkaa
+svn rm d2/linka
+svn ci -m "undo link"
 cd ../..
 
 svnadmin dump testrepo > ../symlinks.svndump
--- a/tests/fixtures/symlinks.svndump
+++ b/tests/fixtures/symlinks.svndump
@@ -1,6 +1,6 @@
 SVN-fs-dump-format-version: 2
 
-UUID: 0155d33a-8628-44e5-a968-540cca8db82a
+UUID: f4b30fa8-841e-4d12-8994-eb41ecdeab2e
 
 Revision-number: 0
 Prop-content-length: 56
@@ -9,7 +9,7 @@ Content-length: 56
 K 8
 svn:date
 V 27
-2008-11-16T15:00:25.793049Z
+2008-12-07T12:10:46.975375Z
 PROPS-END
 
 Revision-number: 1
@@ -27,7 +27,7 @@ pmezard
 K 8
 svn:date
 V 27
-2008-11-16T15:00:25.873999Z
+2008-12-07T12:10:47.047283Z
 PROPS-END
 
 Node-path: branches
@@ -63,7 +63,7 @@ pmezard
 K 8
 svn:date
 V 27
-2008-11-16T15:00:26.214702Z
+2008-12-07T12:10:48.218632Z
 PROPS-END
 
 Node-path: trunk/a
@@ -132,7 +132,7 @@ pmezard
 K 8
 svn:date
 V 27
-2008-11-16T15:00:29.163300Z
+2008-12-07T12:10:51.153329Z
 PROPS-END
 
 Node-path: trunk/d2
@@ -193,7 +193,7 @@ pmezard
 K 8
 svn:date
 V 27
-2008-11-16T15:00:30.171883Z
+2008-12-07T12:10:52.174562Z
 PROPS-END
 
 Node-path: trunk/d2/linka
@@ -214,3 +214,41 @@ Content-length: 6
 
 link b
 
+Revision-number: 5
+Prop-content-length: 110
+Content-length: 110
+
+K 7
+svn:log
+V 9
+undo link
+K 10
+svn:author
+V 7
+pmezard
+K 8
+svn:date
+V 27
+2008-12-07T12:10:53.200258Z
+PROPS-END
+
+Node-path: trunk/d2/linka
+Node-action: delete
+
+
+Node-path: trunk/linkaa
+Node-kind: file
+Node-action: change
+Prop-content-length: 34
+Text-content-length: 5
+Text-content-md5: 6137cde4893c59f76f005a8123d8e8e6
+Content-length: 39
+
+K 13
+svn:mergeinfo
+V 0
+
+PROPS-END
+data
+
+
--- a/tests/run.py
+++ b/tests/run.py
@@ -9,6 +9,7 @@ import test_fetch_command
 import test_fetch_command_regexes
 import test_fetch_exec
 import test_fetch_renames
+import test_fetch_symlinks
 import test_fetch_truncated
 import test_push_command
 import test_push_renames
@@ -22,6 +23,7 @@ def suite():
                                test_fetch_command_regexes.suite(),
                                test_fetch_exec.suite(),
                                test_fetch_renames.suite(),
+                               test_fetch_symlinks.suite(),
                                test_fetch_truncated.suite(),
                                test_push_command.suite(),
                                test_push_renames.suite(),
--- a/tests/test_fetch_symlinks.py
+++ b/tests/test_fetch_symlinks.py
@@ -18,15 +18,31 @@ class TestFetchSymlinks(test_util.TestBa
                     continue
                 self.assertFalse(r[f].data().startswith('link '))
         # Check symlinks in tip
-        tip = repo['tip']
         links = {
-            'linkaa': 'b',
-            'd2/linka': 'b',
+            0: {
+                'linka': 'a',
+                'd/linka': 'a',
+                },
+            1: {
+                'linkaa': 'a',
+                'd2/linka': 'a',
+                },
+            2: {
+                'linkaa': 'b',
+                'd2/linka': 'b',
+                },
+            3: {
+                },
             }
-        for f in tip.manifest():
-            self.assertEqual(f in links, 'l' in tip[f].flags())
-            if f in links:
-                self.assertEqual(links[f], tip[f].data())
+            
+        for rev in repo:
+            ctx = repo[rev]
+            for f in ctx.manifest():
+                self.assertEqual(f in links[rev], 'l' in ctx[f].flags())
+                if f in links[rev]:
+                    self.assertEqual(links[rev][f], ctx[f].data())
+            for f in links[rev]:
+                self.assertTrue(f in ctx)
 
     def test_symlinks_stupid(self):
         self.test_symlinks(True)