Add basic pledge/unveil sandbox on OpenBSD
[tinc] / test / integration / testlib / path.py
1 """Paths to compiled binaries, and a few other important environment variables."""
2
3 import os
4 import pathlib
5 import sys
6
7 env = {
8     "TEST_NAME": os.getenv("TEST_NAME"),
9     "TINC_PATH": os.getenv("TINC_PATH"),
10     "TINCD_PATH": os.getenv("TINCD_PATH"),
11     "SPLICE_PATH": os.getenv("SPLICE_PATH"),
12     "PYTHON_PATH": os.getenv("PYTHON_PATH"),
13     "SPTPS_TEST_PATH": os.getenv("SPTPS_TEST_PATH"),
14     "SPTPS_KEYPAIR_PATH": os.getenv("SPTPS_KEYPAIR_PATH"),
15 }
16
17 # Not strictly necessary, used for better autocompletion and search by reference.
18 TEST_NAME = str(env["TEST_NAME"])
19 TINC_PATH = str(env["TINC_PATH"])
20 TINCD_PATH = str(env["TINCD_PATH"])
21 SPLICE_PATH = str(env["SPLICE_PATH"])
22 PYTHON_PATH = str(env["PYTHON_PATH"])
23 SPTPS_TEST_PATH = str(env["SPTPS_TEST_PATH"])
24 SPTPS_KEYPAIR_PATH = str(env["SPTPS_KEYPAIR_PATH"])
25
26 PYTHON_CMD = "runpython" if "meson.exe" in PYTHON_PATH.lower() else ""
27 PYTHON_INTERPRETER = f"{PYTHON_PATH} {PYTHON_CMD}".rstrip()
28
29
30 def _check() -> bool:
31     """Basic sanity checks on passed environment variables."""
32     for key, val in env.items():
33         if not val or (key != "TEST_NAME" and not os.path.isfile(val)):
34             return False
35     return True
36
37
38 if not _check():
39     MSG = """
40 Please run tests using
41     $ meson test -C build
42 or
43     $ ninja -C build test
44 """
45     print(MSG, file=sys.stderr)
46     sys.exit(1)
47
48 # Current working directory
49 CWD = os.getcwd()
50
51 # Path to the testing library
52 TESTLIB_ROOT = pathlib.Path(__file__).parent
53
54 # Source root for the integration test suite
55 TEST_SRC_ROOT = TESTLIB_ROOT.parent.resolve()
56
57 _wd = os.path.join(CWD, "wd")
58 os.makedirs(_wd, exist_ok=True)
59
60 # Useful when running tests manually
61 _gitignore = os.path.join(_wd, ".gitignore")
62 if not os.path.exists(_gitignore):
63     with open(_gitignore, "w", encoding="utf-8") as f:
64         f.write("*")
65
66 # Working directory for this test
67 TEST_WD = os.path.join(_wd, TEST_NAME)