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

ComponentSourceArchitectural responsibility
Test specificationsdoc/niseWrappers/ and doc/tests/Stores Markdown cases and generated/executable virtual-test harnesses.
Pipelinedoc/tests/pipeline.pyDiscovers folders, resolves variants, extracts source, builds targets, runs tests and parses results.
Variant modeldoc/VARIANT_DESIGN.md and doc/variant_map.jsonMaps target source branches to compatible test environments and overrides.
niseCore suitesniseCore/matcher, sensor, storageBuilds focused GTest/GMock targets around extracted or preprocessed production functions.
WBF suiteniseWrappers/wbfExtracts 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 mappingdoc/source_repos.jsonMaps test scopes to source repositories/default refs.
Published branchmainCarries 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.