Major fixes and new features
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""Test cases that run tests as subprocesses."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
base_dir = os.path.join(os.path.dirname(__file__), "..", "..")
|
||||
|
||||
|
||||
class TestExternal(unittest.TestCase):
|
||||
# TODO: Get this to work on Windows.
|
||||
# (Or don't. It is probably not a good use of time.)
|
||||
@unittest.skipIf(sys.platform.startswith("win"), "rt tests don't work on windows")
|
||||
def test_c_unit_test(self) -> None:
|
||||
"""Run C unit tests in a subprocess."""
|
||||
# Build Google Test, the C++ framework we use for testing C code.
|
||||
# The source code for Google Test is copied to this repository.
|
||||
cppflags: list[str] = []
|
||||
env = os.environ.copy()
|
||||
if sys.platform == "darwin":
|
||||
cppflags += ["-mmacosx-version-min=10.10", "-stdlib=libc++"]
|
||||
env["CPPFLAGS"] = " ".join(cppflags)
|
||||
subprocess.check_call(
|
||||
["make", "libgtest.a"],
|
||||
env=env,
|
||||
cwd=os.path.join(base_dir, "mypyc", "external", "googletest", "make"),
|
||||
)
|
||||
# Build Python wrapper for C unit tests.
|
||||
env = os.environ.copy()
|
||||
env["CPPFLAGS"] = " ".join(cppflags)
|
||||
status = subprocess.check_call(
|
||||
[sys.executable, "setup.py", "build_ext", "--inplace"],
|
||||
env=env,
|
||||
cwd=os.path.join(base_dir, "mypyc", "lib-rt"),
|
||||
)
|
||||
# Run C unit tests.
|
||||
env = os.environ.copy()
|
||||
if "GTEST_COLOR" not in os.environ:
|
||||
env["GTEST_COLOR"] = "yes" # Use fancy colors
|
||||
status = subprocess.call(
|
||||
[sys.executable, "-c", "import sys, test_capi; sys.exit(test_capi.run_tests())"],
|
||||
env=env,
|
||||
cwd=os.path.join(base_dir, "mypyc", "lib-rt"),
|
||||
)
|
||||
if status != 0:
|
||||
raise AssertionError("make test: C unit test failure")
|
||||
Reference in New Issue
Block a user