Index: tests/scm_unittest.py |
diff --git a/tests/scm_unittest.py b/tests/scm_unittest.py |
index 15676aa21644cc19a93abe055d66697ecbe64a40..49e9ee2f956d37c99efe67cbecd8861c6797f4a7 100755 |
--- a/tests/scm_unittest.py |
+++ b/tests/scm_unittest.py |
@@ -189,293 +189,6 @@ class RealGitTest(fake_repos.FakeReposTestBase): |
self.assertTrue(scm.GIT.IsValidRevision(cwd=self.clone_dir, rev='HEAD')) |
-class RealGitSvnTest(fake_repos.FakeReposTestBase): |
- def setUp(self): |
- super(RealGitSvnTest, self).setUp() |
- self.enabled = self.FAKE_REPOS.set_up_git() and self.FAKE_REPOS.set_up_svn() |
- if self.enabled: |
- self.tree_name = 'git-svn' |
- self.svn_url = scm.os.path.join(self.FAKE_REPOS.svn_base, 'trunk') |
- self.clone_dir = scm.os.path.join(self.FAKE_REPOS.git_root, |
- self.tree_name) |
- scm.os.makedirs(self.clone_dir) |
- self._capture(['svn', 'clone', '-q', '-q', self.svn_url, self.clone_dir]) |
- # git rev-list gives revisions in reverse chronological order. |
- hashes = reversed(self._capture(['rev-list', 'HEAD']).splitlines()) |
- # We insert a null value at 0 to do 1-based indexing, not 0-based, as SVN |
- # revisions are 1-based (i.e. they start at r1, not r0). |
- self.git_hashes = ([None] + list(hashes)) |
- |
- def tearDown(self): |
- scm.gclient_utils.rmtree(self.clone_dir) |
- |
- def _capture(self, cmd, **kwargs): |
- kwargs.setdefault('cwd', self.clone_dir) |
- return scm.GIT.Capture(cmd, **kwargs) |
- |
- def testGetGitSvnHeadRev(self): |
- if not self.enabled: |
- return |
- self.assertEquals(scm.GIT.GetGitSvnHeadRev(cwd=self.clone_dir), 2) |
- self._capture(['reset', '--hard', 'HEAD^']) |
- self.assertEquals(scm.GIT.GetGitSvnHeadRev(cwd=self.clone_dir), 1) |
- |
- def testIsGitSvn(self): |
- if not self.enabled: |
- return |
- # Git-svn |
- self.assertTrue(scm.GIT.IsGitSvn(self.clone_dir)) |
- # Pure git |
- git_dir = scm.os.path.join(self.FAKE_REPOS.git_root, 'repo_1') |
- self.assertFalse(scm.GIT.IsGitSvn(git_dir)) |
- # Pure svn |
- svn_dir = scm.os.path.join(self.FAKE_REPOS.svn_checkout, 'trunk') |
- self.assertFalse(scm.GIT.IsGitSvn(svn_dir)) |
- |
- def testParseGitSvnSha1(self): |
- test_sha1 = 'a5c63ce8671922e5c59c0dea49ef4f9d4a3020c9' |
- expected_output = test_sha1 + '\n' |
- # Cygwin git-svn 1.7.9 prints extra escape sequences when run under |
- # TERM=xterm |
- cygwin_output = test_sha1 + '\n\033[?1034h' |
- |
- self.assertEquals(scm.GIT.ParseGitSvnSha1(expected_output), test_sha1) |
- self.assertEquals(scm.GIT.ParseGitSvnSha1(cygwin_output), test_sha1) |
- |
- def testGetGetSha1ForSvnRev(self): |
- if not self.enabled: |
- return |
- self.assertEquals(scm.GIT.GetSha1ForSvnRev(cwd=self.clone_dir, rev=1), |
- self.git_hashes[1]) |
- self.assertEquals(scm.GIT.GetSha1ForSvnRev(cwd=self.clone_dir, rev=2), |
- self.git_hashes[2]) |
- |
- |
-class SVNTestCase(BaseSCMTestCase): |
- def setUp(self): |
- BaseSCMTestCase.setUp(self) |
- self.mox.StubOutWithMock(scm.SVN, 'Capture') |
- self.url = self.SvnUrl() |
- |
- def testMembersChanged(self): |
- self.mox.ReplayAll() |
- members = [ |
- 'AssertVersion', |
- 'Capture', |
- 'CaptureLocalInfo', |
- 'CaptureRemoteInfo', |
- 'CaptureRevision', |
- 'CaptureStatus', |
- 'current_version', |
- 'GenerateDiff', |
- 'GetCheckoutRoot', |
- 'GetEmail', |
- 'GetFileProperty', |
- 'IsMoved', |
- 'IsMovedInfo', |
- 'IsValidRevision', |
- 'ReadSimpleAuth', |
- 'Revert', |
- 'RunAndGetFileList', |
- ] |
- # If this test fails, you should add the relevant test. |
- self.compareMembers(scm.SVN, members) |
- |
- def testGetCheckoutRoot(self): |
- # pylint: disable=E1103 |
- self.mox.StubOutWithMock(scm.SVN, '_CaptureInfo') |
- self.mox.StubOutWithMock(scm, 'GetCasedPath') |
- scm.os.path.abspath = lambda x: x |
- scm.GetCasedPath = lambda x: x |
- scm.SVN._CaptureInfo([], self.root_dir + '/foo/bar').AndReturn({ |
- 'Repository Root': 'svn://svn.chromium.org/chrome', |
- 'URL': 'svn://svn.chromium.org/chrome/trunk/src', |
- }) |
- scm.SVN._CaptureInfo([], self.root_dir + '/foo').AndReturn({ |
- 'Repository Root': 'svn://svn.chromium.org/chrome', |
- 'URL': 'svn://svn.chromium.org/chrome/trunk', |
- }) |
- scm.SVN._CaptureInfo([], self.root_dir).AndReturn({ |
- 'Repository Root': 'svn://svn.chromium.org/chrome', |
- 'URL': 'svn://svn.chromium.org/chrome/trunk/tools/commit-queue/workdir', |
- }) |
- self.mox.ReplayAll() |
- self.assertEquals(scm.SVN.GetCheckoutRoot(self.root_dir + '/foo/bar'), |
- self.root_dir + '/foo') |
- |
- def testGetFileInfo(self): |
- xml_text = r"""<?xml version="1.0"?> |
-<info> |
-<entry kind="file" path="%s" revision="14628"> |
-<url>http://src.chromium.org/svn/trunk/src/chrome/app/d</url> |
-<repository><root>http://src.chromium.org/svn</root></repository> |
-<wc-info> |
-<schedule>add</schedule> |
-<depth>infinity</depth> |
-<copy-from-url>http://src.chromium.org/svn/trunk/src/chrome/app/DEPS</copy-from-url> |
-<copy-from-rev>14628</copy-from-rev> |
-<checksum>369f59057ba0e6d9017e28f8bdfb1f43</checksum> |
-</wc-info> |
-</entry> |
-</info> |
-""" % self.url |
- scm.SVN.Capture(['info', '--xml', self.url], None).AndReturn(xml_text) |
- expected = { |
- 'URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/d', |
- 'UUID': None, |
- 'Repository Root': 'http://src.chromium.org/svn', |
- 'Schedule': 'add', |
- 'Copied From URL': |
- 'http://src.chromium.org/svn/trunk/src/chrome/app/DEPS', |
- 'Copied From Rev': '14628', |
- 'Path': self.url, |
- 'Revision': 14628, |
- 'Node Kind': 'file', |
- } |
- self.mox.ReplayAll() |
- file_info = scm.SVN._CaptureInfo([self.url], None) |
- self.assertEquals(sorted(file_info.items()), sorted(expected.items())) |
- |
- def testCaptureInfo(self): |
- xml_text = """<?xml version="1.0"?> |
-<info> |
-<entry |
- kind="dir" |
- path="." |
- revision="35"> |
-<url>%s</url> |
-<repository> |
-<root>%s</root> |
-<uuid>7b9385f5-0452-0410-af26-ad4892b7a1fb</uuid> |
-</repository> |
-<wc-info> |
-<schedule>normal</schedule> |
-<depth>infinity</depth> |
-</wc-info> |
-<commit |
- revision="35"> |
-<author>maruel</author> |
-<date>2008-12-04T20:12:19.685120Z</date> |
-</commit> |
-</entry> |
-</info> |
-""" % (self.url, self.root_dir) |
- scm.SVN.Capture(['info', '--xml', self.url], None).AndReturn(xml_text) |
- self.mox.ReplayAll() |
- file_info = scm.SVN._CaptureInfo([self.url], None) |
- expected = { |
- 'URL': self.url, |
- 'UUID': '7b9385f5-0452-0410-af26-ad4892b7a1fb', |
- 'Revision': 35, |
- 'Repository Root': self.root_dir, |
- 'Schedule': 'normal', |
- 'Copied From URL': None, |
- 'Copied From Rev': None, |
- 'Path': '.', |
- 'Node Kind': 'directory', |
- } |
- self.assertEqual(file_info, expected) |
- |
- def testCaptureStatus(self): |
- text = r"""<?xml version="1.0"?> |
-<status> |
-<target path="."> |
-<entry path="unversionned_file.txt"> |
-<wc-status props="none" item="unversioned"></wc-status> |
-</entry> |
-<entry path="build\internal\essential.vsprops"> |
-<wc-status props="normal" item="modified" revision="14628"> |
-<commit revision="13818"> |
-<author>ajwong@chromium.org</author> |
-<date>2009-04-16T00:42:06.872358Z</date> |
-</commit> |
-</wc-status> |
-</entry> |
-<entry path="chrome\app\d"> |
-<wc-status props="none" copied="true" tree-conflicted="true" item="added"> |
-</wc-status> |
-</entry> |
-<entry path="chrome\app\DEPS"> |
-<wc-status props="modified" item="modified" revision="14628"> |
-<commit revision="1279"> |
-<author>brettw@google.com</author> |
-<date>2008-08-23T17:16:42.090152Z</date> |
-</commit> |
-</wc-status> |
-</entry> |
-<entry path="scripts\master\factory\gclient_factory.py"> |
-<wc-status props="normal" item="conflicted" revision="14725"> |
-<commit revision="14633"> |
-<author>nsylvain@chromium.org</author> |
-<date>2009-04-27T19:37:17.977400Z</date> |
-</commit> |
-</wc-status> |
-</entry> |
-</target> |
-</status> |
-""" |
- scm.SVN.Capture(['status', '--xml'], '.').AndReturn(text) |
- |
- self.mox.ReplayAll() |
- info = scm.SVN.CaptureStatus(None, '.') |
- expected = [ |
- ('? ', 'unversionned_file.txt'), |
- ('M ', 'build\\internal\\essential.vsprops'), |
- ('A + ', 'chrome\\app\\d'), |
- ('MM ', 'chrome\\app\\DEPS'), |
- ('C ', 'scripts\\master\\factory\\gclient_factory.py'), |
- ] |
- self.assertEquals(sorted(info), sorted(expected)) |
- |
- def testCaptureStatusEmpty(self): |
- text = r"""<?xml version="1.0"?> |
- <status> |
- <target |
- path="perf"> |
- </target> |
- </status>""" |
- scm.SVN.Capture(['status', '--xml'], None).AndReturn(text) |
- self.mox.ReplayAll() |
- info = scm.SVN.CaptureStatus(None, None) |
- self.assertEquals(info, []) |
- |
- |
-class RealSvnTest(fake_repos.FakeReposTestBase): |
- # Tests that work with a checkout. |
- def setUp(self): |
- super(RealSvnTest, self).setUp() |
- self.enabled = self.FAKE_REPOS.set_up_svn() |
- if self.enabled: |
- self.svn_root = scm.os.path.join(self.root_dir, 'base') |
- scm.SVN.Capture( |
- ['checkout', self.svn_base + 'trunk/third_party', 'base'], |
- cwd=self.root_dir) |
- self.tree = self.mangle_svn_tree(('trunk/third_party@-1', ''),) |
- |
- def _capture(self, cmd, **kwargs): |
- kwargs.setdefault('cwd', self.svn_root) |
- return scm.SVN.Capture(cmd, **kwargs) |
- |
- def testCheckout(self): |
- if not self.enabled: |
- return |
- # Checkout and verify the tree. |
- self.assertTree(self.tree, self.svn_root) |
- |
- def testIsValidRevision(self): |
- if not self.enabled: |
- return |
- url_at_rev = self.svn_base + 'trunk/third_party@%s' |
- # Invalid or non-existent. |
- self.assertFalse(scm.SVN.IsValidRevision('url://totally_invalid/trunk/foo')) |
- self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 0)) |
- self.assertFalse(scm.SVN.IsValidRevision(url_at_rev % 123)) |
- # Valid. |
- self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 1)) |
- self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 2)) |
- self.assertTrue(scm.SVN.IsValidRevision(url_at_rev % 'HEAD')) |
- |
- |
if __name__ == '__main__': |
if '-v' in sys.argv: |
logging.basicConfig(level=logging.DEBUG) |