-
Notifications
You must be signed in to change notification settings - Fork 33
/
test_run.py
executable file
·56 lines (42 loc) · 1.72 KB
/
test_run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/env python3
# Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause
import json
import subprocess
import platform
import pathlib
import unittest
from argparse import ArgumentParser, RawTextHelpFormatter
from textwrap import dedent
PARENT_DIR = pathlib.Path(__file__).parent.resolve()
class TestsContainer(unittest.TestCase):
pass
def make_test_function(command):
def test(self):
subprocess.run(command, shell=True, check=True)
return test
def retrieve_test_list(config_file=f"{PARENT_DIR}/.buildkite/test_description.json"):
with open(config_file) as jsonFile:
test_list = json.load(jsonFile)
jsonFile.close()
return test_list
if __name__ == "__main__":
help_text = dedent(
"""
This script allows running all the tests at once on the local machine.
The tests "test_benchmark.py" and "test_commit_format.py" work properly
on the local machine only when the environment variables REMOTE and
BASE_BRANCH are set. Otherwise the default values are "origin" for the
remote name of the upstream repository and "main" for the name of the
base branch, and these tests may not work as expected.
"""
)
parser = ArgumentParser(description=help_text, formatter_class=RawTextHelpFormatter)
parser.parse_args()
test_config = retrieve_test_list()
for test in test_config["tests"]:
command = test["command"]
command = command.replace("{target_platform}", platform.machine())
test_func = make_test_function(command)
setattr(TestsContainer, "test_{}".format(test["test_name"]), test_func)
unittest.main(verbosity=2)