Unified tests architecture
flowchart LR
Spec[Markdown test specification] --> Discover[pipeline discovery]
Ref[Target repository + ref] --> Variant[Variant resolver]
VariantMap[variant_map.json] --> Variant
Discover --> Extract[Extract target functions]
Ref --> Extract
Variant --> Overrides[WinTypes / mocks / test overrides]
Extract --> Build[CMake or Make build]
Overrides --> Build
Build --> Run[GTest / virtual test execution]
Run --> Parse[Result and case parser]
Parse --> CI[GitHub Actions / Jenkins evidence]
CI --> Publish[Artifacts and Wiki/dashboard publication]
Boundaries
| Component | Source | Architectural responsibility |
|---|
| Test specifications | doc/niseWrappers/ and doc/tests/ | Stores Markdown cases and generated/executable virtual-test harnesses. |
| Pipeline | doc/tests/pipeline.py | Discovers folders, resolves variants, extracts source, builds targets, runs tests and parses results. |
| Variant model | doc/VARIANT_DESIGN.md and doc/variant_map.json | Maps target source branches to compatible test environments and overrides. |
| niseCore suites | niseCore/matcher, sensor, storage | Builds focused GTest/GMock targets around extracted or preprocessed production functions. |
| WBF suite | niseWrappers/wbf | Extracts CBiometricDevice capture/wake functions and generates customer property headers. |
| CI workflows | .github/workflows/ | Runs PR/push unit, actual and virtual tests and publishes evidence. |
| Source mapping | doc/source_repos.json | Maps test scopes to source repositories/default refs. |
| Published branch | main | Carries the repository overview and selected publishing/workflow infrastructure, not the full dev test tree. |
Change-safety rules
- Follow calls and data across component boundaries; a changed header or customer property can affect multiple binaries.
- Keep source revision and branch explicit because configured branches differ substantially.
- Validate both the component and its direct consumers.
- Treat optional/customer-selected components as conditional, not universally deployed.