# HG changeset patch # User Patrick Mezard # Date 1350764672 -7200 # Node ID b729909d3793c5bc0ed6988f633f6e681971f13c # Parent 502613f6b5836bd2a5d21e3d28f117567b70ce60 tests: add tests where files are moved from root to trunk It triggers a special case of missing path with a different root layout. diff --git a/tests/comprehensive/test_verify_and_startrev.py b/tests/comprehensive/test_verify_and_startrev.py --- 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([ diff --git a/tests/fixtures/movetotrunk.sh b/tests/fixtures/movetotrunk.sh 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 diff --git a/tests/fixtures/movetotrunk.svndump b/tests/fixtures/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 + + diff --git a/tests/test_fetch_command.py b/tests/test_fetch_command.py --- 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),