blob: b0487f717e74e5770cbe755d2e65e04843aa4584 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
DEPS = [
'chromium',
'filter',
'recipe_engine/json',
'recipe_engine/path',
'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/raw_io',
'recipe_engine/step',
]
def RunSteps(api):
test_targets = api.m.properties.get('test_targets')
additional_compile_targets = api.m.properties.get(
'additional_compile_targets')
api.path['checkout'] = api.path['start_dir']
api.chromium.set_config('chromium')
api.chromium.ensure_goma()
api.filter.does_patch_require_compile(
affected_files=list(api.m.properties.get('affected_files', ['foo.cc'])),
test_targets=test_targets,
additional_compile_targets=additional_compile_targets,
additional_names=['chromium'])
assert (list(api.properties.get('example_changed_paths', ['foo.cc'])) == \
api.filter.paths)
assert (list(api.properties.get('example_test_targets', [])) ==
list(api.filter.test_targets))
assert (list(api.properties.get('example_compile_targets', [])) ==
api.filter.compile_targets)
api.step('hello', ['echo', 'Why hello, there.'])
def GenTests(api):
# Trivial test with no exclusions and nothing matching.
yield api.test(
'basic',
api.properties(
affected_files=['yy'],
filter_exclusions=[],
example_changed_paths=['yy']),
api.override_step_data(
'read filter exclusion spec',
api.json.output({
'base': {
'exclusions': []
},
'chromium': {
'exclusions': []
}
})),
)
# Matches exclusions
yield api.test(
'match_exclusion',
api.properties(affected_files=['foo.cc']),
api.override_step_data(
'read filter exclusion spec',
api.json.output({
'base': {
'exclusions': ['fo.*']
},
'chromium': {
'exclusions': []
}
})),
)
# Matches exclusions in additional_names key
yield api.test(
'match_additional_name_exclusion',
api.properties(affected_files=['foo.cc']),
api.override_step_data(
'read filter exclusion spec',
api.json.output({
'base': {
'exclusions': []
},
'chromium': {
'exclusions': ['fo.*']
}
})),
)
# Doesnt match exclusion.
yield api.test(
'doesnt_match_exclusion',
api.properties(
affected_files=['bar.cc'], example_changed_paths=['bar.cc']),
api.override_step_data(
'read filter exclusion spec',
api.json.output({
'base': {
'exclusions': ['fo.*']
},
'chromium': {
'exclusions': []
}
})),
)
# Matches ignore.
yield api.test(
'match_ignore',
api.properties(
affected_files=['OWNERS'], example_changed_paths=['OWNERS']),
api.override_step_data(
'read filter exclusion spec',
api.json.output({
'base': {
'ignores': ['OWNERS']
},
'chromium': {}
})),
)
# Analyze returns matching result.
yield api.test(
'analyzes_returns_true',
api.override_step_data(
'analyze',
api.json.output({
'status': 'Found dependency',
'test_targets': [],
'compile_targets': []
})),
)
# Analyze returns matching tests while matching all.
yield api.test(
'analyzes_matches_all_exes',
api.override_step_data(
'analyze',
api.json.output({
'status': 'Found dependency (all)',
'test_targets': [],
'compile_targets': []
})),
)
# Analyze matches all and returns matching tests.
yield api.test(
'analyzes_matches_test_targets',
api.properties(
test_targets=['foo', 'bar'],
example_test_targets=['foo', 'bar'],
example_compile_targets=['bar', 'foo']),
api.override_step_data(
'analyze',
api.json.output({
'status': 'Found dependency',
'test_targets': ['foo', 'bar'],
'compile_targets': ['foo', 'bar']
})),
)
# Analyze matches all and returns matching tests.
yield api.test(
'analyzes_matches_compile_targets',
api.properties(
example_test_targets=['foo'], example_compile_targets=['bar', 'foo']),
api.override_step_data(
'analyze',
api.json.output({
'status': 'Found dependency',
'test_targets': ['foo'],
'compile_targets': ['bar']
})),
)
# Analyze with error condition.
yield api.test(
'analyzes_error',
api.properties(test_targets=[]),
api.override_step_data('analyze', api.json.output({
'error': 'ERROR'
})),
)
# Analyze with python returning bad status.
yield api.test(
'bad_retcode_fails',
api.properties(test_targets=[]),
api.step_data('analyze', retcode=-1),
)
# invalid_targets creates a failure.
yield api.test(
'invalid_targets',
api.properties(test_targets=[], example_result=1),
api.override_step_data(
'analyze',
api.json.output({
'invalid_targets': ['invalid', 'another one']
})),
)