[email protected] | d5800f1 | 2009-11-12 20:03:43 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
| 3 | # Use of this source code is governed by a BSD-style license that can be |
| 4 | # found in the LICENSE file. |
| 5 | |
| 6 | import re |
| 7 | import StringIO |
| 8 | |
| 9 | import gclient_utils |
| 10 | from super_mox import SuperMoxTestBase |
| 11 | |
| 12 | class SubprocessCallAndFilterTestCase(SuperMoxTestBase): |
| 13 | def testSubprocessCallAndFilter(self): |
| 14 | command = ['boo', 'foo', 'bar'] |
| 15 | in_directory = 'bleh' |
| 16 | fail_status = None |
| 17 | pattern = 'a(.*)b' |
| 18 | test_string = 'ahah\naccb\nallo\naddb\n' |
| 19 | class Mock(object): |
| 20 | stdout = StringIO.StringIO(test_string) |
| 21 | def wait(self): |
| 22 | pass |
| 23 | kid = Mock() |
| 24 | print("\n________ running 'boo foo bar' in 'bleh'") |
| 25 | for i in test_string: |
| 26 | gclient_utils.sys.stdout.write(i) |
| 27 | gclient_utils.subprocess.Popen( |
| 28 | command, bufsize=0, cwd=in_directory, |
| 29 | shell=(gclient_utils.sys.platform == 'win32'), |
| 30 | stdout=gclient_utils.subprocess.PIPE, |
| 31 | stderr=gclient_utils.subprocess.STDOUT).AndReturn(kid) |
| 32 | self.mox.ReplayAll() |
| 33 | compiled_pattern = re.compile(pattern) |
| 34 | line_list = [] |
| 35 | capture_list = [] |
| 36 | def FilterLines(line): |
| 37 | line_list.append(line) |
| 38 | match = compiled_pattern.search(line) |
| 39 | if match: |
| 40 | capture_list.append(match.group(1)) |
| 41 | gclient_utils.SubprocessCallAndFilter( |
| 42 | command, in_directory, |
| 43 | True, True, |
| 44 | fail_status, FilterLines) |
| 45 | self.assertEquals(line_list, ['ahah', 'accb', 'allo', 'addb']) |
| 46 | self.assertEquals(capture_list, ['cc', 'dd']) |
| 47 | |
| 48 | |
[email protected] | ac915bb | 2009-11-13 17:03:01 | [diff] [blame] | 49 | class SplitUrlRevisionTestCase(SuperMoxTestBase): |
| 50 | def testSSHUrl(self): |
| 51 | url = "ssh://[email protected]/test.git" |
| 52 | rev = "ac345e52dc" |
| 53 | out_url, out_rev = gclient_utils.SplitUrlRevision(url) |
| 54 | self.assertEquals(out_rev, None) |
| 55 | self.assertEquals(out_url, url) |
| 56 | out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) |
| 57 | self.assertEquals(out_rev, rev) |
| 58 | self.assertEquals(out_url, url) |
| 59 | url = "ssh://example.com/test.git" |
| 60 | out_url, out_rev = gclient_utils.SplitUrlRevision(url) |
| 61 | self.assertEquals(out_rev, None) |
| 62 | self.assertEquals(out_url, url) |
| 63 | out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) |
| 64 | self.assertEquals(out_rev, rev) |
| 65 | self.assertEquals(out_url, url) |
[email protected] | a4d60f9 | 2009-11-18 19:34:08 | [diff] [blame] | 66 | url = "ssh://example.com/git/test.git" |
| 67 | out_url, out_rev = gclient_utils.SplitUrlRevision(url) |
| 68 | self.assertEquals(out_rev, None) |
| 69 | self.assertEquals(out_url, url) |
| 70 | out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) |
| 71 | self.assertEquals(out_rev, rev) |
| 72 | self.assertEquals(out_url, url) |
[email protected] | b9f2f62 | 2009-11-19 23:45:35 | [diff] [blame] | 73 | rev = "test-stable" |
| 74 | out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) |
| 75 | self.assertEquals(out_rev, rev) |
| 76 | self.assertEquals(out_url, url) |
[email protected] | ac915bb | 2009-11-13 17:03:01 | [diff] [blame] | 77 | |
| 78 | def testSVNUrl(self): |
| 79 | url = "svn://example.com/test" |
| 80 | rev = "ac345e52dc" |
| 81 | out_url, out_rev = gclient_utils.SplitUrlRevision(url) |
| 82 | self.assertEquals(out_rev, None) |
| 83 | self.assertEquals(out_url, url) |
| 84 | out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) |
| 85 | self.assertEquals(out_rev, rev) |
| 86 | self.assertEquals(out_url, url) |
| 87 | |
| 88 | |
[email protected] | c532e17 | 2009-12-15 17:18:32 | [diff] [blame^] | 89 | class FullUrlFromRelative(SuperMoxTestBase): |
| 90 | def testFullUrlFromRelative(self): |
| 91 | base_url = 'svn://a/b/c/d' |
| 92 | full_url = gclient_utils.FullUrlFromRelative(base_url, '/crap') |
| 93 | self.assertEqual(full_url, 'svn://a/b/crap') |
| 94 | |
| 95 | def testFullUrlFromRelative2(self): |
| 96 | base_url = 'svn://a/b/c/d' |
| 97 | full_url = gclient_utils.FullUrlFromRelative2(base_url, '/crap') |
| 98 | self.assertEqual(full_url, 'svn://a/b/c/crap') |
| 99 | |
| 100 | |
[email protected] | d5800f1 | 2009-11-12 20:03:43 | [diff] [blame] | 101 | if __name__ == '__main__': |
| 102 | import unittest |
| 103 | unittest.main() |
| 104 | |
| 105 | # vim: ts=2:sw=2:tw=80:et: |