From 53ca9245145536c62e1cff0b032ddf41f2a95a84 Mon Sep 17 00:00:00 2001 From: Alberto Sartori Date: Tue, 4 Jun 2024 11:49:04 +0200 Subject: ["test_rules", "test_case"]: add config vars to be propagated to the runner The config vars ENV, ARCH, HOST_ARCH, TARGET_ARCH, BUILD_ARCH, OS have been added. This allows to test the rules with different configurations and/or set required values via the "defaults" target of the rules under testing. --- tests/test_rules/RULES | 33 ++++++++++++++++++++++++++++++++- tests/test_rules/test_runner.py | 3 ++- 2 files changed, 34 insertions(+), 2 deletions(-) (limited to 'tests/test_rules') diff --git a/tests/test_rules/RULES b/tests/test_rules/RULES index f53efba..69fe99d 100644 --- a/tests/test_rules/RULES +++ b/tests/test_rules/RULES @@ -1,5 +1,11 @@ { "test_case": - { "doc": ["Define a test case for rule tests."] + { "doc": + [ "Define a test case for rule tests." + , "The config variables \"ENV\", \"ARCH\", \"HOST_ARCH\", \"TARGET_ARCH\"," + , "\"BUILD_ARCH\", \"OS\" are collected in a file named \"conf_vars.json\"." + , "The test runner will pass that file as argument to \"-c\" to the \"just\"" + , "binary, which is internally called." + ] , "string_fields": ["name", "libs", "targets", "asserts"] , "target_fields": ["data"] , "field_doc": @@ -24,6 +30,8 @@ ["The directory that contains the project with the targets to test."] } , "tainted": ["test"] + , "config_vars": + ["ENV", "ARCH", "HOST_ARCH", "TARGET_ARCH", "BUILD_ARCH", "OS"] , "implicit": { "runner": ["test_runner.py"] , "rules": [["@", "test-rules", "", "tree"]] @@ -165,6 +173,28 @@ } } ] + , [ "conf_vars" + , { "type": "singleton_map" + , "key": "conf_vars.json" + , "value": + { "type": "BLOB" + , "data": + { "type": "json_encode" + , "$1": + { "type": "env" + , "vars": + [ "ENV" + , "ARCH" + , "HOST_ARCH" + , "TARGET_ARCH" + , "BUILD_ARCH" + , "OS" + ] + } + } + } + } + ] , [ "results" , { "type": "ACTION" , "inputs": @@ -178,6 +208,7 @@ , {"type": "var", "name": "repos"} , {"type": "var", "name": "work"} , {"type": "var", "name": "config"} + , {"type": "var", "name": "conf_vars"} ] } , "outs": ["stdout", "stderr", "result", "time-start", "time-stop"] diff --git a/tests/test_rules/test_runner.py b/tests/test_rules/test_runner.py index 6fd2d8c..5c0d129 100755 --- a/tests/test_rules/test_runner.py +++ b/tests/test_rules/test_runner.py @@ -53,7 +53,8 @@ for t in config.get('targets', []): should_fail = t[0] == "-" ret = subprocess.run([ "./bin/just", "install", "--local-build-root", "./build_root", "-C", - "repos.json", "-o", "/".join(["./outs", target]), target + "repos.json", "-o", "/".join(["./outs", target]), + "-c", "conf_vars.json", target ], capture_output=True) success = ret.returncode != 0 if should_fail else ret.returncode == 0 -- cgit v1.2.3