blob: 29e9a2b6ac584d013e530e743616fd8465dba98c [file] [log] [blame]
# Copyright 2017 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_tests',
'isolate',
'recipe_engine/json',
'recipe_engine/properties',
'recipe_engine/raw_io',
'recipe_engine/step',
'test_utils',
]
from recipe_engine import post_process
def RunSteps(api):
test_name = api.properties.get('test_name') or 'base_unittests'
isolate_coverage_data = api.properties.get('isolate_coverage_data', False)
test = api.chromium_tests.steps.LocalIsolatedScriptTest(
test_name,
override_compile_targets=api.properties.get('override_compile_targets'),
isolate_coverage_data=isolate_coverage_data)
assert not test.is_gtest and not test.runs_on_swarming
test_repeat_count = api.properties.get('repeat_count')
if test_repeat_count:
test.test_options = api.chromium_tests.steps.TestOptions(
test_filter=api.properties.get('test_filter'),
repeat_count=test_repeat_count,
retry_limit=0,
run_disabled=bool(test_repeat_count)
)
try:
test.pre_run(api, '')
test.run(api, '')
finally:
api.step('details', [])
api.step.active_result.presentation.logs['details'] = [
'compile_targets: %r' % test.compile_targets(api),
'isolate_target: %r' % test.isolate_target,
'uses_local_devices: %r' % test.uses_local_devices,
'uses_isolate: %r' % test.uses_isolate,
]
if api.properties.get('log_pass_fail_counts'):
api.step.active_result.presentation.logs['details'] = [
'pass_fail_counts: %r' % test.pass_fail_counts(api, '')
]
def GenTests(api):
def verify_log_fields(check, step_odict, expected_fields):
"""Verifies fields in details log are with expected values."""
step = step_odict['details']
followup_annotations = step['~followup_annotations']
for key, value in expected_fields.iteritems():
expected_log = '@@@STEP_LOG_LINE@details@%s: %r@@@' % (key, value)
check(expected_log in followup_annotations)
return step_odict
def verify_isolate_flag(check, step_odict):
step = step_odict[
'base_unittests']
check(
'LLVM_PROFILE_FILE=${ISOLATED_OUTDIR}/profraw/default-%1m.profraw'
in step['cmd'])
yield (
api.test('basic') +
api.properties(
swarm_hashes={
'base_unittests': 'ffffffffffffffffffffffffffffffffffffffff',
})
)
yield (
api.test('override_compile_targets') +
api.properties(
swarm_hashes={
'base_unittests': 'ffffffffffffffffffffffffffffffffffffffff',
},
override_compile_targets=['base_unittests_run'])
)
yield (
api.test('log_pass_fail_counts') +
api.properties(
swarm_hashes={
'base_unittests': 'ffffffffffffffffffffffffffffffffffffffff',
},
log_pass_fail_counts=True) +
api.post_process(verify_log_fields, {'pass_fail_counts': {}}) +
api.post_process(post_process.DropExpectation)
)
yield (
api.test('log_pass_fail_counts_invalid_results') +
api.properties(
swarm_hashes={
'base_unittests': 'ffffffffffffffffffffffffffffffffffffffff',
},
log_pass_fail_counts=True) +
api.override_step_data(
'base_unittests',
api.test_utils.m.json.output({'interrupted': True}, 255)
) +
api.post_process(verify_log_fields, {'pass_fail_counts': {}}) +
api.post_process(post_process.DropExpectation)
)
yield (
api.test('customized_test_options') +
api.properties(
swarm_hashes={
'blink_web_tests': 'ffffffffffffffffffffffffffffffffffffffff',
},
test_filter=['test1', 'test2'],
repeat_count=20,
test_name='blink_web_tests')
)
yield (
api.test('isolate_coverage_data') +
api.properties(
isolate_coverage_data=True,
swarm_hashes={
'base_unittests': 'ffffffffffffffffffffffffffffffffffffffff',
}) +
api.post_process(verify_isolate_flag) +
api.post_process(post_process.DropExpectation)
)