# HG changeset patch # User Augie Fackler # Date 1223613442 18000 # Node ID bfbce70a9a57e00f3788e69bd9f538ba8d66813a # Parent 99f8e4b535e9880c32b6d26236101f762b80a5f2 Reworked the svnwrap tests to use the same fixture system as I created for the hgsubversion tests since it is much much faster. diff --git a/svnwrap/tests/fixtures/project_root_at_repo_root.svndump b/svnwrap/tests/fixtures/project_root_at_repo_root.svndump new file mode 100644 --- /dev/null +++ b/svnwrap/tests/fixtures/project_root_at_repo_root.svndump @@ -0,0 +1,352 @@ +SVN-fs-dump-format-version: 2 + +UUID: e72213dc-9746-48d2-846a-a19c2c569b0d + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2008-10-09T14:46:06.470091Z +PROPS-END + +Revision-number: 1 +Prop-content-length: 111 +Content-length: 111 + +K 7 +svn:log +V 11 +Empty dirs. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T14:46:07.147162Z +PROPS-END + +Node-path: branches +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: tags +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: 114 +Content-length: 114 + +K 7 +svn:log +V 14 +Initial Files. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T14:46:08.147874Z +PROPS-END + +Node-path: trunk/alpha +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: 8717538ba2f18a613eaa4892e8d178f7 +Content-length: 25 + +PROPS-END +This is alpha. + + +Node-path: trunk/beta +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 14 +Text-content-md5: 952a13b33256f343982d0a8f0e0af277 +Content-length: 24 + +PROPS-END +This is beta. + + +Node-path: trunk/delta +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: e48d0bca73f04e800e7bd9fb58d49a62 +Content-length: 25 + +PROPS-END +This is delta. + + +Revision-number: 3 +Prop-content-length: 110 +Content-length: 110 + +K 7 +svn:log +V 10 +Tag rev 1. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T14:46:10.131807Z +PROPS-END + +Node-path: tags/rev1 +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: tags/rev1/alpha +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/alpha +Text-copy-source-md5: 8717538ba2f18a613eaa4892e8d178f7 + + +Node-path: tags/rev1/beta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/beta +Text-copy-source-md5: 952a13b33256f343982d0a8f0e0af277 + + +Node-path: tags/rev1/delta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/delta +Text-copy-source-md5: e48d0bca73f04e800e7bd9fb58d49a62 + + +Revision-number: 4 +Prop-content-length: 116 +Content-length: 116 + +K 7 +svn:log +V 16 +Branch to crazy. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T14:46:12.131174Z +PROPS-END + +Node-path: branches/crazy +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/crazy/alpha +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/alpha +Text-copy-source-md5: 8717538ba2f18a613eaa4892e8d178f7 + + +Node-path: branches/crazy/beta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/beta +Text-copy-source-md5: 952a13b33256f343982d0a8f0e0af277 + + +Node-path: branches/crazy/delta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/delta +Text-copy-source-md5: e48d0bca73f04e800e7bd9fb58d49a62 + + +Revision-number: 5 +Prop-content-length: 108 +Content-length: 108 + +K 7 +svn:log +V 9 +Add gamma +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T14:46:13.143196Z +PROPS-END + +Node-path: trunk/gamma +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: 255b705986e84fbb13db9c5a832739ae +Content-length: 25 + +PROPS-END +This is gamma. + + +Revision-number: 6 +Prop-content-length: 108 +Content-length: 108 + +K 7 +svn:log +V 9 +Add omega +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T14:46:14.144244Z +PROPS-END + +Node-path: branches/crazy/omega +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: 22219e00c8dbb47ce790f0eb658e8014 +Content-length: 25 + +PROPS-END +This is omega. + + +Revision-number: 7 +Prop-content-length: 121 +Content-length: 121 + +K 7 +svn:log +V 21 +Branch to more_crazy. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T14:46:16.135900Z +PROPS-END + +Node-path: branches/more_crazy +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/more_crazy/alpha +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/alpha +Text-copy-source-md5: 8717538ba2f18a613eaa4892e8d178f7 + + +Node-path: branches/more_crazy/beta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/beta +Text-copy-source-md5: 952a13b33256f343982d0a8f0e0af277 + + +Node-path: branches/more_crazy/delta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: trunk/delta +Text-copy-source-md5: e48d0bca73f04e800e7bd9fb58d49a62 + + +Node-path: branches/more_crazy/gamma +Node-kind: file +Node-action: add +Node-copyfrom-rev: 5 +Node-copyfrom-path: trunk/gamma +Text-copy-source-md5: 255b705986e84fbb13db9c5a832739ae + + diff --git a/svnwrap/tests/fixtures/project_root_not_repo_root.svndump b/svnwrap/tests/fixtures/project_root_not_repo_root.svndump new file mode 100644 --- /dev/null +++ b/svnwrap/tests/fixtures/project_root_not_repo_root.svndump @@ -0,0 +1,361 @@ +SVN-fs-dump-format-version: 2 + +UUID: 1916bd89-caf8-4f3d-96a7-7d5a7968f6ea + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2008-10-09T15:32:50.842663Z +PROPS-END + +Revision-number: 1 +Prop-content-length: 111 +Content-length: 111 + +K 7 +svn:log +V 11 +Empty dirs. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T15:32:51.151627Z +PROPS-END + +Node-path: dummyproj +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: dummyproj/branches +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: dummyproj/tags +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: dummyproj/trunk +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Revision-number: 2 +Prop-content-length: 114 +Content-length: 114 + +K 7 +svn:log +V 14 +Initial Files. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T15:32:52.149125Z +PROPS-END + +Node-path: dummyproj/trunk/alpha +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: 8717538ba2f18a613eaa4892e8d178f7 +Content-length: 25 + +PROPS-END +This is alpha. + + +Node-path: dummyproj/trunk/beta +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 14 +Text-content-md5: 952a13b33256f343982d0a8f0e0af277 +Content-length: 24 + +PROPS-END +This is beta. + + +Node-path: dummyproj/trunk/delta +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: e48d0bca73f04e800e7bd9fb58d49a62 +Content-length: 25 + +PROPS-END +This is delta. + + +Revision-number: 3 +Prop-content-length: 110 +Content-length: 110 + +K 7 +svn:log +V 10 +Tag rev 1. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T15:32:54.131909Z +PROPS-END + +Node-path: dummyproj/tags/rev1 +Node-kind: dir +Node-action: add +Node-copyfrom-rev: 1 +Node-copyfrom-path: dummyproj/trunk +Prop-content-length: 34 +Content-length: 34 + +K 13 +svn:mergeinfo +V 0 + +PROPS-END + + +Node-path: dummyproj/tags/rev1/alpha +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/alpha +Text-copy-source-md5: 8717538ba2f18a613eaa4892e8d178f7 + + +Node-path: dummyproj/tags/rev1/beta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/beta +Text-copy-source-md5: 952a13b33256f343982d0a8f0e0af277 + + +Node-path: dummyproj/tags/rev1/delta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/delta +Text-copy-source-md5: e48d0bca73f04e800e7bd9fb58d49a62 + + +Revision-number: 4 +Prop-content-length: 116 +Content-length: 116 + +K 7 +svn:log +V 16 +Branch to crazy. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T15:32:56.132149Z +PROPS-END + +Node-path: dummyproj/branches/crazy +Node-kind: dir +Node-action: add +Node-copyfrom-rev: 1 +Node-copyfrom-path: dummyproj/trunk +Prop-content-length: 34 +Content-length: 34 + +K 13 +svn:mergeinfo +V 0 + +PROPS-END + + +Node-path: dummyproj/branches/crazy/alpha +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/alpha +Text-copy-source-md5: 8717538ba2f18a613eaa4892e8d178f7 + + +Node-path: dummyproj/branches/crazy/beta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/beta +Text-copy-source-md5: 952a13b33256f343982d0a8f0e0af277 + + +Node-path: dummyproj/branches/crazy/delta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/delta +Text-copy-source-md5: e48d0bca73f04e800e7bd9fb58d49a62 + + +Revision-number: 5 +Prop-content-length: 108 +Content-length: 108 + +K 7 +svn:log +V 9 +Add gamma +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T15:32:57.142842Z +PROPS-END + +Node-path: dummyproj/trunk/gamma +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: 255b705986e84fbb13db9c5a832739ae +Content-length: 25 + +PROPS-END +This is gamma. + + +Revision-number: 6 +Prop-content-length: 108 +Content-length: 108 + +K 7 +svn:log +V 9 +Add omega +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T15:32:58.146324Z +PROPS-END + +Node-path: dummyproj/branches/crazy/omega +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 15 +Text-content-md5: 22219e00c8dbb47ce790f0eb658e8014 +Content-length: 25 + +PROPS-END +This is omega. + + +Revision-number: 7 +Prop-content-length: 121 +Content-length: 121 + +K 7 +svn:log +V 21 +Branch to more_crazy. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-09T15:33:00.138992Z +PROPS-END + +Node-path: dummyproj/branches/more_crazy +Node-kind: dir +Node-action: add +Node-copyfrom-rev: 1 +Node-copyfrom-path: dummyproj/trunk +Prop-content-length: 34 +Content-length: 34 + +K 13 +svn:mergeinfo +V 0 + +PROPS-END + + +Node-path: dummyproj/branches/more_crazy/alpha +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/alpha +Text-copy-source-md5: 8717538ba2f18a613eaa4892e8d178f7 + + +Node-path: dummyproj/branches/more_crazy/beta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/beta +Text-copy-source-md5: 952a13b33256f343982d0a8f0e0af277 + + +Node-path: dummyproj/branches/more_crazy/delta +Node-kind: file +Node-action: add +Node-copyfrom-rev: 2 +Node-copyfrom-path: dummyproj/trunk/delta +Text-copy-source-md5: e48d0bca73f04e800e7bd9fb58d49a62 + + +Node-path: dummyproj/branches/more_crazy/gamma +Node-kind: file +Node-action: add +Node-copyfrom-rev: 5 +Node-copyfrom-path: dummyproj/trunk/gamma +Text-copy-source-md5: 255b705986e84fbb13db9c5a832739ae + + diff --git a/svnwrap/tests/test_svnwrap.py b/svnwrap/tests/test_svnwrap.py --- a/svnwrap/tests/test_svnwrap.py +++ b/svnwrap/tests/test_svnwrap.py @@ -1,4 +1,5 @@ import os +import popen2 import shutil import tempfile import unittest @@ -9,57 +10,20 @@ import svnwrap class TestBasicRepoLayout(unittest.TestCase): def setUp(self): - self.oldwd = os.getcwd() self.tmpdir = tempfile.mkdtemp('svnwrap_test') self.repo_path = '%s/testrepo' % self.tmpdir - wc_path = '%s/testrepo_wc' % self.tmpdir - os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create', + os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create', self.repo_path,]) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'checkout', - 'file://%s' % self.repo_path, - wc_path,]) - os.chdir(wc_path) - for d in ['branches', 'tags', 'trunk']: - os.mkdir(os.path.join(wc_path, d)) - #r1 - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'branches', 'tags', 'trunk']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Empty dirs.']) - #r2 - files = ['alpha', 'beta', 'delta'] - for f in files: - open(os.path.join(wc_path, 'trunk', f), 'w').write('This is %s.\n' % f) - os.chdir('trunk') - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add']+files) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Initial Files.']) - os.chdir('..') - #r3 - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'tags/rev1']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Tag rev 1.']) - #r4 - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/crazy']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to crazy.']) - - #r5 - open(os.path.join(wc_path, 'trunk', 'gamma'), 'w').write('This is %s.\n' - % 'gamma') - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'trunk/gamma', ]) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add gamma']) - - #r6 - open(os.path.join(wc_path, 'branches', 'crazy', 'omega'), - 'w').write('This is %s.\n' % 'omega') - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'branches/crazy/omega', ]) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add omega']) - - #r7 - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/more_crazy']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to more_crazy.']) - + proc = popen2.Popen4(['svnadmin', 'load', self.repo_path,]) + inp = open(os.path.join(os.path.dirname(__file__), 'fixtures', + 'project_root_at_repo_root.svndump')) + proc.tochild.write(inp.read()) + proc.tochild.close() + proc.wait() self.repo = svnwrap.SubversionRepo('file://%s' % self.repo_path) def tearDown(self): shutil.rmtree(self.tmpdir) - os.chdir(self.oldwd) def test_num_revs(self): @@ -91,56 +55,15 @@ class TestBasicRepoLayout(unittest.TestC class TestRootAsSubdirOfRepo(TestBasicRepoLayout): def setUp(self): - self.oldwd = os.getcwd() self.tmpdir = tempfile.mkdtemp('svnwrap_test') self.repo_path = '%s/testrepo' % self.tmpdir - wc_path = '%s/testrepo_wc' % self.tmpdir - os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create', + os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create', self.repo_path,]) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'checkout', - 'file://%s' % self.repo_path, - wc_path,]) - self.repo_path += '/dummyproj' - os.chdir(wc_path) - os.mkdir('dummyproj') - os.chdir('dummyproj') - wc_path += '/dummyproj' - for d in ['branches', 'tags', 'trunk']: - os.mkdir(os.path.join(wc_path, d)) - #r1 - os.chdir('..') - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'dummyproj']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Empty dirs.']) - os.chdir('dummyproj') - #r2 - files = ['alpha', 'beta', 'delta'] - for f in files: - open(os.path.join(wc_path, 'trunk', f), 'w').write('This is %s.\n' % f) - os.chdir('trunk') - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add']+files) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Initial Files.']) - os.chdir('..') - #r3 - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'tags/rev1']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Tag rev 1.']) - #r4 - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/crazy']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to crazy.']) - - #r5 - open(os.path.join(wc_path, 'trunk', 'gamma'), 'w').write('This is %s.\n' - % 'gamma') - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'trunk/gamma', ]) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add gamma']) - - #r6 - open(os.path.join(wc_path, 'branches', 'crazy', 'omega'), - 'w').write('This is %s.\n' % 'omega') - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'branches/crazy/omega', ]) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add omega']) - - #r7 - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/more_crazy']) - os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to more_crazy.']) - - self.repo = svnwrap.SubversionRepo('file://%s' % (self.repo_path)) + proc = popen2.Popen4(['svnadmin', 'load', self.repo_path,]) + inp = open(os.path.join(os.path.dirname(__file__), 'fixtures', + 'project_root_not_repo_root.svndump')) + proc.tochild.write(inp.read()) + proc.tochild.close() + proc.wait() + self.repo = svnwrap.SubversionRepo('file://%s/dummyproj' % + self.repo_path)