Skip to content

Build and Testing

James Daley edited this page Jun 20, 2026 · 3 revisions

Build And Testing

This repository is validated with Visual Studio/MSVC, CMake presets, CTest, and PowerShell guardrail scripts on Windows. The current non-Windows local environment cannot complete native acceptance because CMake, CTest, PowerShell, MSVC, and VCPKG_ROOT are unavailable there.

Toolchain

Tool Required Role
Visual Studio 2022 MSVC compiler, MSBuild, CppUnitTest runtime, Windows SDK.
CMake 3.28+ Preset-driven configure/build/test orchestration.
vcpkg Dependency resolution for nlohmann-json; VCPKG_ROOT must be set.
PowerShell Guardrail scripts.

CMake Presets

The repository currently exposes:

Preset Purpose
debug Debug build with tests enabled.
release Release build with tests disabled.

The package-level windows-msvc-debug name is not a repository preset. Use debug for repository validation.

Standard Local Validation

cmake --preset debug
cmake --build --preset debug
ctest --preset debug --output-on-failure

Full Guardrail Wrapper

.\Scripts\verify-forsetti-guardrails.ps1
flowchart TD
    Start["verify-forsetti-guardrails.ps1"]
    Configure["cmake --preset debug"]
    Build["cmake --build --preset debug"]
    Tests["ctest --preset debug"]
    Architecture["check-architecture.ps1"]
    Dependencies["check-dependencies.ps1"]
    Manifests["check-manifests.ps1"]
    Compatibility["check-pr-compatibility.ps1"]
    Scripts["test-guardrail-scripts.ps1"]
    Pass["all guardrails passed"]

    Start --> Configure --> Build --> Tests --> Architecture --> Dependencies --> Manifests --> Compatibility --> Scripts --> Pass
Loading

Script Responsibilities

Script Purpose
Scripts/check-architecture.ps1 Enforces one-way include boundaries and concrete-class rules.
Scripts/check-dependencies.ps1 Checks forbidden includes, vcpkg dependencies, and CMake link boundaries.
Scripts/check-manifests.ps1 Validates repository module manifests, schema/template compatibility, runtime requirements, default roles, exact platform casing, capabilities, duplicate IDs, and UI declaration consistency.
Scripts/check-pr-compatibility.ps1 Checks reserved namespace use, test structure, test count baseline, namespace use, and raw allocation patterns.
Scripts/test-guardrail-scripts.ps1 Regression-tests guardrail behavior.
Scripts/verify-forsetti-guardrails.ps1 Runs the full local validation chain.

Test Suites

Suite Coverage
ForsettiCoreTests SemVer, manifest loading, module registration, compatibility, event bus, module communication, context scoping, entitlement providers, logging, UI surface manager, runtime lifecycle, activation rollback, restore diagnostics, and HostTemplate bootstrap behavior.
ForsettiPlatformTests Registry storage, DPAPI secure storage, WinHTTP validation, local file export sanitization, telemetry no-op behavior, registration persistence, digesting, view factory registration, and default platform service registration.
ForsettiArchitectureTests Include-boundary enforcement for core, platform, host, examples, and samples.

Current Validation Evidence

Runtime-boundary alignment evidence is under .forsetti/alignment.

Gate Current Result
Repository JSON parsing passed
Manifest validation over source, templates, samples, and tests passed for 7 manifest files
Python discussion scripts compile/config validation passed
Repository surface check passed locally and in GitHub Actions
git diff --check passed during alignment
Debug/Release CMake configure/build blocked in the available local environment because CMake is not installed
Debug/Release CTest blocked in the available local environment because CTest is not installed
PowerShell guardrail wrapper blocked in the available local environment because PowerShell is not installed
MSVC compiler validation blocked in the available local environment because cl is not installed
vcpkg validation blocked until VCPKG_ROOT is configured

Remote Workflow Status

The hosted workflow currently enforces repository surface markers on pull requests and pushes to main. Remote Windows build/test parity is not yet restored.

Local Windows/MSVC validation remains the native build/test source of truth until a remote Windows workflow is added, stabilized, and required.

Clone this wiki locally