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