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