Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: tests/subprocess2_test.py

Issue 6792060: Make more tests pass on Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« tests/presubmit_unittest.py ('K') | « tests/scm_unittest.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Unit tests for subprocess2.py.""" 6 """Unit tests for subprocess2.py."""
7 7
8 import optparse 8 import optparse
9 import os 9 import os
10 import sys 10 import sys
(...skipping 10 matching lines...) Expand all
21 21
22 class Subprocess2Test(unittest.TestCase): 22 class Subprocess2Test(unittest.TestCase):
23 # Can be mocked in a test. 23 # Can be mocked in a test.
24 TO_SAVE = { 24 TO_SAVE = {
25 subprocess2: ['Popen', 'call', 'check_call', 'capture', 'check_output'], 25 subprocess2: ['Popen', 'call', 'check_call', 'capture', 'check_output'],
26 subprocess2.subprocess: ['Popen'], 26 subprocess2.subprocess: ['Popen'],
27 } 27 }
28 28
29 def setUp(self): 29 def setUp(self):
30 self.exe_path = __file__ 30 self.exe_path = __file__
31 self.exe = [self.exe_path, '--child'] 31 self.exe = [sys.executable, self.exe_path, '--child']
32 self.saved = {} 32 self.saved = {}
33 for module, names in self.TO_SAVE.iteritems(): 33 for module, names in self.TO_SAVE.iteritems():
34 self.saved[module] = dict( 34 self.saved[module] = dict(
35 (name, getattr(module, name)) for name in names) 35 (name, getattr(module, name)) for name in names)
36 36
37 def tearDown(self): 37 def tearDown(self):
38 for module, saved in self.saved.iteritems(): 38 for module, saved in self.saved.iteritems():
39 for name, value in saved.iteritems(): 39 for name, value in saved.iteritems():
40 setattr(module, name, value) 40 setattr(module, name, value)
41 41
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 expected = { 94 expected = {
95 'args': ['foo'], 95 'args': ['foo'],
96 'a': True, 96 'a': True,
97 } 97 }
98 self.assertEquals(expected, results) 98 self.assertEquals(expected, results)
99 99
100 def test_Popen_defaults(self): 100 def test_Popen_defaults(self):
101 results = self._fake_subprocess_Popen() 101 results = self._fake_subprocess_Popen()
102 proc = subprocess2.Popen(['foo'], a=True) 102 proc = subprocess2.Popen(['foo'], a=True)
103 self.assertEquals(-8, proc.returncode) 103 self.assertEquals(-8, proc.returncode)
104 env = os.environ.copy()
105 env['LANG'] = 'en_US.UTF-8'
106 expected = { 104 expected = {
107 'args': ['foo'], 105 'args': ['foo'],
108 'a': True, 106 'a': True,
109 'shell': bool(sys.platform=='win32'), 107 'shell': bool(sys.platform=='win32'),
110 'env': env,
111 } 108 }
109 if sys.platform != 'win32':
110 env = os.environ.copy()
111 is_english = lambda name: env.get(name, 'en').startswith('en')
112 if not is_english('LANG'):
113 env['LANG'] = 'en_US.UTF-8'
114 expected['env'] = env
115 if not is_english('LANGUAGE'):
116 env['LANGUAGE'] = 'en_US.UTF-8'
117 expected['env'] = env
112 self.assertEquals(expected, results) 118 self.assertEquals(expected, results)
113 119
114 def test_check_output_defaults(self): 120 def test_check_output_defaults(self):
115 results = self._fake_call() 121 results = self._fake_call()
116 # It's discarding 'stderr' because it assumes stderr=subprocess2.STDOUT but 122 # It's discarding 'stderr' because it assumes stderr=subprocess2.STDOUT but
117 # fake_call() doesn't 'implement' that. 123 # fake_call() doesn't 'implement' that.
118 self.assertEquals('stdout', subprocess2.check_output(['foo'], a=True)) 124 self.assertEquals('stdout', subprocess2.check_output(['foo'], a=True))
119 expected = { 125 expected = {
120 'args': ['foo'], 126 'args': ['foo'],
121 'a':True, 127 'a':True,
(...skipping 11 matching lines...) Expand all
133 self.assertEquals(-9, returncode) 139 self.assertEquals(-9, returncode)
134 self.assertEquals(['', None], out) 140 self.assertEquals(['', None], out)
135 141
136 def test_void(self): 142 def test_void(self):
137 out = subprocess2.check_output( 143 out = subprocess2.check_output(
138 self.exe + ['--stdout', '--stderr'], 144 self.exe + ['--stdout', '--stderr'],
139 stdout=subprocess2.VOID) 145 stdout=subprocess2.VOID)
140 self.assertEquals(None, out) 146 self.assertEquals(None, out)
141 out = subprocess2.check_output( 147 out = subprocess2.check_output(
142 self.exe + ['--stdout', '--stderr'], 148 self.exe + ['--stdout', '--stderr'],
149 universal_newlines=True,
143 stderr=subprocess2.VOID) 150 stderr=subprocess2.VOID)
144 self.assertEquals('A\nBB\nCCC\n', out) 151 self.assertEquals('A\nBB\nCCC\n', out)
145 152
146 def test_check_output_throw(self): 153 def test_check_output_throw(self):
147 try: 154 try:
148 subprocess2.check_output(self.exe + ['--fail', '--stderr']) 155 subprocess2.check_output(
156 self.exe + ['--fail', '--stderr'], universal_newlines=True)
149 self.fail() 157 self.fail()
150 except subprocess2.CalledProcessError, e: 158 except subprocess2.CalledProcessError, e:
151 self.assertEquals('a\nbb\nccc\n', e.stdout) 159 self.assertEquals('a\nbb\nccc\n', e.stdout)
152 self.assertEquals(None, e.stderr) 160 self.assertEquals(None, e.stderr)
153 self.assertEquals(64, e.returncode) 161 self.assertEquals(64, e.returncode)
154 162
155 def test_check_call_throw(self): 163 def test_check_call_throw(self):
156 try: 164 try:
157 subprocess2.check_call(self.exe + ['--fail', '--stderr']) 165 subprocess2.check_call(self.exe + ['--fail', '--stderr'])
158 self.fail() 166 self.fail()
(...skipping 29 matching lines...) Expand all
188 do('CCC') 196 do('CCC')
189 if options.sleep: 197 if options.sleep:
190 time.sleep(10) 198 time.sleep(10)
191 return options.return_value 199 return options.return_value
192 200
193 201
194 if __name__ == '__main__': 202 if __name__ == '__main__':
195 if len(sys.argv) > 1 and sys.argv[1] == '--child': 203 if len(sys.argv) > 1 and sys.argv[1] == '--child':
196 sys.exit(child_main(sys.argv[2:])) 204 sys.exit(child_main(sys.argv[2:]))
197 unittest.main() 205 unittest.main()
OLDNEW
« tests/presubmit_unittest.py ('K') | « tests/scm_unittest.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698