# HG changeset patch # User Patrick Mezard # Date 1227979501 21600 # Node ID 3afe404042a314c2bb0f11df1a9165fbe0773671 # Parent 30580c05dccc3cb90be61bf08b1fd3c45b227403 Add a disabled test for unrelated branches The fix is not obvious but preserving the test helps fixing other stuff. diff --git a/tests/fixtures/unrelatedbranch.sh b/tests/fixtures/unrelatedbranch.sh new file mode 100755 --- /dev/null +++ b/tests/fixtures/unrelatedbranch.sh @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Generate unrelatedbranch.svndump +# + +mkdir temp +cd temp + +mkdir project-orig +cd project-orig +mkdir trunk +mkdir branches +cd .. + +svnadmin create testrepo +svnurl=file://`pwd`/testrepo +svn import project-orig $svnurl -m "init project" + +svn co $svnurl project +cd project/trunk +echo a > a +svn add a +svn ci -m "add a in trunk" +cd ../branches +# Create an unrelated branch with another file. It used to lead the converter +# to think branch1 was a copy of trunk, even without copy information. +mkdir branch1 +echo b > branch1/b +svn add branch1 +svn ci -m "add b in branch1" +# Make a real branch too for comparison +svn cp ../trunk branch2 +echo b > branch2/b +svn add branch2/b +svn ci -m "add b to branch2" +cd ../.. + +svnadmin dump testrepo > ../unrelatedbranch.svndump diff --git a/tests/fixtures/unrelatedbranch.svndump b/tests/fixtures/unrelatedbranch.svndump new file mode 100644 --- /dev/null +++ b/tests/fixtures/unrelatedbranch.svndump @@ -0,0 +1,172 @@ +SVN-fs-dump-format-version: 2 + +UUID: c79f8bc0-a944-4a5d-aaa5-0ce23b313891 + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2008-11-23T18:54:03.376021Z +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-11-23T18:54:03.444309Z +PROPS-END + +Node-path: branches +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +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: 116 +Content-length: 116 + +K 7 +svn:log +V 14 +add a in trunk +K 10 +svn:author +V 7 +pmezard +K 8 +svn:date +V 27 +2008-11-23T18:54:04.175530Z +PROPS-END + +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 + + +Revision-number: 3 +Prop-content-length: 118 +Content-length: 118 + +K 7 +svn:log +V 16 +add b in branch1 +K 10 +svn:author +V 7 +pmezard +K 8 +svn:date +V 27 +2008-11-23T18:54:05.192583Z +PROPS-END + +Node-path: branches/branch1 +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: branches/branch1/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 + + +Revision-number: 4 +Prop-content-length: 118 +Content-length: 118 + +K 7 +svn:log +V 16 +add b to branch2 +K 10 +svn:author +V 7 +pmezard +K 8 +svn:date +V 27 +2008-11-23T18:54:07.185050Z +PROPS-END + +Node-path: branches/branch2 +Node-kind: dir +Node-action: add +Node-copyfrom-rev: 1 +Node-copyfrom-path: trunk +Prop-content-length: 34 +Content-length: 34 + +K 13 +svn:mergeinfo +V 0 + +PROPS-END + + +Node-path: branches/branch2/a +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/a +Text-copy-source-md5: 60b725f10c9c85c70d97880dfe8191b3 + + +Node-path: branches/branch2/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 + + diff --git a/tests/run.py b/tests/run.py --- a/tests/run.py +++ b/tests/run.py @@ -4,6 +4,7 @@ import unittest sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +import test_fetch_branches import test_fetch_command import test_fetch_command_regexes import test_fetch_renames @@ -15,7 +16,8 @@ import test_push_eol import test_tags def suite(): - return unittest.TestSuite([test_fetch_command.suite(), + return unittest.TestSuite([test_fetch_branches.suite(), + test_fetch_command.suite(), test_fetch_command_regexes.suite(), test_fetch_renames.suite(), test_fetch_truncated.suite(), diff --git a/tests/test_fetch_branches.py b/tests/test_fetch_branches.py new file mode 100644 --- /dev/null +++ b/tests/test_fetch_branches.py @@ -0,0 +1,26 @@ +import sys +import unittest + +import test_util + + +class TestFetchBranches(test_util.TestBase): + def _load_fixture_and_fetch(self, fixture_name, stupid): + return test_util.load_fixture_and_fetch(fixture_name, self.repo_path, + self.wc_path, stupid=stupid) + + def test_unrelatedbranch(self, stupid=False): + repo = self._load_fixture_and_fetch('unrelatedbranch.svndump', stupid) + heads = [repo[n] for n in repo.heads()] + heads = dict([(ctx.branch(), ctx) for ctx in heads]) + # Let these tests disabled yet as the fix is not obvious + #self.assertEqual(heads['branch1'].manifest().keys(), ['b']) + #self.assertEqual(heads['branch2'].manifest().keys(), ['a', 'b']) + + def test_unrelatedbranch_stupid(self): + self.test_unrelatedbranch(True) + +def suite(): + all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchBranches), + ] + return unittest.TestSuite(all)