15a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org#!/usr/bin/env python 25a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Copyright (c) 2014 Google Inc. All rights reserved. 35a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Use of this source code is governed by a BSD-style license that can be 45a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# found in the LICENSE file. 55a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 65a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org"""Tests for analyzer 75a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org""" 85a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 98432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgimport json 105a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.orgimport TestGyp 115a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 128432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgfound = 'Found dependency' 13ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgfound_all = 'Found dependency (all)' 148432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgnot_found = 'No dependencies' 155a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 168432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 17ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgdef _CreateConfigFile(files, targets): 18ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org """Creates the analyzer conflig file, which is used as the input to analyzer. 19ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org See description of analyzer.py for description of the arguments.""" 205a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org f = open('test_file', 'w') 218432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org to_write = {'files': files, 'targets': targets } 228432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org json.dump(to_write, f) 238432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org f.close() 248432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 258432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 26ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgdef _CreateBogusConfigFile(): 278432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org f = open('test_file','w') 288432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org f.write('bogus') 298432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org f.close() 308432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 318432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 328432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgdef _ReadOutputFileContents(): 338432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org f = open('analyzer_output', 'r') 348432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org result = json.load(f) 355a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org f.close() 368432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org return result 375a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 388432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 398432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# NOTE: this would be clearer if it subclassed TestGypCustom, but that trips 408432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# over a bug in pylint (E1002). 415a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.orgtest = TestGyp.TestGypCustom(format='analyzer') 425a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 43ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgdef CommonArgs(): 44ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org return ('-Gconfig_path=test_file', 45ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org '-Ganalyzer_output_path=analyzer_output') 46ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 478432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 488432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgdef run_analyzer(*args, **kw): 498432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org """Runs the test specifying a particular config and output path.""" 50ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org args += CommonArgs() 518432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.run_gyp('test.gyp', *args, **kw) 528432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 538432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 548432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgdef run_analyzer2(*args, **kw): 55ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org """Same as run_analyzer(), but passes in test2.gyp instead of test.gyp.""" 56ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org args += CommonArgs() 578432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.run_gyp('test2.gyp', *args, **kw) 588432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 598432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 60ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgdef run_analyzer3(*args, **kw): 61ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org """Same as run_analyzer(), but passes in test3.gyp instead of test.gyp.""" 62ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org args += CommonArgs() 63ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org test.run_gyp('test3.gyp', *args, **kw) 64ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 65ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 66ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgdef run_analyzer4(*args, **kw): 67ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org """Same as run_analyzer(), but passes in test3.gyp instead of test.gyp.""" 68ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org args += CommonArgs() 69ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org test.run_gyp('test4.gyp', *args, **kw) 70ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 71ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 72ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgdef EnsureContains(targets=set(), matched=False, build_targets=set()): 738432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org """Verifies output contains |targets|.""" 748432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org result = _ReadOutputFileContents() 758432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org if result.get('error', None): 768432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'unexpected error', result.get('error') 778432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 788432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 798432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org if result.get('warning', None): 808432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'unexpected warning', result.get('warning') 818432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 828432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 838432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org actual_targets = set(result['targets']) 848432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org if actual_targets != targets: 858432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'actual targets:', actual_targets, '\nexpected targets:', targets 868432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 878432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 88ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org actual_build_targets = set(result['build_targets']) 89ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org if actual_build_targets != build_targets: 90ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org print 'actual build_targets:', actual_build_targets, \ 91ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org '\nexpected build_targets:', build_targets 92ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org test.fail_test() 93ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 948432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org if matched and result['status'] != found: 958432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'expected', found, 'got', result['status'] 968432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 978432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org elif not matched and result['status'] != not_found: 988432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'expected', not_found, 'got', result['status'] 998432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 1008432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1018432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 102ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgdef EnsureMatchedAll(targets): 103ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org result = _ReadOutputFileContents() 104ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org if result.get('error', None): 105ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org print 'unexpected error', result.get('error') 106ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org test.fail_test() 107ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 108ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org if result.get('warning', None): 109ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org print 'unexpected warning', result.get('warning') 110ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org test.fail_test() 111ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 112ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org if result['status'] != found_all: 113ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org print 'expected', found_all, 'got', result['status'] 114ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org test.fail_test() 115ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 116ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org actual_targets = set(result['targets']) 117ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org if actual_targets != targets: 118ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org print 'actual targets:', actual_targets, '\nexpected targets:', targets 119ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org test.fail_test() 120ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 121ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 1228432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgdef EnsureError(expected_error_string): 1238432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org """Verifies output contains the error string.""" 1248432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org result = _ReadOutputFileContents() 1258432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org if result.get('error', '').find(expected_error_string) == -1: 1268432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'actual error:', result.get('error', ''), '\nexpected error:', \ 1278432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org expected_error_string 1288432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 1298432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1308432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1318432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgdef EnsureStdoutContains(expected_error_string): 1328432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org if test.stdout().find(expected_error_string) == -1: 1338432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'actual stdout:', test.stdout(), '\nexpected stdout:', \ 1348432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org expected_error_string 1358432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 1368432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1378432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1388432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgdef EnsureWarning(expected_warning_string): 1398432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org """Verifies output contains the warning string.""" 1408432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org result = _ReadOutputFileContents() 1418432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org if result.get('warning', '').find(expected_warning_string) == -1: 1428432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org print 'actual warning:', result.get('warning', ''), \ 1438432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org '\nexpected warning:', expected_warning_string 1448432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org test.fail_test() 1458432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1468432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Verifies config_path must be specified. 1478432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgtest.run_gyp('test.gyp') 1488432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureStdoutContains('Must specify files to analyze via config_path') 1498432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1508432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Verifies config_path must point to a valid file. 1518432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgtest.run_gyp('test.gyp', '-Gconfig_path=bogus_file', 1528432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org '-Ganalyzer_output_path=analyzer_output') 1538432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureError('Unable to open file bogus_file') 1548432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 155ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org# Verify get warning when bad target is specified. 156ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['exe2.c'], ['bad_target']) 1578432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 1588432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureWarning('Unable to find all targets') 1598432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 1608432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Verifies config_path must point to a valid json file. 161ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateBogusConfigFile() 1628432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 1638432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureError('Unable to parse config file test_file') 1645a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 1655a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Trivial test of a source. 166ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['foo.c'], []) 1678432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 168ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe'}) 1695a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 1705a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Conditional source that is excluded. 171ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['conditional_source.c'], []) 1728432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 1738432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureContains(matched=False) 1745a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 1755a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Conditional source that is included by way of argument. 176ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['conditional_source.c'], []) 1778432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer('-Dtest_variable=1') 178ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe'}) 1795a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 1805a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Two unknown files. 181ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['unknown1.c', 'unoknow2.cc'], []) 1828432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 1838432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureContains() 1845a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 1855a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Two unknown files. 186ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['unknown1.c', 'subdir/subdir_sourcex.c'], []) 1878432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 1888432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureContains() 1895a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 1905a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Included dependency 191ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['unknown1.c', 'subdir/subdir_source.c'], []) 1928432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 193ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe', 'exe3'}) 1945a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 1955a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Included inputs to actions. 196ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['action_input.c'], []) 1978432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 198ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe'}) 1995a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 2005a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Don't consider outputs. 201ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['action_output.c'], []) 2028432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 2038432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureContains(matched=False) 2045a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 2055a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Rule inputs. 206ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['rule_input.c'], []) 2078432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 208ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe'}) 2095a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 2108432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Ignore path specified with PRODUCT_DIR. 211ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['product_dir_input.c'], []) 2128432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 2138432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgEnsureContains(matched=False) 2145a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 2155a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Path specified via a variable. 216ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['subdir/subdir_source2.c'], []) 2178432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 218ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe'}) 2195a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 2205a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org# Verifies paths with // are fixed up correctly. 221ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['parent_source.c'], []) 2228432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 223ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe', 'exe3'}) 2245a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.org 225d1e5ccaf05bac73d817f4959aa94b9bd25069383sky@chromium.org# Verifies relative paths are resolved correctly. 226ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['subdir/subdir_source.h'], []) 2278432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 228ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe'}) 2298432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 2308432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Various permutations when passing in targets. 231ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], ['exe', 'exe3']) 2328432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 233ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'exe3'}, build_targets={'exe2', 'exe3'}) 2348432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 235ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], ['exe']) 2368432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 237ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe2', 'exe3'}) 2388432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 2398432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Verifies duplicates are ignored. 240ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], ['exe', 'exe']) 241ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer() 242ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe2', 'exe3'}) 243ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 244ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['exe2.c'], ['exe']) 245ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer() 246ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe2'}) 247ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 248ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['exe2.c'], []) 2498432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 250ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe2'}) 2518432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 252ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['subdir/subdir2b_source.c', 'exe2.c'], []) 2538432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 254ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe2', 'exe3'}) 2558432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 256ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['subdir/subdir2b_source.c'], ['exe3']) 2578432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 258ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'exe3'}, build_targets={'exe3'}) 2598432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 260ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['exe2.c'], []) 2618432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 262ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe2'}) 2638432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 264ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['foo.c'], []) 2658432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer() 266ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'exe'}) 2678432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 2688432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Assertions when modifying build (gyp/gypi) files, especially when said files 2698432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# are included. 270ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['subdir2/d.cc'], ['exe', 'exe2', 'foo', 'exe3']) 2718432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer2() 272ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'exe', 'foo'}, build_targets={'exe'}) 2738432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 274ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['subdir2/subdir.includes.gypi'], 2758432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org ['exe', 'exe2', 'foo', 'exe3']) 2768432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer2() 277ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'exe', 'foo'}, build_targets={'exe'}) 2788432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 279ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['subdir2/subdir.gyp'], ['exe', 'exe2', 'foo', 'exe3']) 2808432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer2() 281ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'exe', 'foo'}, build_targets={'exe'}) 2828432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 283ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['test2.includes.gypi'], ['exe', 'exe2', 'foo', 'exe3']) 2848432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer2() 285ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'exe', 'exe2', 'exe3'}, 286ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org build_targets={'exe', 'exe2', 'exe3'}) 2878432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org 2888432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.org# Verify modifying a file included makes all targets dirty. 289ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['common.gypi'], ['exe', 'exe2', 'foo', 'exe3']) 2908432ec2cc86f37f48e15dd18d2c85c10cd70b6e2sky@chromium.orgrun_analyzer2('-Icommon.gypi') 291ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureMatchedAll({'exe', 'exe2', 'foo', 'exe3'}) 292ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 293ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org# Assertions from test3.gyp. 294ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['d.c', 'f.c'], ['a']) 295ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 296ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'}) 297ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 298ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['f.c'], ['a']) 299ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 300ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'}) 301ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 302ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['f.c'], []) 303ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 304ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'a', 'b'}) 305ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 306ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['c.c', 'e.c'], []) 307ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 308fa401a9913d33cfa9a2d1a57511e32076a3cccbbsky@chromium.orgEnsureContains(matched=True, build_targets={'a', 'b', 'c', 'e'}) 309ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 310ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['d.c'], ['a']) 311ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 312ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'}) 313ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 314ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['a.c'], ['a', 'b']) 315ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 316ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a'}, build_targets={'a'}) 317ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 318ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['a.c'], ['a', 'b']) 319ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 320ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a'}, build_targets={'a'}) 321ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 322ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['d.c'], ['a', 'b']) 323ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 324ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a', 'b'}, build_targets={'a', 'b'}) 325ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 326ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['f.c'], ['a']) 327ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 328ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a'}, build_targets={'a', 'b'}) 329ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 330ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['a.c'], ['a']) 331ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 332ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, targets={'a'}, build_targets={'a'}) 333ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 334ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['a.c'], []) 335ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 336ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'a'}) 337ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 338ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['d.c'], []) 339ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer3() 340ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'a', 'b'}) 341ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 342ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org# Assertions around test4.gyp. 343ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['f.c'], []) 344ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer4() 345fa401a9913d33cfa9a2d1a57511e32076a3cccbbsky@chromium.orgEnsureContains(matched=True, build_targets={'e', 'f'}) 346ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 347ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['d.c'], []) 348ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer4() 349fa401a9913d33cfa9a2d1a57511e32076a3cccbbsky@chromium.orgEnsureContains(matched=True, build_targets={'a', 'b', 'c', 'd'}) 350ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org 351ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.org_CreateConfigFile(['i.c'], []) 352ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgrun_analyzer4() 353ce177a087448f95dffe7a66bf7d789ff1bfc858bsky@chromium.orgEnsureContains(matched=True, build_targets={'h'}) 354d1e5ccaf05bac73d817f4959aa94b9bd25069383sky@chromium.org 3555a0658e560c0503e2385ad339e06b6fae3031c15mark@chromium.orgtest.pass_test() 356