Main test runner function that determines what to run and executes tests Args: args: Parsed command line arguments src_code_change: Whether source code has changed since last run cpp_test_change: Whether C++ test-related files (src/ or tests/) have changed e
(
args: TestArgs,
src_code_change: bool = True,
cpp_test_change: bool = True,
examples_change: bool = True,
python_test_change: bool = True,
wasm_change: bool = True,
fingerprint_manager: Optional["FingerprintManager"] = None,
)
| 1471 | |
| 1472 | |
| 1473 | def runner( |
| 1474 | args: TestArgs, |
| 1475 | src_code_change: bool = True, |
| 1476 | cpp_test_change: bool = True, |
| 1477 | examples_change: bool = True, |
| 1478 | python_test_change: bool = True, |
| 1479 | wasm_change: bool = True, |
| 1480 | fingerprint_manager: Optional["FingerprintManager"] = None, |
| 1481 | ) -> None: |
| 1482 | """ |
| 1483 | Main test runner function that determines what to run and executes tests |
| 1484 | |
| 1485 | Args: |
| 1486 | args: Parsed command line arguments |
| 1487 | src_code_change: Whether source code has changed since last run |
| 1488 | cpp_test_change: Whether C++ test-related files (src/ or tests/) have changed |
| 1489 | examples_change: Whether example-related files have changed |
| 1490 | python_test_change: Whether Python test-related files have changed |
| 1491 | wasm_change: Whether WASM-related files have changed |
| 1492 | fingerprint_manager: Optional fingerprint manager for test metadata |
| 1493 | """ |
| 1494 | # Debug logging - only shown in verbose mode to reduce UI clutter |
| 1495 | if args.verbose: |
| 1496 | # Show only active/non-default flags instead of full TestArgs dump |
| 1497 | active_flags: list[str] = [] |
| 1498 | if args.test: |
| 1499 | active_flags.append(f"test={args.test}") |
| 1500 | if args.examples: |
| 1501 | # Format list as comma-separated values instead of Python list syntax |
| 1502 | active_flags.append(f"examples={','.join(args.examples)}") |
| 1503 | if args.debug: |
| 1504 | active_flags.append("debug") |
| 1505 | if args.clean: |
| 1506 | active_flags.append("clean") |
| 1507 | if args.full: |
| 1508 | active_flags.append("full") |
| 1509 | if args.no_parallel: |
| 1510 | active_flags.append("no-parallel") |
| 1511 | if args.build_mode: |
| 1512 | active_flags.append(f"build_mode={args.build_mode}") |
| 1513 | if args.no_fingerprint: |
| 1514 | active_flags.append("no-fingerprint") |
| 1515 | if args.no_pch: |
| 1516 | active_flags.append("no-pch") |
| 1517 | |
| 1518 | if active_flags: |
| 1519 | ts_print(f"Active flags: {', '.join(active_flags)}") |
| 1520 | |
| 1521 | # Clear zccache stats at start to show only metrics from this build |
| 1522 | from ci.util.zccache_config import clear_zccache_stats |
| 1523 | |
| 1524 | clear_zccache_stats() |
| 1525 | |
| 1526 | # Determine test categories first to check if we should use meson |
| 1527 | test_categories = determine_test_categories(args) |
| 1528 | |
| 1529 | # Always use Meson build system for unit tests (Python build system has been removed) |
| 1530 | # Only return early if unit tests are the ONLY thing running (unit_only mode) |
nothing calls this directly
no test coverage detected