|
| 1 | +import argparse |
1 | 2 | import logging |
2 | 3 | import os |
3 | 4 | import sys |
4 | | -from typing import cast |
5 | 5 |
|
6 | 6 | import jsons |
7 | 7 | import pytest |
@@ -58,25 +58,56 @@ def run_tests(host, port, service_address, test_methods): |
58 | 58 |
|
59 | 59 |
|
60 | 60 | def main(): |
61 | | - if not os.getenv("ENOCHECKER_TEST_CHECKER_ADDRESS"): |
| 61 | + parser = argparse.ArgumentParser( |
| 62 | + prog="enochecker_test", |
| 63 | + description="Utility for testing checkers that implement the enochecker API", |
| 64 | + ) |
| 65 | + parser.add_argument( |
| 66 | + "-a", |
| 67 | + "--checker-address", |
| 68 | + help="The address on which the checker is listening (defaults to the ENOCHECKER_TEST_CHECKER_ADDRESS environment variable)", |
| 69 | + default=os.environ.get("ENOCHECKER_TEST_CHECKER_ADDRESS"), |
| 70 | + ) |
| 71 | + parser.add_argument( |
| 72 | + "-p", |
| 73 | + "--checker-port", |
| 74 | + help="The port on which the checker is listening (defaults to ENOCHECKER_TEST_CHECKER_PORT environment variable)", |
| 75 | + choices=range(1, 65536), |
| 76 | + metavar="{1..65535}", |
| 77 | + type=int, |
| 78 | + default=os.environ.get("ENOCHECKER_TEST_CHECKER_PORT"), |
| 79 | + ) |
| 80 | + parser.add_argument( |
| 81 | + "-A", |
| 82 | + "--service-address", |
| 83 | + help="The address on which the service is listening (defaults to ENOCHECKER_TEST_SERVICE_ADDRESS environment variable)", |
| 84 | + default=os.environ.get("ENOCHECKER_TEST_SERVICE_ADDRESS"), |
| 85 | + ) |
| 86 | + parser.add_argument( |
| 87 | + "testcase", |
| 88 | + help="Specify the tests that should be run in the syntax expected by pytest, e.g. test_getflag. If no test is specified, all tests will be run.", |
| 89 | + nargs="*", |
| 90 | + ) |
| 91 | + |
| 92 | + args = parser.parse_args() |
| 93 | + |
| 94 | + if not args.checker_address: |
| 95 | + parser.print_usage() |
62 | 96 | raise Exception( |
63 | 97 | "Missing enochecker address, please set the ENOCHECKER_TEST_CHECKER_ADDRESS environment variable" |
64 | 98 | ) |
65 | | - if not os.getenv("ENOCHECKER_TEST_CHECKER_PORT"): |
| 99 | + if not args.checker_port: |
| 100 | + parser.print_usage() |
66 | 101 | raise Exception( |
67 | 102 | "Missing enochecker port, please set the ENOCHECKER_TEST_CHECKER_PORT environment variable" |
68 | 103 | ) |
69 | | - if not os.getenv("ENOCHECKER_TEST_SERVICE_ADDRESS"): |
| 104 | + if not args.service_address: |
| 105 | + parser.print_usage() |
70 | 106 | raise Exception( |
71 | 107 | "Missing service address, please set the ENOCHECKER_TEST_SERVICE_ADDRESS environment variable" |
72 | 108 | ) |
73 | | - host = os.getenv("ENOCHECKER_TEST_CHECKER_ADDRESS") |
74 | | - _service_address = os.getenv("ENOCHECKER_TEST_SERVICE_ADDRESS") |
75 | | - try: |
76 | | - port_str = os.getenv("ENOCHECKER_TEST_CHECKER_PORT") |
77 | | - port = int(cast(str, port_str)) |
78 | | - except ValueError: |
79 | | - raise Exception("Invalid number in ENOCHECKER_TEST_PORT") |
80 | 109 |
|
81 | 110 | logging.basicConfig(level=logging.INFO) |
82 | | - run_tests(host, port, _service_address, sys.argv[1:]) |
| 111 | + run_tests( |
| 112 | + args.checker_address, args.checker_port, args.service_address, args.testcase |
| 113 | + ) |
0 commit comments