blob: 71a63e4a6d70a2c3d61d291293d7d1e0126890f4 [file] [log] [blame]
[email protected]d5800f12009-11-12 20:03:431#!/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
6import re
7import StringIO
8
9import gclient_utils
10from super_mox import SuperMoxTestBase
11
12class 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]ac915bb2009-11-13 17:03:0149class 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]a4d60f92009-11-18 19:34:0866 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]b9f2f622009-11-19 23:45:3573 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]ac915bb2009-11-13 17:03:0177
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]c532e172009-12-15 17:18:3289class 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]d5800f12009-11-12 20:03:43101if __name__ == '__main__':
102 import unittest
103 unittest.main()
104
105# vim: ts=2:sw=2:tw=80:et: