summaryrefslogtreecommitdiff
path: root/CC/test
diff options
context:
space:
mode:
Diffstat (limited to 'CC/test')
-rw-r--r--CC/test/RULES311
-rw-r--r--CC/test/TARGETS1
-rwxr-xr-xCC/test/test_runner.py69
3 files changed, 0 insertions, 381 deletions
diff --git a/CC/test/RULES b/CC/test/RULES
deleted file mode 100644
index 3821339..0000000
--- a/CC/test/RULES
+++ /dev/null
@@ -1,311 +0,0 @@
-{ "test":
- { "doc": ["A test written in C++"]
- , "tainted": ["test"]
- , "target_fields": ["srcs", "private-hdrs", "private-deps", "data"]
- , "string_fields":
- [ "name"
- , "args"
- , "stage"
- , "pure C"
- , "private-defines"
- , "private-cflags"
- , "private-ldflags"
- ]
- , "config_vars":
- [ "ARCH"
- , "HOST_ARCH"
- , "CC"
- , "CXX"
- , "CFLAGS"
- , "CXXFLAGS"
- , "ADD_CFLAGS"
- , "ADD_CXXFLAGS"
- , "ENV"
- , "TEST_ENV"
- , "CC_TEST_LAUNCHER"
- ]
- , "implicit":
- {"defaults": [["./", "..", "defaults"]], "runner": ["test_runner.py"]}
- , "field_doc":
- { "name":
- [ "The name of the test"
- , ""
- , "Used to name the test binary as well as for staging the test result"
- ]
- , "args": ["Command line arguments for the test binary"]
- , "srcs": ["The sources of the test binary"]
- , "private-hdrs":
- [ "Any additional header files that need to be present when compiling"
- , "the test binary."
- ]
- , "private-defines":
- [ "List of defines set for source files local to this target."
- , "Each list entry will be prepended by \"-D\"."
- ]
- , "private-cflags":
- ["List of compile flags set for source files local to this target."]
- , "private-ldflags":
- [ "Additional linker flags for linking external libraries (not built"
- , "by this tool, typically system libraries)."
- ]
- , "stage":
- [ "The logical location of all header and source files."
- , "Individual directory components are joined with \"/\"."
- ]
- , "data": ["Any files the test binary needs access to when running"]
- }
- , "config_doc":
- { "CC": ["The name of the C compiler to be used."]
- , "CXX": ["The name of the C++ compiler to be used."]
- , "CFLAGS":
- [ "The flags for CC to be used instead of the default ones"
- , "taken from the [\"CC\", \"defaults\"] target"
- ]
- , "CXXFLAGS":
- [ "The flags for CXX to be used instead of the default ones"
- , "taken from the [\"CC\", \"defaults\"] target"
- ]
- , "ADD_CFLAGS":
- [ "The flags to add to the default ones for CC"
- , "taken from the [\"CC\", \"defaults\"] target"
- ]
- , "ADD_CXXFLAGS":
- [ "The flags to add to the default ones for CXX"
- , "taken from the [\"CC\", \"defaults\"] target"
- ]
- , "ENV": ["The environment for any action generated."]
- , "TEST_ENV": ["The environment for executing the test runner."]
- , "CC_TEST_LAUNCHER":
- [ "List of strings representing the launcher that is prepend to the"
- , "command line for running the test binary."
- ]
- }
- , "artifacts_doc":
- [ "result: the result of this test (\"PASS\" or \"FAIL\"); useful for"
- , " generating test reports."
- , "stdout/stderr: Any output the invocation of the test binary produced on"
- , " the respective file descriptor"
- , "time-start/time-stop: The time (decimally coded) in seconds since the"
- , " epoch when the test invocation started and ended."
- ]
- , "runfiles_doc":
- [ "A tree consisting of the artifacts staged at the name of the test."
- , "As the built-in \"install\" rule only takes the runfiles of its"
- , "\"private-deps\" argument, this gives an easy way of defining test"
- , "suites."
- ]
- , "imports":
- { "artifacts": ["./", "../..", "field_artifacts"]
- , "runfiles": ["./", "../..", "field_runfiles"]
- , "compile-deps": ["./", "..", "compile-deps"]
- , "compile-args-deps": ["./", "..", "compile-args-deps"]
- , "link-deps": ["./", "..", "link-deps"]
- , "link-args-deps": ["./", "..", "link-args-deps"]
- , "binary": ["./", "..", "bin artifact"]
- , "host transition": ["transitions", "for host"]
- }
- , "config_transitions":
- { "defaults": [{"type": "CALL_EXPRESSION", "name": "host transition"}]
- , "private-deps": [{"type": "CALL_EXPRESSION", "name": "host transition"}]
- , "data": [{"type": "CALL_EXPRESSION", "name": "host transition"}]
- }
- , "expression":
- { "type": "let*"
- , "bindings":
- [ [ "name"
- , { "type": "assert_non_empty"
- , "msg": "A non-empty name has to be provided for binaries"
- , "$1": {"type": "join", "$1": {"type": "FIELD", "name": "name"}}
- }
- ]
- , ["pure C", {"type": "FIELD", "name": "pure C"}]
- , [ "stage"
- , { "type": "join"
- , "separator": "/"
- , "$1": {"type": "FIELD", "name": "stage"}
- }
- ]
- , [ "srcs"
- , { "type": "to_subdir"
- , "subdir": {"type": "var", "name": "stage"}
- , "$1":
- { "type": "let*"
- , "bindings": [["fieldname", "srcs"]]
- , "body": {"type": "CALL_EXPRESSION", "name": "artifacts"}
- }
- }
- ]
- , [ "private-hdrs"
- , { "type": "to_subdir"
- , "subdir": {"type": "var", "name": "stage"}
- , "$1":
- { "type": "let*"
- , "bindings": [["fieldname", "private-hdrs"]]
- , "body": {"type": "CALL_EXPRESSION", "name": "artifacts"}
- }
- }
- ]
- , ["host-trans", {"type": "CALL_EXPRESSION", "name": "host transition"}]
- , ["defaults-transition", {"type": "var", "name": "host-trans"}]
- , ["deps-transition", {"type": "var", "name": "host-trans"}]
- , ["deps-fieldnames", ["private-deps"]]
- , ["compile-deps", {"type": "CALL_EXPRESSION", "name": "compile-deps"}]
- , [ "compile-args"
- , { "type": "++"
- , "$1":
- [ { "type": "foreach"
- , "var": "def"
- , "range": {"type": "FIELD", "name": "private-defines"}
- , "body":
- {"type": "join", "$1": ["-D", {"type": "var", "name": "def"}]}
- }
- , {"type": "FIELD", "name": "private-cflags"}
- , {"type": "CALL_EXPRESSION", "name": "compile-args-deps"}
- ]
- }
- ]
- , ["link-deps", {"type": "CALL_EXPRESSION", "name": "link-deps"}]
- , [ "link-args"
- , { "type": "++"
- , "$1":
- [ {"type": "CALL_EXPRESSION", "name": "link-args-deps"}
- , {"type": "FIELD", "name": "private-ldflags"}
- ]
- }
- ]
- , ["binary", {"type": "CALL_EXPRESSION", "name": "binary"}]
- , [ "staged test binary"
- , { "type": "map_union"
- , "$1":
- { "type": "foreach_map"
- , "range": {"type": "var", "name": "binary"}
- , "var_val": "binary"
- , "body":
- { "type": "singleton_map"
- , "key": "test"
- , "value": {"type": "var", "name": "binary"}
- }
- }
- }
- ]
- , [ "runner"
- , { "type": "map_union"
- , "$1":
- { "type": "foreach"
- , "var": "runner"
- , "range": {"type": "FIELD", "name": "runner"}
- , "body":
- { "type": "map_union"
- , "$1":
- { "type": "foreach"
- , "var": "runner"
- , "range":
- { "type": "values"
- , "$1":
- { "type": "DEP_ARTIFACTS"
- , "dep": {"type": "var", "name": "runner"}
- }
- }
- , "body":
- { "type": "singleton_map"
- , "key": "runner"
- , "value": {"type": "var", "name": "runner"}
- }
- }
- }
- }
- }
- ]
- , [ "test-args"
- , { "type": "singleton_map"
- , "key": "test-args.json"
- , "value":
- { "type": "BLOB"
- , "data":
- { "type": "json_encode"
- , "$1": {"type": "FIELD", "name": "args", "default": []}
- }
- }
- }
- ]
- , [ "test-launcher"
- , { "type": "singleton_map"
- , "key": "test-launcher.json"
- , "value":
- { "type": "BLOB"
- , "data":
- { "type": "json_encode"
- , "$1":
- {"type": "var", "name": "CC_TEST_LAUNCHER", "default": []}
- }
- }
- }
- ]
- , [ "data"
- , { "type": "let*"
- , "bindings":
- [ ["fieldname", "data"]
- , ["transition", {"type": "var", "name": "deps-transition"}]
- ]
- , "body":
- { "type": "map_union"
- , "$1":
- [ {"type": "CALL_EXPRESSION", "name": "runfiles"}
- , {"type": "CALL_EXPRESSION", "name": "artifacts"}
- ]
- }
- }
- ]
- , [ "test-name"
- , { "type": "join"
- , "separator": "/"
- , "$1":
- [{"type": "var", "name": "stage"}, {"type": "var", "name": "name"}]
- }
- ]
- , [ "test-results"
- , { "type": "ACTION"
- , "outs": ["result", "stdout", "stderr", "time-start", "time-stop"]
- , "inputs":
- { "type": "map_union"
- , "$1":
- [ { "type": "to_subdir"
- , "subdir": "work"
- , "$1": {"type": "var", "name": "data"}
- }
- , {"type": "var", "name": "runner"}
- , {"type": "var", "name": "test-args"}
- , {"type": "var", "name": "test-launcher"}
- , {"type": "var", "name": "staged test binary"}
- ]
- }
- , "cmd": ["./runner"]
- , "env":
- { "type": "var"
- , "name": "TEST_ENV"
- , "default": {"type": "empty_map"}
- }
- , "may_fail": ["test"]
- , "fail_message":
- { "type": "join"
- , "$1":
- ["CC test ", {"type": "var", "name": "test-name"}, " failed"]
- }
- }
- ]
- , [ "runfiles"
- , { "type": "singleton_map"
- , "key": {"type": "var", "name": "name"}
- , "value":
- {"type": "TREE", "$1": {"type": "var", "name": "test-results"}}
- }
- ]
- ]
- , "body":
- { "type": "RESULT"
- , "artifacts": {"type": "var", "name": "test-results"}
- , "runfiles": {"type": "var", "name": "runfiles"}
- }
- }
- }
-}
diff --git a/CC/test/TARGETS b/CC/test/TARGETS
deleted file mode 100644
index 0967ef4..0000000
--- a/CC/test/TARGETS
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/CC/test/test_runner.py b/CC/test/test_runner.py
deleted file mode 100755
index 0647621..0000000
--- a/CC/test/test_runner.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2022 Huawei Cloud Computing Technology Co., Ltd.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import json
-import os
-import subprocess
-import time
-
-time_start = time.time()
-time_stop = 0
-result = "UNKNOWN"
-stderr = ""
-stdout = ""
-
-
-def dump_results():
- with open("result", "w") as f:
- f.write("%s\n" % (result, ))
- with open("time-start", "w") as f:
- f.write("%d\n" % (time_start, ))
- with open("time-stop", "w") as f:
- f.write("%d\n" % (time_stop, ))
- with open("stdout", "w") as f:
- f.write("%s\n" % (stdout, ))
- with open("stderr", "w") as f:
- f.write("%s\n" % (stderr, ))
-
-
-dump_results()
-
-TEMP_DIR = os.path.realpath("scratch")
-os.makedirs(TEMP_DIR, exist_ok=True)
-
-WORK_DIR = os.path.realpath("work")
-os.makedirs(WORK_DIR, exist_ok=True)
-
-ENV = dict(os.environ, TEST_TMPDIR=TEMP_DIR)
-
-with open('test-launcher.json') as f:
- test_launcher = json.load(f)
-
-with open('test-args.json') as f:
- test_args = json.load(f)
-
-ret = subprocess.run(test_launcher + ["../test"] + test_args,
- cwd=WORK_DIR,
- env=ENV,
- capture_output=True)
-
-time_stop = time.time()
-result = "PASS" if ret.returncode == 0 else "FAIL"
-stdout = ret.stdout.decode("utf-8")
-stderr = ret.stderr.decode("utf-8")
-
-dump_results()
-
-if result != "PASS": exit(1)