Files

64 lines
1.7 KiB
Python
Raw Permalink Normal View History

2025-09-08 17:14:23 -04:00
#!/usr/bin/env python3
import os
import shutil
from pathlib import Path
from upstream_utils import Lib, walk_cwd_and_copy_if
def copy_upstream_src(wpilib_root: Path):
upstream_root = Path(".").absolute()
catch2 = wpilib_root / "thirdparty/catch2"
# Delete old install
for d in ["src/main/native", "extras"]:
shutil.rmtree(catch2 / d, ignore_errors=True)
# Copy Catch2 source files into allwpilib
walk_cwd_and_copy_if(
lambda dp, f: f == "Catch.cmake" or f == "CatchAddTests.cmake",
catch2,
)
os.chdir(upstream_root / "src")
walk_cwd_and_copy_if(
lambda dp, f: f.endswith(".cpp")
and "catch2" in dp.parts
and f != "catch_main.cpp",
catch2 / "src/main/native/cpp",
)
walk_cwd_and_copy_if(
lambda dp, f: f.endswith(".hpp")
and ("third_party" in dp.parts or "catch2" in dp.parts),
catch2 / "src/main/native/include",
)
# Configure the user config as Catch2's CMake system would've, which is to not define anything
with open(upstream_root / "src/catch2/catch_user_config.hpp.in") as f:
content = f.read()
content = content.replace("#cmakedefine", "// #undef")
content = content.replace("@CATCH_CONFIG_DEFAULT_REPORTER@", "console")
content = content.replace("@CATCH_CONFIG_CONSOLE_WIDTH@", "80")
with open(
catch2 / "src/main/native/include/catch2/catch_user_config.hpp", "w"
) as f:
f.write(content)
def main():
name = "catch2"
url = "https://github.com/catchorg/Catch2.git"
tag = "v3.15.0"
2025-09-08 17:14:23 -04:00
patch_options = {
"ignore_whitespace": True,
}
catch2 = Lib(name, url, tag, copy_upstream_src, patch_options)
catch2.main()
if __name__ == "__main__":
main()