'-Wshadow', | '-Wshadow', | ||||
'-Wconversion', | '-Wconversion', | ||||
'-fdiagnostics-color', | '-fdiagnostics-color', | ||||
'-DFMT_HEADER_ONLY=1', | |||||
'-pthread', | '-pthread', | ||||
'-c', | '-c', | ||||
str(cpp_file), | str(cpp_file), | ||||
'/nologo', | '/nologo', | ||||
'/EHsc', | '/EHsc', | ||||
'/std:c++latest', | '/std:c++latest', | ||||
'/DFMT_HEADER_ONLY=1', | |||||
f'/I{HERE_DIR / "src"}', | f'/I{HERE_DIR / "src"}', | ||||
str(cpp_file), | str(cpp_file), | ||||
'/c', | '/c', |
Private-Include: external/spdlog/include | Private-Include: external/spdlog/include | ||||
Private-Include: external/wil/include | |||||
Private-Include: external/wil/include | |||||
Private-Define: FMT_HEADER_ONLY=1 |
for (auto& pair : kvs.items()) { | for (auto& pair : kvs.items()) { | ||||
if (pair.key() == "Private-Include") { | if (pair.key() == "Private-Include") { | ||||
ret.private_includes.emplace_back(pair.value()); | ret.private_includes.emplace_back(pair.value()); | ||||
} else if (pair.key() == "Private-Defines") { | |||||
} else if (pair.key() == "Private-Define") { | |||||
ret.private_defines.emplace_back(pair.value()); | ret.private_defines.emplace_back(pair.value()); | ||||
} else { | } else { | ||||
throw std::runtime_error( | throw std::runtime_error( |
import argparse | import argparse | ||||
from pathlib import Path | from pathlib import Path | ||||
from typing import List, NamedTuple | from typing import List, NamedTuple | ||||
import shutil | |||||
import subprocess | import subprocess | ||||
import sys | import sys | ||||
def run_test_dir(dir: Path, opts: TestOptions) -> bool: | def run_test_dir(dir: Path, opts: TestOptions) -> bool: | ||||
try: | |||||
subprocess.check_call( | |||||
[ | |||||
str(opts.exe), | |||||
'build', | |||||
'--export', | |||||
'--warnings', | |||||
'--tests', | |||||
'--toolchain', | |||||
opts.toolchain, | |||||
], | |||||
cwd=dir, | |||||
) | |||||
except subprocess.CalledProcessError: | |||||
import traceback | |||||
traceback.print_exc() | |||||
return False | |||||
return True | |||||
print(f'Running test: {dir.name} ...') | |||||
out_dir = dir / '_build' | |||||
if out_dir.exists(): | |||||
shutil.rmtree(out_dir) | |||||
res = subprocess.run( | |||||
[ | |||||
str(opts.exe), | |||||
'build', | |||||
'--export', | |||||
'--warnings', | |||||
'--tests', | |||||
f'--toolchain={opts.toolchain}', | |||||
f'--out-dir={out_dir}', | |||||
], | |||||
cwd=dir, | |||||
stdout=subprocess.PIPE, | |||||
stderr=subprocess.STDOUT, | |||||
) | |||||
if res.returncode != 0: | |||||
print(f'Test failed with exit code [{res.returncode}]:\n{res.stdout}') | |||||
return res.returncode == 0 | |||||
def run_tests(opts: TestOptions) -> int: | def run_tests(opts: TestOptions) -> int: |