Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 4 additions & 12 deletions docs/requirements-icon-editor.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,10 @@ Runner Type indicates whether a requirement runs on a standard GitHub-hosted ima

| ID | Description | Tests | Runner | Runner Type | Skip Dry Run |
|----|-------------|-------|--------|-------------|--------------|
| REQIE-001 | After checking out the LabVIEW icon editor repository, PreSequence: The sequencer shall enumerate and record the build matrix used by the workflow (LabVIEW versions and bitness). Acceptance: a 'matrix.json' file exists listing each tuple {"lv-version": "2021"\|"2023", "bitness": "32"\|"64"} with at least [ ["2021","32"], ["2021","64"], ["2023","64"] ]. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.PreSequence.matrix-enumeration.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-002 | After checking out the LabVIEW icon editor repository, Setup: For each matrix entry, the sequencer shall apply VIPC dependencies using the canonical action inputs (minimum_supported_lv_version, vip_lv_version, supported_bitness, relative_path). Evidence: a 'vipc-apply.json' summary per matrix entry capturing inputs, start/end timestamps, exit code, and status. Acceptance: all entries report exit_code == 0 and status == 'success'. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Setup.apply-vipc-succeeds.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-003 | After checking out the LabVIEW icon editor repository, Setup: The sequencer shall compute and persist semantic version information. Evidence: a 'version.json' containing VERSION, MAJOR, MINOR, PATCH, BUILD, IS_PRERELEASE and the commit SHA used. Acceptance: VERSION conforms to SemVer and all numeric components are present. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Setup.version-outputs-captured.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-004 | After checking out the LabVIEW icon editor repository, Setup: The 'missing-in-project' check shall be executed for the specified LabVIEW version(s) and both 32-bit and 64-bit bitness as applicable. Evidence: 'missing-in-project.json' including project-file, lv-version, bitness, and result. Acceptance: result == 'present' for expected module paths. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Setup.missing-in-project-matrix.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-005 | After checking out the LabVIEW icon editor repository, Main: Unit tests shall be executed (Pester) across the configured matrix. Evidence: a 'pester-summary.json' file containing total, passed, failed, skipped, duration_ms, and per-test results; XML output is not required. Acceptance: failed == 0 and total >= 1. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Main.unit-tests-pass.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-006 | After checking out the LabVIEW icon editor repository, Main: Build Packed Libraries (PPL) shall succeed for both 32-bit and 64-bit targets. Evidence: existence of 'resource/plugins/lv_icon_x86_v<version>.lvlibp' and 'resource/plugins/lv_icon_x64_v<version>.lvlibp' and a 'ppl.hash' file containing SHA256 for each artifact. Acceptance: non-zero artifact sizes and matching SHA256 re-computation. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Main.ppl-built-and-hashed.ps1`, `tests/pester/BuildProfile1.IconEditor.Main.artifact-size-nonzero.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-007 | After checking out the LabVIEW icon editor repository, Main: Renaming and artifact upload steps shall complete. Evidence: an 'artifact-manifest.json' listing uploaded artifact names ('lv_icon_x86_v<version>.lvlibp', 'lv_icon_x64_v<version>.lvlibp'), paths, and sizes. Acceptance: manifest entries match on-disk files and GitHub Artifacts report success. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Main.artifacts-renamed-and-uploaded.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-008 | After checking out the LabVIEW icon editor repository, Main: The workflow shall generate a VI Package (.vip) using the prescribed actions and inputs. Evidence: 'vi-package.hash' (SHA256 of produced .vip), and a 'vi-package.json' summarizing package metadata (name, version, company, build). Acceptance: at least one .vip exists, size > 0, and hash is recorded. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Main.vi-package-built-and-hashed.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-009 | After checking out the LabVIEW icon editor repository, Main: The workflow shall produce a display information JSON for the VI Package and inject it prior to packaging. Evidence: 'display-info.json' containing the exact keys used by the action (Package Version.major/minor/patch/build, Product/Company/Author fields, etc.). Acceptance: all required keys exist and reflect the computed version (REQ-011). g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Main.display-info-generated.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-010 | After checking out the LabVIEW icon editor repository, Cleanup: The workflow shall terminate any LabVIEW processes via the 'close-labview' step for each applicable bitness. Evidence: 'close-labview.log' including bitness, attempts, and final process list. Acceptance: no LabVIEW process remains after the step. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.Cleanup.labview-closed.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-011 | After checking out the LabVIEW icon editor repository, PostSequence: The sequencer shall assemble a canonical single-line CI evidence string summarizing statuses and key facts for REQ-001..REQ-018. The string SHALL be a minified JSON assigned to a step output named 'CI_EVIDENCE' and saved as 'ci_evidence.txt'. Acceptance: the string parses as JSON and includes {"pipeline":"IconEditor", "git_sha":..., "matrix":[...], "version":{...}, "artifacts":{...}, "req_status":{"REQ-001":"PASS"\|"FAIL", ...}}. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.PostSequence.ci-evidence-assembled.ps1`, `tests/pester/BuildProfile1.IconEditor.PostSequence.ci-evidence-output.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-012 | After checking out the LabVIEW icon editor repository, PostSequence: The CI evidence string shall be logged succinctly to the job summary and made available to downstream jobs via $GITHUB_OUTPUT. Evidence: the step output 'CI_EVIDENCE' is present and a 'summary.md' contains a redacted preview. Acceptance: dependent jobs can read 'needs.<job>.outputs.CI_EVIDENCE' and parse it successfully. g-cli is expected at 'C:\Program Files\G-CLI\bin\g-cli.exe'. | `tests/pester/BuildProfile1.IconEditor.PostSequence.ci-evidence-published.ps1` | self-hosted-windows-lv | integration | true |
| REQIE-001 | Dispatcher dry-runs add-token-to-labview with expected arguments. | `tests/pester/BuildProfile1.IconEditor.AddTokenToLabview.Dispatcher.Tests.ps1` | self-hosted-windows-lv | integration | false |
| REQIE-002 | Dispatcher dry-runs apply-vipc with expected arguments including VIP_LVVersion and VIPCPath. | `tests/pester/BuildProfile1.IconEditor.ApplyVipc.Dispatcher.Tests.ps1` | self-hosted-windows-lv | integration | false |
| REQIE-008 | Dispatcher dry-runs build-vi-package with expected metadata and paths. | `tests/pester/BuildProfile1.IconEditor.BuildViPackage.Dispatcher.Tests.ps1` | self-hosted-windows-lv | integration | false |
| REQIE-010 | Dispatcher dry-runs close-labview with expected arguments. | `tests/pester/BuildProfile1.IconEditor.CloseLabview.Dispatcher.Tests.ps1` | self-hosted-windows-lv | integration | false |

Each test file is annotated with its corresponding requirement ID to maintain traceability between requirements and test coverage.

Expand Down
94 changes: 8 additions & 86 deletions requirements-icon-editor.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,112 +22,34 @@
"requirements": [
{
"id": "REQIE-001",
"description": "After checking out the LabVIEW icon editor repository, PreSequence: The sequencer shall enumerate and record the build matrix used by the workflow (LabVIEW versions and bitness). Acceptance: a 'matrix.json' file exists listing each tuple {\"lv-version\": \"2021\"|\"2023\", \"bitness\": \"32\"|\"64\"} with at least [ [\"2021\",\"32\"], [\"2021\",\"64\"], [\"2023\",\"64\"] ]. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"description": "Dispatcher dry-runs add-token-to-labview with expected arguments.",
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.PreSequence.matrix-enumeration"
"BuildProfile1.IconEditor.AddTokenToLabview.Dispatcher.Tests"
]
},
{
"id": "REQIE-002",
"description": "After checking out the LabVIEW icon editor repository, Setup: For each matrix entry, the sequencer shall apply VIPC dependencies using the canonical action inputs (minimum_supported_lv_version, vip_lv_version, supported_bitness, relative_path). Evidence: a 'vipc-apply.json' summary per matrix entry capturing inputs, start/end timestamps, exit code, and status. Acceptance: all entries report exit_code == 0 and status == 'success'. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"description": "Dispatcher dry-runs apply-vipc with expected arguments including VIP_LVVersion and VIPCPath.",
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Setup.apply-vipc-succeeds"
]
},
{
"id": "REQIE-003",
"description": "After checking out the LabVIEW icon editor repository, Setup: The sequencer shall compute and persist semantic version information. Evidence: a 'version.json' containing VERSION, MAJOR, MINOR, PATCH, BUILD, IS_PRERELEASE and the commit SHA used. Acceptance: VERSION conforms to SemVer and all numeric components are present. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Setup.version-outputs-captured"
]
},
{
"id": "REQIE-004",
"description": "After checking out the LabVIEW icon editor repository, Setup: The 'missing-in-project' check shall be executed for the specified LabVIEW version(s) and both 32-bit and 64-bit bitness as applicable. Evidence: 'missing-in-project.json' including project-file, lv-version, bitness, and result. Acceptance: result == 'present' for expected module paths. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Setup.missing-in-project-matrix"
]
},
{
"id": "REQIE-005",
"description": "After checking out the LabVIEW icon editor repository, Main: Unit tests shall be executed (Pester) across the configured matrix. Evidence: a 'pester-summary.json' file containing total, passed, failed, skipped, duration_ms, and per-test results; XML output is not required. Acceptance: failed == 0 and total >= 1. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Main.unit-tests-pass"
]
},
{
"id": "REQIE-006",
"description": "After checking out the LabVIEW icon editor repository, Main: Build Packed Libraries (PPL) shall succeed for both 32-bit and 64-bit targets. Evidence: existence of 'resource/plugins/lv_icon_x86_v<version>.lvlibp' and 'resource/plugins/lv_icon_x64_v<version>.lvlibp' and a 'ppl.hash' file containing SHA256 for each artifact. Acceptance: non-zero artifact sizes and matching SHA256 re-computation. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Main.ppl-built-and-hashed",
"BuildProfile1.IconEditor.Main.artifact-size-nonzero"
]
},
{
"id": "REQIE-007",
"description": "After checking out the LabVIEW icon editor repository, Main: Renaming and artifact upload steps shall complete. Evidence: an 'artifact-manifest.json' listing uploaded artifact names ('lv_icon_x86_v<version>.lvlibp', 'lv_icon_x64_v<version>.lvlibp'), paths, and sizes. Acceptance: manifest entries match on-disk files and GitHub Artifacts report success. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Main.artifacts-renamed-and-uploaded"
"BuildProfile1.IconEditor.ApplyVipc.Dispatcher.Tests"
]
},
{
"id": "REQIE-008",
"description": "After checking out the LabVIEW icon editor repository, Main: The workflow shall generate a VI Package (.vip) using the prescribed actions and inputs. Evidence: 'vi-package.hash' (SHA256 of produced .vip), and a 'vi-package.json' summarizing package metadata (name, version, company, build). Acceptance: at least one .vip exists, size > 0, and hash is recorded. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Main.vi-package-built-and-hashed"
]
},
{
"id": "REQIE-009",
"description": "After checking out the LabVIEW icon editor repository, Main: The workflow shall produce a display information JSON for the VI Package and inject it prior to packaging. Evidence: 'display-info.json' containing the exact keys used by the action (Package Version.major/minor/patch/build, Product/Company/Author fields, etc.). Acceptance: all required keys exist and reflect the computed version (REQ-011). g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"description": "Dispatcher dry-runs build-vi-package with expected metadata and paths.",
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Main.display-info-generated"
"BuildProfile1.IconEditor.BuildViPackage.Dispatcher.Tests"
]
},
{
"id": "REQIE-010",
"description": "After checking out the LabVIEW icon editor repository, Cleanup: The workflow shall terminate any LabVIEW processes via the 'close-labview' step for each applicable bitness. Evidence: 'close-labview.log' including bitness, attempts, and final process list. Acceptance: no LabVIEW process remains after the step. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.Cleanup.labview-closed"
]
},
{
"id": "REQIE-011",
"description": "After checking out the LabVIEW icon editor repository, PostSequence: The sequencer shall assemble a canonical single-line CI evidence string summarizing statuses and key facts for REQ-001..REQ-018. The string SHALL be a minified JSON assigned to a step output named 'CI_EVIDENCE' and saved as 'ci_evidence.txt'. Acceptance: the string parses as JSON and includes {\"pipeline\":\"IconEditor\", \"git_sha\":..., \"matrix\":[...], \"version\":{...}, \"artifacts\":{...}, \"req_status\":{\"REQ-001\":\"PASS\"|\"FAIL\", ...}}. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.PostSequence.ci-evidence-assembled",
"BuildProfile1.IconEditor.PostSequence.ci-evidence-output"
]
},
{
"id": "REQIE-012",
"description": "After checking out the LabVIEW icon editor repository, PostSequence: The CI evidence string shall be logged succinctly to the job summary and made available to downstream jobs via $GITHUB_OUTPUT. Evidence: the step output 'CI_EVIDENCE' is present and a 'summary.md' contains a redacted preview. Acceptance: dependent jobs can read 'needs.<job>.outputs.CI_EVIDENCE' and parse it successfully. g-cli is expected at 'C:\\Program Files\\G-CLI\\bin\\g-cli.exe'.",
"skip_dry_run": true,
"description": "Dispatcher dry-runs close-labview with expected arguments.",
"runner": "self-hosted-windows-lv-integration",
"tests": [
"BuildProfile1.IconEditor.PostSequence.ci-evidence-published"
"BuildProfile1.IconEditor.CloseLabview.Dispatcher.Tests"
]
}
]
Expand Down
Loading
Loading