changeset 961:b729909d3793

tests: add tests where files are moved from root to trunk It triggers a special case of missing path with a different root layout.
author Patrick Mezard <patrick@mezard.eu>
date Sat, 20 Oct 2012 22:24:32 +0200
parents 502613f6b583
children 8648ccfb8325
files tests/comprehensive/test_verify_and_startrev.py tests/fixtures/movetotrunk.sh tests/fixtures/movetotrunk.svndump tests/test_fetch_command.py
diffstat 4 files changed, 205 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/comprehensive/test_verify_and_startrev.py
+++ b/tests/comprehensive/test_verify_and_startrev.py
@@ -27,6 +27,7 @@ from hgsubversion import verify
 
 _skipall = set([
     'project_root_not_repo_root.svndump',
+    'movetotrunk.svndump',
 ])
 
 _skipstandard = set([
new file mode 100755
--- /dev/null
+++ b/tests/fixtures/movetotrunk.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Generate movetotrunk.svndump
+#
+
+mkdir temp
+cd temp
+
+mkdir project-orig
+cd project-orig
+cd ..
+
+svnadmin create testrepo
+svnurl=file://`pwd`/testrepo
+svn mkdir --parents $svnurl/sub1/sub2 -m subpaths
+svn import project-orig $svnurl/sub1/sub2 -m "init project"
+
+svn co $svnurl/sub1/sub2 project
+cd project
+echo a > a
+svn add a
+mkdir dir
+echo b > dir/b
+svn add dir
+svn ci -m adda
+svn up
+mkdir trunk
+svn add trunk
+svn mv a trunk/a
+svn mv dir trunk/dir
+svn ci -m 'move to trunk'
+cd ..
+
+svnadmin dump testrepo > ../movetotrunk.svndump
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/movetotrunk.svndump
@@ -0,0 +1,154 @@
+SVN-fs-dump-format-version: 2
+
+UUID: bb3f8dfd-83a8-4fe0-b57e-00a3838532ab
+
+Revision-number: 0
+Prop-content-length: 56
+Content-length: 56
+
+K 8
+svn:date
+V 27
+2012-10-20T20:23:15.254324Z
+PROPS-END
+
+Revision-number: 1
+Prop-content-length: 109
+Content-length: 109
+
+K 10
+svn:author
+V 7
+pmezard
+K 8
+svn:date
+V 27
+2012-10-20T20:23:15.271492Z
+K 7
+svn:log
+V 8
+subpaths
+PROPS-END
+
+Node-path: sub1
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: sub1/sub2
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Revision-number: 2
+Prop-content-length: 105
+Content-length: 105
+
+K 10
+svn:author
+V 7
+pmezard
+K 8
+svn:date
+V 27
+2012-10-20T20:23:16.068226Z
+K 7
+svn:log
+V 4
+adda
+PROPS-END
+
+Node-path: sub1/sub2/a
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 60b725f10c9c85c70d97880dfe8191b3
+Text-content-sha1: 3f786850e387550fdab836ed7e6dc881de23001b
+Content-length: 12
+
+PROPS-END
+a
+
+
+Node-path: sub1/sub2/dir
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: sub1/sub2/dir/b
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 2
+Text-content-md5: 3b5d5c3712955042212316173ccf37be
+Text-content-sha1: 89e6c98d92887913cadf06b2adb97f26cde4849b
+Content-length: 12
+
+PROPS-END
+b
+
+
+Revision-number: 3
+Prop-content-length: 115
+Content-length: 115
+
+K 10
+svn:author
+V 7
+pmezard
+K 8
+svn:date
+V 27
+2012-10-20T20:23:20.043626Z
+K 7
+svn:log
+V 13
+move to trunk
+PROPS-END
+
+Node-path: sub1/sub2/trunk
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: sub1/sub2/trunk/a
+Node-kind: file
+Node-action: add
+Node-copyfrom-rev: 2
+Node-copyfrom-path: sub1/sub2/a
+Text-copy-source-md5: 60b725f10c9c85c70d97880dfe8191b3
+Text-copy-source-sha1: 3f786850e387550fdab836ed7e6dc881de23001b
+
+
+Node-path: sub1/sub2/trunk/dir
+Node-kind: dir
+Node-action: add
+Node-copyfrom-rev: 2
+Node-copyfrom-path: sub1/sub2/dir
+
+
+Node-path: sub1/sub2/dir
+Node-action: delete
+
+
+Node-path: sub1/sub2/a
+Node-action: delete
+
+
--- a/tests/test_fetch_command.py
+++ b/tests/test_fetch_command.py
@@ -270,6 +270,22 @@ o  changeset: 0:ab86791fc857
     def test_fetch_revert_stupid(self):
         self.test_fetch_revert(stupid=True)
 
+    def test_fetch_movetotrunk(self, stupid=False):
+        repo = self._load_fixture_and_fetch('movetotrunk.svndump',
+                stupid=stupid, subdir='sub1/sub2')
+        graph = self.getgraph(repo)
+        refgraph = """\
+o  changeset: 0:02996a5980ba
+   branch:
+   tags:      tip
+   summary:   move to trunk
+   files:     a dir/b
+"""
+        self.assertEqual(refgraph.strip(), graph.strip())
+
+    def test_fetch_movetotrunk_stupid(self):
+        self.test_fetch_movetotrunk(stupid=True)
+
 def suite():
     all_tests = [unittest.TestLoader().loadTestsFromTestCase(TestBasicRepoLayout),
            unittest.TestLoader().loadTestsFromTestCase(TestStupidPull),