def onadd_ytest(unit, *args): keywords = {"DEPENDS": -1, "DATA": -1, "TIMEOUT": 1, "FORK_MODE": 1, "SPLIT_FACTOR": 1, "FORK_SUBTESTS": 0, "FORK_TESTS": 0} flat_args, spec_args = _common.sort_by_keywords(keywords, args) if flat_args[1] == "fuzz.test": unit.ondata("arcadia/fuzzing/{}/corpus.json".format(strip_roots(unit.path()))) elif flat_args[1] == "coverage.extractor" and not match_coverage_extractor_requirements(unit): # XXX # Current ymake implementation doesn't allow to call macro inside the 'when' body # that's why we add ADD_YTEST(coverage.extractor) to every PROGRAM entry and check requirements later return fork_mode = [] if 'FORK_SUBTESTS' in spec_args: fork_mode.append('subtests') if 'FORK_TESTS' in spec_args: fork_mode.append('tests') fork_mode = fork_mode or spec_args.get('FORK_MODE', []) or unit.get('TEST_FORK_MODE').split() fork_mode = ' '.join(fork_mode) if fork_mode else '' test_record = { 'TEST-NAME': flat_args[0], 'SCRIPT-REL-PATH': flat_args[1], 'TESTED-PROJECT-NAME': unit.name(), 'TESTED-PROJECT-FILENAME': unit.filename(), 'SOURCE-FOLDER-PATH': unit.resolve(unit.path()), 'BUILD-FOLDER-PATH': strip_roots(unit.path()), 'BINARY-PATH': strip_roots(os.path.join(unit.path(), unit.filename())), 'CUSTOM-DEPENDENCIES': ' '.join(spec_args.get('DEPENDS', []) + get_values_list(unit, 'TEST_DEPENDS_VALUE')), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), 'TEST-DATA': serialize_list(_common.filter_out_by_keyword(spec_args.get('DATA', []) + (unit.get(['__test_data']) or '').split(' ') + get_values_list(unit, 'TEST_DATA_VALUE'), 'AUTOUPDATED')), 'TEST-TIMEOUT': ''.join(spec_args.get('TIMEOUT', [])) or unit.get('TEST_TIMEOUT') or '', 'FORK-MODE': fork_mode, 'SPLIT-FACTOR': ''.join(spec_args.get('SPLIT_FACTOR', [])) or unit.get('TEST_SPLIT_FACTOR') or '', 'SIZE': ''.join(spec_args.get('SIZE', [])) or unit.get('TEST_SIZE_NAME') or '', 'TAG': serialize_list(spec_args.get('TAG', []) + (unit.get(['__test_tags']) or '').split(' ')), 'REQUIREMENTS': serialize_list(spec_args.get('REQUIREMENTS', []) + (unit.get(['__test_requirements']) or '').split(' ')), 'TEST-CWD': unit.get('TEST_CWD_VALUE') or '', 'FUZZ-DICTS': serialize_list(spec_args.get('FUZZ_DICTS', []) + get_unit_list_variable(unit, 'FUZZ_DICTS_VALUE')), 'FUZZ-OPTS': serialize_list(spec_args.get('FUZZ_OPTS', []) + get_unit_list_variable(unit, 'FUZZ_OPTS_VALUE')), 'BLOB': unit.get('TEST_BLOB_DATA') or '', 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', } is_fuzz_test = flat_args[1] == 'fuzz.test' and unit.get('FUZZING') == 'yes' if is_fuzz_test: # use all cores if fuzzing requested test_record['REQUIREMENTS'] = serialize_list(filter(None, deserialize_list(test_record['REQUIREMENTS']) + ["cpu:all", "ram:all"])) data = dump_test(test_record, is_fuzz_test=is_fuzz_test) if data: unit.set_property(["DART_DATA", data]) save_in_file(unit.get('TEST_DART_OUT_FILE'), data)
def onjava_test(unit, *args): assert unit.get('MODULE_TYPE') is not None if unit.get('MODULE_TYPE') == 'JTEST_FOR': if not unit.get('UNITTEST_DIR'): print>>sys.stderr, 'skip JTEST_FOR in {}: no args provided'.format(unit.path()) # TODO: configure error return # do not add such tests into dart path = strip_roots(unit.path()) test_data = unit.get('__test_data').split() if unit.get('__test_data') is not None else [] test_data += get_values_list(unit, 'TEST_DATA_VALUE') test_data.append('arcadia/build/scripts') props = extract_java_system_properties(unit, get_values_list(unit, 'SYSTEM_PROPERTIES_VALUE')) for prop in props: if prop['type'] == 'file': test_data.append(prop['path'].replace('${ARCADIA_ROOT}', 'arcadia')) props = base64.b64encode(json.dumps(props, encoding='utf-8')) test_cwd = unit.get('TEST_CWD_VALUE') or '' # TODO: validate test_cwd value script_rel_path = 'testng.test' if unit.get('MODULE_TYPE') == 'TESTNG' else 'junit.test' test_record = { 'SOURCE-FOLDER-PATH': path, 'TEST-NAME': '-'.join([os.path.basename(os.path.dirname(path)), os.path.basename(path)]), 'SCRIPT-REL-PATH': script_rel_path, 'TEST-TIMEOUT': unit.get('TEST_TIMEOUT') or '', 'TESTED-PROJECT-NAME': path, 'TEST-DATA': serialize_list(_common.filter_out_by_keyword(test_data, 'AUTOUPDATED')), 'FORK-MODE': unit.get('TEST_FORK_MODE') or '', 'SPLIT-FACTOR': unit.get('TEST_SPLIT_FACTOR') or '', 'CUSTOM-DEPENDENCIES': ' '.join(get_values_list(unit, 'TEST_DEPENDS_VALUE')), 'TAG': serialize_list(get_values_list(unit, 'TEST_TAGS_VALUE')), 'SIZE': unit.get('TEST_SIZE_NAME') or '', 'REQUIREMENTS': serialize_list(get_values_list(unit, 'TEST_REQUIREMENTS_VALUE')), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), # JTEST/JTEST_FOR only 'MODULE_TYPE': unit.get('MODULE_TYPE'), 'UNITTEST_DIR': unit.get('UNITTEST_DIR') or '', 'JVM_ARGS': serialize_list(get_values_list(unit, 'JVM_ARGS_VALUE')), 'SYSTEM_PROPERTIES': props, 'TEST-CWD': test_cwd, 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', } data = dump_test(test_record) if data: unit.set_property(['DART_DATA', data])
def onfrom_sandbox(unit, *args): """ @usage: FROM_SANDBOX([FILE] resource_id OUT_[NOAUTO] <files from resource>) Downloads the archive from sandbox by resource number, unpack (if the FILE keyword is not specified), and add the files with the specified names to the assembly. If the files do not compile, then you need to use the parameter OUT_NOAUTO. What is Sandbox? - General-purpose distributed task execution system (internal service). """ unit.onsetup_from_sandbox(filter_out_by_keyword(list(args), 'AUTOUPDATED')) res_id = args[0] if res_id == "FILE": res_id = args[1] unit.onadd_check(["check.resource", res_id])
def onjava_test(unit, *args): assert unit.get('MODULE_TYPE') is not None if unit.get('MODULE_TYPE') == 'JTEST_FOR': if not unit.get('UNITTEST_DIR'): print >> sys.stderr, 'skip JTEST_FOR in {}: no args provided'.format( unit.path()) # TODO: configure error return # do not add such tests into dart path = strip_roots(unit.path()) test_data = get_values_list(unit, 'TEST_DATA_VALUE') test_data.append('arcadia/build/scripts') props = extract_java_system_properties( unit, get_values_list(unit, 'SYSTEM_PROPERTIES_VALUE')) for prop in props: if prop['type'] == 'file': test_data.append(prop['path'].replace('${ARCADIA_ROOT}', 'arcadia')) props = base64.b64encode(json.dumps(props, encoding='utf-8')) test_cwd = unit.get( 'TEST_CWD_VALUE') or '' # TODO: validate test_cwd value script_rel_path = 'testng.test' if unit.get( 'MODULE_TYPE') == 'TESTNG' else 'junit.test' test_record = { 'SOURCE-FOLDER-PATH': path, 'TEST-NAME': '-'.join( [os.path.basename(os.path.dirname(path)), os.path.basename(path)]), 'SCRIPT-REL-PATH': script_rel_path, 'TEST-TIMEOUT': unit.get('TEST_TIMEOUT') or '', 'TESTED-PROJECT-NAME': path, 'TEST-ENV': prepare_env(unit.get("TEST_ENV_VALUE")), # 'TEST-PRESERVE-ENV': 'da', 'TEST-DATA': serialize_list(_common.filter_out_by_keyword(test_data, 'AUTOUPDATED')), 'FORK-MODE': unit.get('TEST_FORK_MODE') or '', 'SPLIT-FACTOR': unit.get('TEST_SPLIT_FACTOR') or '', 'CUSTOM-DEPENDENCIES': ' '.join(get_values_list(unit, 'TEST_DEPENDS_VALUE')), 'TAG': serialize_list(get_values_list(unit, 'TEST_TAGS_VALUE')), 'SIZE': unit.get('TEST_SIZE_NAME') or '', 'REQUIREMENTS': serialize_list(get_values_list(unit, 'TEST_REQUIREMENTS_VALUE')), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), # JTEST/JTEST_FOR only 'MODULE_TYPE': unit.get('MODULE_TYPE'), 'UNITTEST_DIR': unit.get('UNITTEST_DIR') or '', 'JVM_ARGS': serialize_list(get_values_list(unit, 'JVM_ARGS_VALUE')), 'SYSTEM_PROPERTIES': props, 'TEST-CWD': test_cwd, 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', } data = dump_test(test_record) if data: unit.set_property(['DART_DATA', data])
def onadd_ytest(unit, *args): keywords = { "DEPENDS": -1, "DATA": -1, "TIMEOUT": 1, "FORK_MODE": 1, "SPLIT_FACTOR": 1, "FORK_SUBTESTS": 0, "FORK_TESTS": 0 } flat_args, spec_args = _common.sort_by_keywords(keywords, args) if flat_args[1] == "fuzz.test": unit.ondata("arcadia/fuzzing/{}/corpus.json".format( strip_roots(unit.path()))) elif flat_args[ 1] == "coverage.extractor" and not match_coverage_extractor_requirements( unit): # XXX # Current ymake implementation doesn't allow to call macro inside the 'when' body # that's why we add ADD_YTEST(coverage.extractor) to every PROGRAM entry and check requirements later return fork_mode = [] if 'FORK_SUBTESTS' in spec_args: fork_mode.append('subtests') if 'FORK_TESTS' in spec_args: fork_mode.append('tests') fork_mode = fork_mode or spec_args.get( 'FORK_MODE', []) or unit.get('TEST_FORK_MODE').split() fork_mode = ' '.join(fork_mode) if fork_mode else '' test_record = { 'TEST-NAME': flat_args[0], 'SCRIPT-REL-PATH': flat_args[1], 'TESTED-PROJECT-NAME': unit.name(), 'TESTED-PROJECT-FILENAME': unit.filename(), 'SOURCE-FOLDER-PATH': unit.resolve(unit.path()), 'BUILD-FOLDER-PATH': strip_roots(unit.path()), 'BINARY-PATH': strip_roots(os.path.join(unit.path(), unit.filename())), 'CUSTOM-DEPENDENCIES': ' '.join( spec_args.get('DEPENDS', []) + get_values_list(unit, 'TEST_DEPENDS_VALUE')), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), 'TEST-ENV': prepare_env(unit.get("TEST_ENV_VALUE")), # 'TEST-PRESERVE-ENV': 'da', 'TEST-DATA': serialize_list( _common.filter_out_by_keyword( spec_args.get('DATA', []) + get_values_list(unit, 'TEST_DATA_VALUE'), 'AUTOUPDATED')), 'TEST-TIMEOUT': ''.join(spec_args.get('TIMEOUT', [])) or unit.get('TEST_TIMEOUT') or '', 'FORK-MODE': fork_mode, 'SPLIT-FACTOR': ''.join(spec_args.get('SPLIT_FACTOR', [])) or unit.get('TEST_SPLIT_FACTOR') or '', 'SIZE': ''.join(spec_args.get('SIZE', [])) or unit.get('TEST_SIZE_NAME') or '', 'TAG': serialize_list( spec_args.get('TAG', []) + get_values_list(unit, 'TEST_TAGS_VALUE')), 'REQUIREMENTS': serialize_list( spec_args.get('REQUIREMENTS', []) + get_values_list(unit, 'TEST_REQUIREMENTS_VALUE')), 'TEST-CWD': unit.get('TEST_CWD_VALUE') or '', 'FUZZ-DICTS': serialize_list( spec_args.get('FUZZ_DICTS', []) + get_unit_list_variable(unit, 'FUZZ_DICTS_VALUE')), 'FUZZ-OPTS': serialize_list( spec_args.get('FUZZ_OPTS', []) + get_unit_list_variable(unit, 'FUZZ_OPTS_VALUE')), 'BLOB': unit.get('TEST_BLOB_DATA') or '', 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', } is_fuzz_test = flat_args[1] == 'fuzz.test' and unit.get('FUZZING') == 'yes' if is_fuzz_test: # use all cores if fuzzing requested test_record['REQUIREMENTS'] = serialize_list( filter( None, deserialize_list(test_record['REQUIREMENTS']) + ["cpu:all", "ram:all"])) data = dump_test(test_record, is_fuzz_test=is_fuzz_test) if data: unit.set_property(["DART_DATA", data]) save_in_file(unit.get('TEST_DART_OUT_FILE'), data)
def onjava_test(unit, *args): assert unit.get('MODULE_TYPE') is not None if unit.get('MODULE_TYPE') == 'JTEST_FOR': if not unit.get('UNITTEST_DIR'): ymake.report_configure_error( 'skip JTEST_FOR in {}: no args provided'.format(unit.path())) return java_cp_arg_type = unit.get('JAVA_CLASSPATH_CMD_TYPE_VALUE') or 'MANIFEST' if java_cp_arg_type not in ('MANIFEST', 'COMMAND_FILE', 'LIST'): ymake.report_configure_error( '{}: TEST_JAVA_CLASSPATH_CMD_TYPE({}) are invalid. Choose argument from MANIFEST, COMMAND_FILE or LIST)' .format(unit.path(), java_cp_arg_type)) return unit_path = unit.path() path = _common.strip_roots(unit_path) test_data = get_norm_paths(unit, 'TEST_DATA_VALUE') test_data.append('arcadia/build/scripts/run_junit.py') test_data.append('arcadia/build/scripts/unpacking_jtest_runner.py') data, data_files = get_canonical_test_resources(unit) test_data += data props, error_mgs = extract_java_system_properties( unit, get_values_list(unit, 'SYSTEM_PROPERTIES_VALUE')) if error_mgs: ymake.report_configure_error(error_mgs) return for prop in props: if prop['type'] == 'file': test_data.append(prop['path'].replace('${ARCADIA_ROOT}', 'arcadia')) props = base64.b64encode(json.dumps(props, encoding='utf-8')) test_cwd = unit.get( 'TEST_CWD_VALUE') or '' # TODO: validate test_cwd value if unit.get('MODULE_TYPE') == 'JUNIT5': script_rel_path = 'junit5.test' else: script_rel_path = 'junit.test' ymake_java_test = unit.get('YMAKE_JAVA_TEST') == 'yes' test_record = { 'SOURCE-FOLDER-PATH': path, 'TEST-NAME': '-'.join( [os.path.basename(os.path.dirname(path)), os.path.basename(path)]), 'SCRIPT-REL-PATH': script_rel_path, 'TEST-TIMEOUT': unit.get('TEST_TIMEOUT') or '', 'TESTED-PROJECT-NAME': path, 'TEST-ENV': prepare_env(unit.get("TEST_ENV_VALUE")), # 'TEST-PRESERVE-ENV': 'da', 'TEST-DATA': serialize_list( sorted(_common.filter_out_by_keyword(test_data, 'AUTOUPDATED'))), 'FORK-MODE': unit.get('TEST_FORK_MODE') or '', 'SPLIT-FACTOR': unit.get('TEST_SPLIT_FACTOR') or '', 'CUSTOM-DEPENDENCIES': ' '.join(get_values_list(unit, 'TEST_DEPENDS_VALUE')), 'TAG': serialize_list(_get_test_tags(unit)), 'SIZE': unit.get('TEST_SIZE_NAME') or '', 'REQUIREMENTS': serialize_list(get_values_list(unit, 'TEST_REQUIREMENTS_VALUE')), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), # JTEST/JTEST_FOR only 'MODULE_TYPE': unit.get('MODULE_TYPE'), 'UNITTEST_DIR': unit.get('UNITTEST_DIR') or '', 'JVM_ARGS': serialize_list(get_values_list(unit, 'JVM_ARGS_VALUE')), 'SYSTEM_PROPERTIES': props, 'TEST-CWD': test_cwd, 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', 'JAVA_CLASSPATH_CMD_TYPE': java_cp_arg_type, 'NO_JBUILD': 'yes' if ymake_java_test else 'no' } test_classpath_origins = unit.get('TEST_CLASSPATH_VALUE') if test_classpath_origins: test_record['TEST_CLASSPATH_ORIGINS'] = test_classpath_origins test_record['TEST_CLASSPATH'] = '${TEST_CLASSPATH_MANAGED}' elif ymake_java_test: test_record['TEST_CLASSPATH'] = '${DART_CLASSPATH}' test_record['TEST_CLASSPATH_DEPS'] = '${DART_CLASSPATH_DEPS}' if unit.get('UNITTEST_DIR'): test_record['TEST_JAR'] = '${UNITTEST_MOD}' else: test_record['TEST_JAR'] = '{}/{}.jar'.format( unit.get('MODDIR'), unit.get('REALPRJNAME')) data = dump_test(unit, test_record) if data: unit.set_property(['DART_DATA', data])
def onadd_ytest(unit, *args): keywords = { "DEPENDS": -1, "DATA": -1, "TIMEOUT": 1, "FORK_MODE": 1, "SPLIT_FACTOR": 1, "FORK_SUBTESTS": 0, "FORK_TESTS": 0 } flat_args, spec_args = _common.sort_by_keywords(keywords, args) test_data = sorted( _common.filter_out_by_keyword( spec_args.get('DATA', []) + get_norm_paths(unit, 'TEST_DATA_VALUE'), 'AUTOUPDATED')) if flat_args[1] == "fuzz.test": unit.ondata("arcadia/fuzzing/{}/corpus.json".format( get_norm_unit_path(unit))) elif flat_args[1] == "go.test": data, _ = get_canonical_test_resources(unit) test_data += data elif flat_args[ 1] == "coverage.extractor" and not match_coverage_extractor_requirements( unit): # XXX # Current ymake implementation doesn't allow to call macro inside the 'when' body # that's why we add ADD_YTEST(coverage.extractor) to every PROGRAM entry and check requirements later return elif flat_args[1] == "clang_tidy" and not unit.get("TIDY") == "yes": # Graph is not prepared return elif flat_args[1] == "no.test": return if flat_args[1] != "clang_tidy" and unit.get("TIDY") == "yes": # graph changed for clang_tidy tests return fork_mode = [] if 'FORK_SUBTESTS' in spec_args: fork_mode.append('subtests') if 'FORK_TESTS' in spec_args: fork_mode.append('tests') fork_mode = fork_mode or spec_args.get( 'FORK_MODE', []) or unit.get('TEST_FORK_MODE').split() fork_mode = ' '.join(fork_mode) if fork_mode else '' unit_path = get_norm_unit_path(unit) test_record = { 'TEST-NAME': flat_args[0], 'SCRIPT-REL-PATH': flat_args[1], 'TESTED-PROJECT-NAME': unit.name(), 'TESTED-PROJECT-FILENAME': unit.filename(), 'SOURCE-FOLDER-PATH': unit_path, # TODO get rid of BUILD-FOLDER-PATH 'BUILD-FOLDER-PATH': unit_path, 'BINARY-PATH': "{}/{}".format(unit_path, unit.filename()), 'GLOBAL-LIBRARY-PATH': unit.global_filename(), 'CUSTOM-DEPENDENCIES': ' '.join( spec_args.get('DEPENDS', []) + get_values_list(unit, 'TEST_DEPENDS_VALUE')), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), 'TEST-ENV': prepare_env(unit.get("TEST_ENV_VALUE")), # 'TEST-PRESERVE-ENV': 'da', 'TEST-DATA': serialize_list(test_data), 'TEST-TIMEOUT': ''.join(spec_args.get('TIMEOUT', [])) or unit.get('TEST_TIMEOUT') or '', 'FORK-MODE': fork_mode, 'SPLIT-FACTOR': ''.join(spec_args.get('SPLIT_FACTOR', [])) or unit.get('TEST_SPLIT_FACTOR') or '', 'SIZE': ''.join(spec_args.get('SIZE', [])) or unit.get('TEST_SIZE_NAME') or '', 'TAG': serialize_list(_get_test_tags(unit, spec_args)), 'REQUIREMENTS': serialize_list( spec_args.get('REQUIREMENTS', []) + get_values_list(unit, 'TEST_REQUIREMENTS_VALUE')), 'TEST-CWD': unit.get('TEST_CWD_VALUE') or '', 'FUZZ-DICTS': serialize_list( spec_args.get('FUZZ_DICTS', []) + get_unit_list_variable(unit, 'FUZZ_DICTS_VALUE')), 'FUZZ-OPTS': serialize_list( spec_args.get('FUZZ_OPTS', []) + get_unit_list_variable(unit, 'FUZZ_OPTS_VALUE')), 'YT-SPEC': serialize_list( spec_args.get('YT_SPEC', []) + get_unit_list_variable(unit, 'TEST_YT_SPEC_VALUE')), 'BLOB': unit.get('TEST_BLOB_DATA') or '', 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', 'TEST_IOS_DEVICE_TYPE': unit.get('TEST_IOS_DEVICE_TYPE_VALUE') or '', 'TEST_IOS_RUNTIME_TYPE': unit.get('TEST_IOS_RUNTIME_TYPE_VALUE') or '', 'ANDROID_APK_TEST_ACTIVITY': unit.get('ANDROID_APK_TEST_ACTIVITY_VALUE') or '', 'TEST_PARTITION': unit.get("TEST_PARTITION") or 'SEQUENTIAL', 'GO_BENCH_TIMEOUT': unit.get('GO_BENCH_TIMEOUT') or '', } if flat_args[1] == "go.bench": if "ya:run_go_benchmark" not in test_record["TAG"]: return else: test_record["TEST-NAME"] += "_bench" if flat_args[1] == 'fuzz.test' and unit.get('FUZZING') == 'yes': test_record['FUZZING'] = '1' # use all cores if fuzzing requested test_record['REQUIREMENTS'] = serialize_list( filter( None, deserialize_list(test_record['REQUIREMENTS']) + ["cpu:all", "ram:all"])) data = dump_test(unit, test_record) if data: unit.set_property(["DART_DATA", data]) save_in_file(unit.get('TEST_DART_OUT_FILE'), data)
def _dump_test(unit, test_type, test_files, timeout, test_dir, custom_deps, test_data, python_paths, split_factor, fork_mode, test_size, tags, requirements, binary_path='', old_pytest=False, test_cwd=None, runner_bin=None, yt_spec=None, data_files=None): if test_type == "PY_TEST": script_rel_path = "py.test" else: script_rel_path = test_type unit_path = unit.path() fork_test_files = unit.get('FORK_TEST_FILES_MODE') fork_mode = ' '.join(fork_mode) if fork_mode else '' use_arcadia_python = unit.get('USE_ARCADIA_PYTHON') if test_cwd: test_cwd = test_cwd.replace("$TEST_CWD_VALUE", "").replace('"MACRO_CALLS_DELIM"', "").strip() test_name = os.path.basename(binary_path) test_record = { 'TEST-NAME': os.path.splitext(test_name)[0], 'TEST-TIMEOUT': timeout, 'SCRIPT-REL-PATH': script_rel_path, 'TESTED-PROJECT-NAME': test_name, 'SOURCE-FOLDER-PATH': test_dir, 'CUSTOM-DEPENDENCIES': " ".join(custom_deps), 'TEST-ENV': prepare_env(unit.get("TEST_ENV_VALUE")), # 'TEST-PRESERVE-ENV': 'da', 'TEST-DATA': serialize_list( sorted(_common.filter_out_by_keyword(test_data, 'AUTOUPDATED'))), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), 'SPLIT-FACTOR': split_factor, 'TEST_PARTITION': unit.get('TEST_PARTITION') or 'SEQUENTIAL', 'FORK-MODE': fork_mode, 'FORK-TEST-FILES': fork_test_files, 'TEST-FILES': serialize_list(test_files), 'SIZE': test_size, 'TAG': serialize_list(tags), 'REQUIREMENTS': serialize_list(requirements), 'USE_ARCADIA_PYTHON': use_arcadia_python or '', 'OLD_PYTEST': 'yes' if old_pytest else 'no', 'PYTHON-PATHS': serialize_list(python_paths), 'TEST-CWD': test_cwd or '', 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', 'BUILD-FOLDER-PATH': _common.strip_roots(unit_path), 'BLOB': unit.get('TEST_BLOB_DATA') or '', 'CANONIZE_SUB_PATH': unit.get('CANONIZE_SUB_PATH') or '', } if binary_path: test_record['BINARY-PATH'] = _common.strip_roots(binary_path) if runner_bin: test_record['TEST-RUNNER-BIN'] = runner_bin if yt_spec: test_record['YT-SPEC'] = serialize_list(yt_spec) data = dump_test(unit, test_record) if data: unit.set_property(["DART_DATA", data]) save_in_file(unit.get('TEST_DART_OUT_FILE'), data)
def _dump_test( unit, test_type, test_files, timeout, test_dir, custom_deps, test_data, python_paths, split_factor, fork_mode, test_size, tags, requirements, binary_path='', old_pytest=False, test_cwd=None, ): if test_type == "PY_TEST": script_rel_path = "py.test" elif test_type == "FLEUR": script_rel_path = "ytest.py" elif test_type == "PEP8": script_rel_path = "py.test.pep8" elif test_type == "PY_FLAKES": script_rel_path = "py.test.flakes" else: script_rel_path = test_type fork_test_files = unit.get('FORK_TEST_FILES_MODE') fork_mode = ' '.join(fork_mode) if fork_mode else '' use_arcadia_python = unit.get('USE_ARCADIA_PYTHON') if test_cwd: test_cwd = test_cwd.replace("$TEST_CWD_VALUE", "").replace('"MACRO_CALLS_DELIM"', "").strip() if binary_path: if fork_test_files == 'on': tests = test_files else: tests = [os.path.basename(binary_path)] else: tests = test_files for test_name in tests: test_record = { 'TEST-NAME': os.path.splitext(test_name)[0], 'TEST-TIMEOUT': timeout, 'SCRIPT-REL-PATH': script_rel_path, 'TESTED-PROJECT-NAME': test_name, 'SOURCE-FOLDER-PATH': test_dir, 'CUSTOM-DEPENDENCIES': " ".join(custom_deps), 'TEST-DATA': serialize_list( _common.filter_out_by_keyword(test_data, 'AUTOUPDATED')), 'SPLIT-FACTOR': split_factor, 'FORK-MODE': fork_mode, 'FORK-TEST-FILES': fork_test_files, 'TEST-FILES': serialize_list(tests), 'SIZE': test_size, 'TAG': serialize_list(tags), 'REQUIREMENTS': serialize_list(requirements), 'USE_ARCADIA_PYTHON': use_arcadia_python or '', 'OLD_PYTEST': 'yes' if old_pytest else 'no', 'PYTHON-PATHS': serialize_list(python_paths), 'TEST-CWD': test_cwd or '', 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', 'BUILD-FOLDER-PATH': strip_roots(unit.path()), 'BLOB': unit.get('TEST_BLOB_DATA') or '', } if binary_path: test_record['BINARY-PATH'] = strip_roots(binary_path) data = dump_test(test_record) if data: unit.set_property(["DART_DATA", data]) save_in_file(unit.get('TEST_DART_OUT_FILE'), data)
def _dump_test( unit, test_type, test_files, timeout, test_dir, custom_deps, test_data, python_paths, split_factor, fork_mode, test_size, tags, requirements, binary_path='', old_pytest=False, test_cwd=None, ): if test_type == "PY_TEST": script_rel_path = "py.test" elif test_type == "FLEUR": script_rel_path = "ytest.py" elif test_type == "PEP8": script_rel_path = "py.test.pep8" elif test_type == "PY_FLAKES": script_rel_path = "py.test.flakes" else: script_rel_path = test_type fork_test_files = unit.get('FORK_TEST_FILES_MODE') fork_mode = ' '.join(fork_mode) if fork_mode else '' use_arcadia_python = unit.get('USE_ARCADIA_PYTHON') if test_cwd: test_cwd = test_cwd.replace("$TEST_CWD_VALUE", "").replace('"MACRO_CALLS_DELIM"', "").strip() if binary_path: if fork_test_files == 'on': tests = test_files else: tests = [os.path.basename(binary_path)] else: tests = test_files for test_name in tests: test_record = { 'TEST-NAME': os.path.splitext(test_name)[0], 'TEST-TIMEOUT': timeout, 'SCRIPT-REL-PATH': script_rel_path, 'TESTED-PROJECT-NAME': test_name, 'SOURCE-FOLDER-PATH': test_dir, 'CUSTOM-DEPENDENCIES': " ".join(custom_deps), 'TEST-DATA': serialize_list(_common.filter_out_by_keyword(test_data, 'AUTOUPDATED')), 'TEST-RECIPES': prepare_recipes(unit.get("TEST_RECIPES_VALUE")), 'SPLIT-FACTOR': split_factor, 'FORK-MODE': fork_mode, 'FORK-TEST-FILES': fork_test_files, 'TEST-FILES': serialize_list(tests), 'SIZE': test_size, 'TAG': serialize_list(tags), 'REQUIREMENTS': serialize_list(requirements), 'USE_ARCADIA_PYTHON': use_arcadia_python or '', 'OLD_PYTEST': 'yes' if old_pytest else 'no', 'PYTHON-PATHS': serialize_list(python_paths), 'TEST-CWD': test_cwd or '', 'SKIP_TEST': unit.get('SKIP_TEST_VALUE') or '', 'BUILD-FOLDER-PATH': strip_roots(unit.path()), 'BLOB': unit.get('TEST_BLOB_DATA') or '', } if binary_path: test_record['BINARY-PATH'] = strip_roots(binary_path) data = dump_test(test_record) if data: unit.set_property(["DART_DATA", data]) save_in_file(unit.get('TEST_DART_OUT_FILE'), data)
def onfrom_sandbox(unit, *args): unit.onsetup_from_sandbox(filter_out_by_keyword(list(args), 'AUTOUPDATED')) res_id = args[0] if res_id == "FILE": res_id = args[1] unit.onadd_check(["check.resource", res_id])