OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright 2015 The Chromium Authors. All rights reserved. | 2 # Copyright 2015 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 """Tests for mb.py.""" | 6 """Tests for mb.py.""" |
7 | 7 |
8 import json | 8 import json |
9 import StringIO | 9 import StringIO |
10 import os | 10 import os |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 # exists but wasn't populated by mb; this should also result in a clobber. | 197 # exists but wasn't populated by mb; this should also result in a clobber. |
198 del mbw.files['/fake_src/out/Debug/mb_type'] | 198 del mbw.files['/fake_src/out/Debug/mb_type'] |
199 self.check(['gen', '-c', 'gyp_debug', '//out/Debug'], mbw=mbw, ret=0) | 199 self.check(['gen', '-c', 'gyp_debug', '//out/Debug'], mbw=mbw, ret=0) |
200 self.assertEqual(mbw.rmdirs, | 200 self.assertEqual(mbw.rmdirs, |
201 ['/fake_src/out/Debug', '/fake_src/out/Debug']) | 201 ['/fake_src/out/Debug', '/fake_src/out/Debug']) |
202 self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gyp') | 202 self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gyp') |
203 | 203 |
204 def test_gn_analyze(self): | 204 def test_gn_analyze(self): |
205 files = {'/tmp/in.json': """{\ | 205 files = {'/tmp/in.json': """{\ |
206 "files": ["foo/foo_unittest.cc"], | 206 "files": ["foo/foo_unittest.cc"], |
207 "targets": ["foo_unittests", "bar_unittests"] | |
208 }"""} | |
209 | |
210 mbw = self.fake_mbw(files) | |
211 mbw.Call = lambda cmd, env=None, buffer_output=True: ( | |
212 0, 'out/Default/foo_unittests\n', '') | |
213 | |
214 self.check(['analyze', '-c', 'gn_debug', '//out/Default', | |
215 '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) | |
216 out = json.loads(mbw.files['/tmp/out.json']) | |
217 self.assertEqual(out, { | |
218 'status': 'Found dependency', | |
219 'targets': ['foo_unittests'], | |
220 'build_targets': ['foo_unittests'] | |
221 }) | |
222 | |
223 def test_gn_analyze_new_logic(self): | |
224 files = {'/tmp/in.json': """{\ | |
225 "files": ["foo/foo_unittest.cc"], | |
226 "test_targets": ["foo_unittests", "bar_unittests"], | 207 "test_targets": ["foo_unittests", "bar_unittests"], |
227 "additional_compile_targets": [] | 208 "additional_compile_targets": [] |
228 }"""} | 209 }"""} |
229 | 210 |
230 mbw = self.fake_mbw(files) | 211 mbw = self.fake_mbw(files) |
231 mbw.Call = lambda cmd, env=None, buffer_output=True: ( | 212 mbw.Call = lambda cmd, env=None, buffer_output=True: ( |
232 0, 'out/Default/foo_unittests\n', '') | 213 0, 'out/Default/foo_unittests\n', '') |
233 | 214 |
234 self.check(['analyze', '-c', 'gn_debug', '//out/Default', | 215 self.check(['analyze', '-c', 'gn_debug', '//out/Default', |
235 '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) | 216 '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) |
236 out = json.loads(mbw.files['/tmp/out.json']) | 217 out = json.loads(mbw.files['/tmp/out.json']) |
237 self.assertEqual(out, { | 218 self.assertEqual(out, { |
238 'status': 'Found dependency', | 219 'status': 'Found dependency', |
239 'compile_targets': ['foo_unittests'], | 220 'compile_targets': ['foo_unittests'], |
240 'test_targets': ['foo_unittests'] | 221 'test_targets': ['foo_unittests'] |
241 }) | 222 }) |
242 | 223 |
243 def test_gn_analyze_all(self): | 224 def test_gn_analyze_all(self): |
244 files = {'/tmp/in.json': """{\ | 225 files = {'/tmp/in.json': """{\ |
245 "files": ["foo/foo_unittest.cc"], | 226 "files": ["foo/foo_unittest.cc"], |
246 "targets": ["all", "bar_unittests"] | |
247 }"""} | |
248 mbw = self.fake_mbw(files) | |
249 mbw.Call = lambda cmd, env=None, buffer_output=True: ( | |
250 0, 'out/Default/foo_unittests\n', '') | |
251 self.check(['analyze', '-c', 'gn_debug', '//out/Default', | |
252 '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) | |
253 out = json.loads(mbw.files['/tmp/out.json']) | |
254 self.assertEqual(out, { | |
255 'status': 'Found dependency (all)', | |
256 }) | |
257 | |
258 def test_gn_analyze_all_new_logic(self): | |
259 files = {'/tmp/in.json': """{\ | |
260 "files": ["foo/foo_unittest.cc"], | |
261 "test_targets": ["bar_unittests"], | 227 "test_targets": ["bar_unittests"], |
262 "additional_compile_targets": ["all"] | 228 "additional_compile_targets": ["all"] |
263 }"""} | 229 }"""} |
264 mbw = self.fake_mbw(files) | 230 mbw = self.fake_mbw(files) |
265 mbw.Call = lambda cmd, env=None, buffer_output=True: ( | 231 mbw.Call = lambda cmd, env=None, buffer_output=True: ( |
266 0, 'out/Default/foo_unittests\n', '') | 232 0, 'out/Default/foo_unittests\n', '') |
267 self.check(['analyze', '-c', 'gn_debug', '//out/Default', | 233 self.check(['analyze', '-c', 'gn_debug', '//out/Default', |
268 '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) | 234 '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) |
269 out = json.loads(mbw.files['/tmp/out.json']) | 235 out = json.loads(mbw.files['/tmp/out.json']) |
270 self.assertEqual(out, { | 236 self.assertEqual(out, { |
271 'status': 'Found dependency (all)', | 237 'status': 'Found dependency (all)', |
272 'compile_targets': ['all', 'bar_unittests'], | 238 'compile_targets': ['all', 'bar_unittests'], |
273 'test_targets': ['bar_unittests'], | 239 'test_targets': ['bar_unittests'], |
274 }) | 240 }) |
275 | 241 |
276 def test_gn_analyze_missing_file(self): | 242 def test_gn_analyze_missing_file(self): |
277 files = {'/tmp/in.json': """{\ | 243 files = {'/tmp/in.json': """{\ |
278 "files": ["foo/foo_unittest.cc"], | 244 "files": ["foo/foo_unittest.cc"], |
279 "targets": ["bar_unittests"] | |
280 }"""} | |
281 mbw = self.fake_mbw(files) | |
282 mbw.cmds = [ | |
283 (0, '', ''), | |
284 (1, 'The input matches no targets, configs, or files\n', ''), | |
285 (1, 'The input matches no targets, configs, or files\n', ''), | |
286 ] | |
287 | |
288 self.check(['analyze', '-c', 'gn_debug', '//out/Default', | |
289 '/tmp/in.json', '/tmp/out.json'], mbw=mbw, ret=0) | |
290 out = json.loads(mbw.files['/tmp/out.json']) | |
291 self.assertEqual(out, { | |
292 'build_targets': [], | |
293 'targets': [], | |
294 'status': 'No dependency', | |
295 }) | |
296 | |
297 def test_gn_analyze_missing_file_new_logic(self): | |
298 files = {'/tmp/in.json': """{\ | |
299 "files": ["foo/foo_unittest.cc"], | |
300 "test_targets": ["bar_unittests"], | 245 "test_targets": ["bar_unittests"], |
301 "additional_compile_targets": [] | 246 "additional_compile_targets": [] |
302 }"""} | 247 }"""} |
303 mbw = self.fake_mbw(files) | 248 mbw = self.fake_mbw(files) |
304 mbw.cmds = [ | 249 mbw.cmds = [ |
305 (0, '', ''), | 250 (0, '', ''), |
306 (1, 'The input matches no targets, configs, or files\n', ''), | 251 (1, 'The input matches no targets, configs, or files\n', ''), |
307 (1, 'The input matches no targets, configs, or files\n', ''), | 252 (1, 'The input matches no targets, configs, or files\n', ''), |
308 ] | 253 ] |
309 | 254 |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 finally: | 398 finally: |
454 sys.stdout = orig_stdout | 399 sys.stdout = orig_stdout |
455 | 400 |
456 | 401 |
457 def test_validate(self): | 402 def test_validate(self): |
458 self.check(['validate'], ret=0) | 403 self.check(['validate'], ret=0) |
459 | 404 |
460 | 405 |
461 if __name__ == '__main__': | 406 if __name__ == '__main__': |
462 unittest.main() | 407 unittest.main() |
OLD | NEW |