blob: 4a9d8b4e7d0c89979f972053cb18f5ed943a5042 [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']})))