Пример #1
0
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)
Пример #2
0
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])
Пример #3
0
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])
Пример #4
0
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])
Пример #5
0
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)
Пример #6
0
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])
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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])