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"
|
2026-06-05 20:34:20 -07:00
|
|
|
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()
|