import json from library.python.testing.custom_linter_util import linter_params from yatest.common import work_path SOURCE_ROOT = "TEST_SOURCE_ROOT" PROJECT_PATH = "TEST_PROJECT_PATH" OUTPUT_PATH = "TEST_OUTPUT_PATH" REPORT_FILE = "TEST_REPORT_FILE" LINT_NAME = "important-lint" DEPS = { "dep1": "/path/to/dep1", "dep2": "/path/to/dep2", } GLOBAL_RESOURCES = { "TOOL1_GLOBAL_RESOURCES": "/path/to/resource1", "TOOL2_GLOBAL_RESOURCES": "/path/to/resource2", } CONFIGS = ["path/to/config1", "path/to/config2"] EXTRA_PARAMS = { "var1": "val1", "var2": "val2", } FILES = ["file1.cpp", "file2.cpp"] EXPECTED = linter_params.LinterArgs( source_root=SOURCE_ROOT, project_path=PROJECT_PATH, output_path=OUTPUT_PATH, report_file=REPORT_FILE, lint_name=LINT_NAME, depends=DEPS, global_resources=GLOBAL_RESOURCES, configs=CONFIGS, extra_params=EXTRA_PARAMS, files=FILES, ) def test_cmd_line_params(): raw_args = [ "--source-root", SOURCE_ROOT, "--project-path", PROJECT_PATH, "--output-path", OUTPUT_PATH, "--report-file", REPORT_FILE, "--lint-name", LINT_NAME, ] for rel, abs in DEPS.items(): raw_args += ["--depends", ":".join([rel, abs])] for var, path in GLOBAL_RESOURCES.items(): raw_args += ["--global-resource", ":".join([var, path])] for cfg in CONFIGS: raw_args += ["--config", cfg] for var, val in EXTRA_PARAMS.items(): raw_args += ["--extra-param", "=".join([var, val])] raw_args += FILES got = linter_params.get_params(raw_args) assert got == EXPECTED def test_json_params(): params_file = work_path("params.josn") params = { "source_root": SOURCE_ROOT, "project_path": PROJECT_PATH, "output_path": OUTPUT_PATH, "report_file": REPORT_FILE, "lint_name": LINT_NAME, "depends": DEPS, "global_resources": GLOBAL_RESOURCES, "configs": CONFIGS, "extra_params": EXTRA_PARAMS, "files": FILES, } with open(params_file, "w") as f: json.dump(params, f) got = linter_params.get_params(["--params", params_file]) assert got == EXPECTED