blob: 93ed728ddfc173aa8364de72fbff10e8529935e7 [file] [log] [blame]
# Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
from recipe_engine import post_process
from RECIPE_MODULES.dart.dart import (ARCHITECTURES, CPUS, DEFAULT_CPU, MODES,
RUNTIMES, SANITIZERS, SYSTEMS)
from PB.recipe_modules.dart.build.build import Build
DEPS = [
'dart',
'recipe_engine/json',
'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/step',
]
PYTHON_VERSION_COMPATIBILITY = 'PY3'
def RunSteps(api):
environment = api.dart._environment(api.properties.get('builder_name'))
api.step.empty('test').presentation.properties['environment'] = environment
def GenTests(api):
yield _test_environment(api, 'defaults', 'default', _defaults())
for arch in ARCHITECTURES:
yield _test_environment(
api, arch, 'default-%s' % arch,
_defaults(
arch=arch,
build_root='out/Release%s' % arch.upper(),
cpu=CPUS.get(arch, DEFAULT_CPU)))
for mode in MODES:
yield _test_environment(
api, mode, 'default-%s' % mode,
_defaults(mode=mode, build_root='out/%sX64' % mode.capitalize()))
for runtime in RUNTIMES:
yield _test_environment(api, runtime, 'default-%s' % runtime,
_defaults(runtime=runtime))
for sanitizer in SANITIZERS:
yield _test_environment(api, sanitizer, 'default-%s' % sanitizer,
_defaults(sanitizer=sanitizer))
for system in SYSTEMS:
overrides = {
'android': {
'copy-coredumps': False,
},
'fuchsia': {
'copy-coredumps': False,
},
'mac': {
'build_root': 'xcodebuild/ReleaseX64',
'out': 'xcodebuild',
},
'win': {
'copy-coredumps': False,
}
}
test = _test_environment(
api, system, 'default-%s' % system,
_defaults(system=system, **overrides.get(system, {})))
if system == 'mac':
yield api.platform('mac', 64) + test
else:
yield test
yield _test_environment(api, 'vm-win', 'vm-win', _defaults(system='win'))
yield api.platform('mac', 64) + _test_environment(
api, 'complex-test-case',
'complex-product-mac-test-riscv64-case-asan-chrome',
_defaults(
arch='riscv64',
build_root='xcodebuild/ProductRISCV64',
cpu='riscv64',
mode='product',
out='xcodebuild',
runtime='chrome',
sanitizer='asan',
system='mac'))
def _test_environment(api, name, builder_name, expected):
return api.test(
name,
api.properties(builder_name=builder_name),
api.post_check(post_process.PropertyEquals, 'environment', expected),
api.post_process(post_process.StatusSuccess),
api.post_process(post_process.DropExpectation),
)
def _defaults(**kwargs):
defaults = {
'arch': 'x64',
'build_root': 'out/ReleaseX64',
'copy-coredumps': True,
'cpu': 'x86-64',
'mode': 'release',
'out': 'out',
'packages': {
'dart/dart-sdk/${platform}': [
'dart/dart-sdk/${platform}',
'version:2.9.0-18.0.dev',
'tools/sdks',
],
'dart/third_party/co19': [
'dart/third_party/co19',
'git_revision:co19_hash',
'tests/co19/src',
],
'dart/third_party/co19/legacy': [
'dart/third_party/co19/legacy',
'git_revision:co19_2_hash',
'tests/co19_2/src',
]
},
'runtime': None,
'sanitizer': 'none',
'system': 'linux',
}
defaults.update(**kwargs)
return defaults