diff --git a/.github/workflows/add-token-to-labview-self-hosted.json b/.github/workflows/add-token-to-labview-self-hosted.json deleted file mode 100644 index b48f9d00..00000000 --- a/.github/workflows/add-token-to-labview-self-hosted.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "Add token to LabVIEW (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "add-token": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run add-token-to-labview action", - "uses": "./add-token-to-labview/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "64", - "relative_path": "scripts/add-token-to-labview", - "dry_run": true - } - }, - { - "name": "Upload token artifact", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "token-artifact", - "path": "scripts/add-token-to-labview/LabVIEW.ini" - } - } - ] - } - } -} diff --git a/.github/workflows/apply-vipc-self-hosted.json b/.github/workflows/apply-vipc-self-hosted.json deleted file mode 100644 index bfe6d0f9..00000000 --- a/.github/workflows/apply-vipc-self-hosted.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "Apply VIPC (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "apply-vipc": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run apply-vipc action (dry_run=true)", - "uses": "./apply-vipc/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "vip_lv_version": "2021", - "supported_bitness": "64", - "relative_path": ".", - "vipc_path": "scripts/apply-vipc/runner_dependencies.vipc", - "dry_run": true - } - } - ] - } - } -} diff --git a/.github/workflows/build-lvlibp-self-hosted.json b/.github/workflows/build-lvlibp-self-hosted.json deleted file mode 100644 index 014755a7..00000000 --- a/.github/workflows/build-lvlibp-self-hosted.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "Build LVLIBP (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "build-lvlibp": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run build-lvlibp action", - "uses": "./build-lvlibp/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "64", - "relative_path": "scripts/build-lvlibp", - "labview_project": "scripts/build-lvlibp/lv_icon.lvproj", - "build_spec": "PackedLib Build", - "major": "1", - "minor": "0", - "patch": "0", - "build": "1", - "commit": "abcdef", - "dry_run": true - } - }, - { - "name": "Upload lvlibp artifact", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "build-lvlibp-artifact", - "path": "scripts/build-lvlibp/lv_icon_x64_v1.0.0.1+gabcdef.lvlibp" - } - } - ] - } - } -} diff --git a/.github/workflows/build-self-hosted.json b/.github/workflows/build-self-hosted.json deleted file mode 100644 index c8d43065..00000000 --- a/.github/workflows/build-self-hosted.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "Build (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "build": { - "runs-on": "ubuntu-latest", - "env": { - "MAJOR": "1", - "MINOR": "0", - "PATCH": "0" - }, - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run build action", - "uses": "./build/action.yml", - "with": { - "relative_path": "scripts/build", - "major": "${{ env.MAJOR }}", - "minor": "${{ env.MINOR }}", - "patch": "${{ env.PATCH }}", - "build": "${{ github.run_number }}", - "commit": "${{ github.sha }}", - "labview_minor_revision": "3", - "company_name": "Acme Corp", - "author_name": "Jane Doe", - "dry_run": true - } - }, - { - "name": "Record artifact metadata", - "id": "record", - "run": "VERSION=\"${MAJOR}.${MINOR}.${PATCH}.${GITHUB_RUN_NUMBER}\"\nSHORT_SHA=\"${GITHUB_SHA::7}\"\nARTIFACT=\"lv_icon_x64_v${VERSION}+${SHORT_SHA}.lvlibp\"\nmv scripts/build/lv_icon_x64.lvlibp \"scripts/build/${ARTIFACT}\"\nprintf '{\"commit\":\"%s\",\"build_number\":\"%s\",\"artifacts\":[\"%s\"]}' \"$GITHUB_SHA\" \"$GITHUB_RUN_NUMBER\" \"$ARTIFACT\" > scripts/build/artifact-manifest.json\necho \"artifact=${ARTIFACT}\" >> \"$GITHUB_OUTPUT\"" - }, - { - "name": "Upload build artifact", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "${{ steps.record.outputs.artifact }}", - "path": "scripts/build/${{ steps.record.outputs.artifact }}" - } - }, - { - "name": "Upload artifact manifest", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "artifact-manifest", - "path": "scripts/build/artifact-manifest.json" - } - } - ] - } - } -} diff --git a/.github/workflows/build-vi-package-self-hosted.json b/.github/workflows/build-vi-package-self-hosted.json deleted file mode 100644 index f0ca0048..00000000 --- a/.github/workflows/build-vi-package-self-hosted.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "Build VI package (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "build-vi-package": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run build-vi-package action", - "uses": "./build-vi-package/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "64", - "labview_minor_revision": "0", - "relative_path": "scripts/build-vi-package", - "vipb_path": "scripts/build-vi-package/NI Icon editor.vipb", - "major": "1", - "minor": "0", - "patch": "0", - "build": "1", - "commit": "abcdef", - "display_information_json": "{\"Name\":\"Test\"}", - "dry_run": true - } - }, - { - "name": "Upload VI package", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "vi-package", - "path": "scripts/build-vi-package/lv_icon_v1.0.0.1+gabcdef.vip" - } - } - ] - } - } -} diff --git a/.github/workflows/ci.json b/.github/workflows/ci.json deleted file mode 100644 index e15f246f..00000000 --- a/.github/workflows/ci.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "name": "CI", - "on": { - "push": { - "branches": [ - "actions" - ] - }, - "pull_request": { - "branches": [ - "actions" - ] - } - }, - "jobs": { - "release-check": { - "runs-on": "ubuntu-24.04", - "outputs": { - "needs_release": "${{ steps.check.outputs.present }}" - }, - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "id": "check", - "run": "if [[ -f release.json ]]; then\n echo 'present=true' >> \"$GITHUB_OUTPUT\"\nelse\n echo 'present=false' >> \"$GITHUB_OUTPUT\"\nfi" - }, - { - "uses": "actions/upload-artifact@v4", - "if": "steps.check.outputs.present == 'true'", - "with": { - "name": "release-metadata", - "path": "release.json" - } - } - ] - }, - "validate-artifacts": { - "needs": "release-check", - "runs-on": "ubuntu-24.04", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "uses": "actions/setup-node@v4", - "with": { - "node-version": 24 - } - }, - { - "run": "npm install" - }, - { - "run": "npm run link:check" - }, - { - "run": "npm run derive:registry" - }, - { - "run": "git diff --exit-code -- dispatchers.json" - }, - { - "run": "npm run check:traceability" - } - ] - }, - "ps-ci": { - "needs": "release-check", - "strategy": { - "matrix": { - "include": [ - { - "os": "ubuntu-24.04", - "runs-on": "ubuntu-24.04", - "runner_type": "linux" - }, - { - "os": "self-hosted-windows-lv", - "runs-on": "self-hosted-windows-lv", - "runner_type": "integration" - }, - { - "os": "self-hosted-windows-lv", - "runs-on": "self-hosted-windows-lv", - "runner_type": "default" - } - ] - } - }, - "runs-on": "${{ matrix.runs-on }}", - "env": { - "RUNNER_TYPE": "${{ matrix.runner_type }}" - }, - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Ensure PowerShell 7.5.1", - "if": "matrix.runner_type != 'linux'", - "shell": "pwsh", - "run": "$required = [Version]'7.5.1'\nif ($PSVersionTable.PSVersion -lt $required) {\n $msiUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.5.1/PowerShell-7.5.1-win-x64.msi'\n $msiPath = Join-Path $env:RUNNER_TEMP 'PowerShell-7.5.1-win-x64.msi'\n Invoke-WebRequest -Uri $msiUrl -OutFile $msiPath\n $expectedHash = 'b110eccaf55bb53ae5e6b6de478587ed8203570b0bda9bd374a0998e24d4033a'\n $actualHash = (Get-FileHash $msiPath -Algorithm SHA256).Hash\n if ($actualHash -ne $expectedHash) {\n throw \"SHA256 mismatch: $actualHash\"\n }\n Start-Process msiexec -Wait -ArgumentList '/i', $msiPath, '/qn', 'ADD_PATH=1'\n}\n$version = (pwsh --version).Trim() -replace '^PowerShell '\nif ([Version]$version -lt $required) {\n throw \"PowerShell version $version is less than $required\"\n}\n" - }, - { - "name": "Install Pester", - "shell": "pwsh", - "run": "if (-not (Get-Module -ListAvailable -Name Pester |\n Where-Object { $_.Version -ge [Version]'5.0.0' })) {\n Remove-Module Pester -ErrorAction SilentlyContinue\n Install-Module -Name Pester -MinimumVersion 5.0.0 -Scope CurrentUser -Force -SkipPublisherCheck\n}\n" - }, - { - "name": "Validate native YAML parsing", - "shell": "pwsh", - "run": "$parsed = ConvertFrom-Yaml 'a: 1'\nif ($parsed.a -ne 1) { throw 'YAML parsing failed' }\n" - }, - { - "name": "Run Pester", - "shell": "pwsh", - "run": "if (Test-Path \"tests/pester\") {\n $cfg = New-PesterConfiguration\n $cfg.Run.Path = './tests/pester'\n $cfg.TestResult.Enabled = $false\n $cfg.Run.Exit = $true\n Invoke-Pester -Configuration $cfg\n}\n" - }, - { - "uses": "actions/upload-artifact@v4", - "if": "always()", - "with": { - "name": "pester-junit-${{ matrix.os }}-${{ matrix.runner_type }}", - "path": "pester-results/pester-junit.xml", - "if-no-files-found": "error" - } - } - ] - }, - "report": { - "needs": [ - "validate-artifacts", - "ps-ci" - ], - "runs-on": "ubuntu-24.04", - "if": "(success() || failure()) && !cancelled()", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "uses": "actions/setup-node@v4", - "with": { - "node-version": 24 - } - }, - { - "run": "npm run check:node" - }, - { - "run": "npm install" - }, - { - "uses": "actions/download-artifact@v4", - "with": { - "pattern": "pester-junit-*", - "path": "./downloaded-artifacts" - } - }, - { - "run": "npm run derive:registry" - }, - { - "run": "npm run generate:summary", - "env": { - "TEST_RESULTS_GLOBS": "test-results/*junit*.xml\ndownloaded-artifacts/pester-junit-*/pester-junit.xml\n", - "REQ_MAPPING_FILE": "requirements.json", - "DISPATCHER_REGISTRY": "dispatchers.json", - "EVIDENCE_DIR": "artifacts/evidence" - } - }, - { - "run": "npx tsx scripts/generate-traceability-matrix.ts" - }, - { - "run": "cat artifacts/linux/traceability-matrix.md >> \"$GITHUB_STEP_SUMMARY\"" - }, - { - "uses": "actions/upload-artifact@v4", - "if": "(success() || failure()) && !cancelled()", - "with": { - "name": "traceability-matrix", - "path": "artifacts/linux/traceability-matrix.md" - } - }, - { - "run": "npx tsx scripts/print-pester-traceability.ts >> \"$GITHUB_STEP_SUMMARY\"" - } - ] - } - } -} diff --git a/.github/workflows/close-labview-external.json b/.github/workflows/close-labview-external.json deleted file mode 100644 index 939d25f3..00000000 --- a/.github/workflows/close-labview-external.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "Close LabVIEW (external test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "close-labview": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Close LabVIEW (32-bit)", - "uses": "./close-labview/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "32", - "working_directory": "${{ github.workspace }}/scripts/close-labview", - "dry_run": true - } - }, - { - "name": "Upload log (32-bit)", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "close-labview-32.log", - "path": "${{ github.workspace }}/scripts/close-labview/close-labview.log", - "if-no-files-found": "ignore" - } - }, - { - "name": "Close LabVIEW (64-bit)", - "uses": "./close-labview/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "64", - "working_directory": "${{ github.workspace }}/scripts/close-labview", - "dry_run": true - } - }, - { - "name": "Upload log (64-bit)", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "close-labview-64.log", - "path": "${{ github.workspace }}/scripts/close-labview/close-labview.log", - "if-no-files-found": "ignore" - } - } - ] - } - } -} diff --git a/.github/workflows/missing-in-project-self-hosted.json b/.github/workflows/missing-in-project-self-hosted.json deleted file mode 100644 index 71954fb8..00000000 --- a/.github/workflows/missing-in-project-self-hosted.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Missing in project (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "missing-in-project": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run missing-in-project action", - "uses": "./missing-in-project/action.yml", - "with": { - "lv_version": "2021", - "supported_bitness": "64", - "project_file": "scripts/missing-in-project/Missing in Project.lvproj", - "relative_path": "scripts/missing-in-project", - "dry_run": true - } - }, - { - "name": "Upload missing findings", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "missing-files", - "path": "scripts/missing-in-project/missing_files.txt" - } - } - ] - } - } -} diff --git a/.github/workflows/modify-vipb-display-info-self-hosted.json b/.github/workflows/modify-vipb-display-info-self-hosted.json deleted file mode 100644 index 8d914236..00000000 --- a/.github/workflows/modify-vipb-display-info-self-hosted.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "Modify VIPB display info (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "modify-vipb-display-info": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run modify-vipb-display-info action", - "uses": "./modify-vipb-display-info/action.yml", - "with": { - "supported_bitness": "64", - "relative_path": "scripts/modify-vipb-display-info", - "vipb_path": "scripts/modify-vipb-display-info/lv_icon.vipb", - "minimum_supported_lv_version": "2021", - "labview_minor_revision": "0", - "major": "1", - "minor": "0", - "patch": "0", - "build": "1", - "commit": "abcdef", - "display_information_json": "{\"Name\":\"Test\"}", - "dry_run": true - } - }, - { - "name": "Upload vipb artifact", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "vipb-display-info", - "path": "scripts/modify-vipb-display-info/lv_icon.vipb" - } - } - ] - } - } -} diff --git a/.github/workflows/prepare-labview-source-self-hosted.json b/.github/workflows/prepare-labview-source-self-hosted.json deleted file mode 100644 index c8c8e145..00000000 --- a/.github/workflows/prepare-labview-source-self-hosted.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "Prepare LabVIEW source (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "prepare-labview-source": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run prepare-labview-source action", - "uses": "./prepare-labview-source/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "64", - "relative_path": "scripts/prepare-labview-source", - "labview_project": "scripts/prepare-labview-source/lv_icon.lvproj", - "build_spec": "PackageSource", - "dry_run": true - } - }, - { - "name": "Upload prepared source", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "prepared-source", - "path": "scripts/prepare-labview-source/prepared-source.zip" - } - } - ] - } - } -} diff --git a/.github/workflows/rename-file-self-hosted.json b/.github/workflows/rename-file-self-hosted.json deleted file mode 100644 index 26f6bb41..00000000 --- a/.github/workflows/rename-file-self-hosted.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "Rename file (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "rename-file": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run rename-file action", - "uses": "./rename-file/action.yml", - "with": { - "current_filename": "scripts/rename-file/README.md", - "new_filename": "scripts/rename-file/README-renamed.md", - "dry_run": true - } - }, - { - "name": "Upload renamed file", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "renamed-file", - "path": "scripts/rename-file/README-renamed.md" - } - } - ] - } - } -} diff --git a/.github/workflows/restore-setup-lv-source-self-hosted.json b/.github/workflows/restore-setup-lv-source-self-hosted.json deleted file mode 100644 index e4076078..00000000 --- a/.github/workflows/restore-setup-lv-source-self-hosted.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "Restore setup LV source (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "restore-setup-lv-source": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run restore-setup-lv-source action", - "uses": "./restore-setup-lv-source/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "64", - "relative_path": "scripts/restore-setup-lv-source", - "labview_project": "scripts/restore-setup-lv-source/lv_icon.lvproj", - "build_spec": "PackageSource", - "dry_run": true - }, - "env": { - "GCLI_SUPPRESS_PROMPTS": "1" - } - }, - { - "name": "Upload restore logs", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "restore-logs", - "path": "scripts/restore-setup-lv-source/restore.log" - } - } - ] - } - } -} diff --git a/.github/workflows/revert-development-mode-self-hosted.json b/.github/workflows/revert-development-mode-self-hosted.json deleted file mode 100644 index 55b24f6a..00000000 --- a/.github/workflows/revert-development-mode-self-hosted.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "Revert development mode (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "revert-development-mode": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run revert-development-mode action", - "uses": "./revert-development-mode/action.yml", - "with": { - "relative_path": "./", - "dry_run": true - } - }, - { - "name": "Upload config artifact", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "devmode-config", - "path": "devmode-config.txt" - } - } - ] - } - } -} diff --git a/.github/workflows/run-pester-tests.json b/.github/workflows/run-pester-tests.json deleted file mode 100644 index f2d34bc0..00000000 --- a/.github/workflows/run-pester-tests.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "Run Pester tests", - "on": { - "workflow_dispatch": { - "inputs": { - "repository": { - "description": "owner/repo of the repository to test", - "required": true - }, - "ref": { - "description": "Branch or tag to check out", - "required": false, - "default": "main" - } - } - } - }, - "jobs": { - "run-pester-tests": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Checkout target repository", - "uses": "actions/checkout@v4", - "with": { - "repository": "${{ inputs.repository }}", - "ref": "${{ inputs.ref }}", - "path": "target", - "token": "${{ secrets.REPO_TOKEN }}" - } - }, - { - "name": "Run Pester tests", - "shell": "pwsh", - "run": "./actions/Invoke-OSAction.ps1 -ActionName run-pester-tests -ArgsJson '{}' -WorkingDirectory \"${{ github.workspace }}/target\"" - }, - { - "uses": "actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02", - "if": "${{ (success() || failure()) && !cancelled() }}", - "with": { - "name": "test-results-pester", - "path": "target/test-results/pester-junit.xml", - "if-no-files-found": "error" - } - } - ] - } - } -} diff --git a/.github/workflows/run-unit-tests-self-hosted.json b/.github/workflows/run-unit-tests-self-hosted.json deleted file mode 100644 index 83b89082..00000000 --- a/.github/workflows/run-unit-tests-self-hosted.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "Run unit tests (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "run-unit-tests": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run unit tests action", - "uses": "./run-unit-tests/action.yml", - "with": { - "minimum_supported_lv_version": "2021", - "supported_bitness": "64", - "project_path": "scripts/run-unit-tests/lv_icon.lvproj", - "test_config": "scripts/run-unit-tests/unittest-config.cfg", - "working_directory": "scripts/run-unit-tests", - "dry_run": true - } - }, - { - "name": "Upload test results to GitHub", - "uses": "EnricoMi/publish-unit-test-result-action@v2", - "if": "${{ (success() || failure()) && !cancelled() }}", - "with": { - "files": "artifacts/unit-tests/UnitTestReport.xml" - } - }, - { - "name": "Upload unit test results", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "unit-test-results", - "path": "artifacts/unit-tests/UnitTestReport.xml" - } - } - ] - } - } -} diff --git a/.github/workflows/set-development-mode-self-hosted.json b/.github/workflows/set-development-mode-self-hosted.json deleted file mode 100644 index 1bffb70a..00000000 --- a/.github/workflows/set-development-mode-self-hosted.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Set development mode (ubuntu test)", - "on": { - "workflow_dispatch": null - }, - "jobs": { - "set-development-mode": { - "runs-on": "ubuntu-latest", - "steps": [ - { - "uses": "actions/checkout@v4" - }, - { - "name": "Run set-development-mode action", - "uses": "./set-development-mode/action.yml", - "with": { - "relative_path": "scripts/set-development-mode", - "gcli_path": "scripts/set-development-mode/g-cli.exe", - "working_directory": "scripts/set-development-mode", - "log_level": "INFO", - "dry_run": "true" - } - }, - { - "name": "Upload dev mode logs", - "uses": "actions/upload-artifact@v4", - "with": { - "name": "dev-mode-config", - "path": "scripts/set-development-mode/dev-mode.log" - } - } - ] - } - } -} diff --git a/artifacts/linux/requirements-summary.md b/artifacts/linux/requirements-summary.md index 97a0ebeb..9e7c3061 100644 --- a/artifacts/linux/requirements-summary.md +++ b/artifacts/linux/requirements-summary.md @@ -1,12 +1,78 @@ ### Requirement Summary | Requirement ID | Description | Owner | Total Tests | Passed | Failed | Skipped | Pass Rate (%) | | --- | --- | --- | --- | --- | --- | --- | --- | -| Unmapped | | | 4 | 4 | 0 | 0 | 100.00 | +| REQ-023 | Parser ingests JUnit XML artifacts starting at the testsuites root and iterating through nested suites and testcases. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-024 | Top-level testsuites attributes name, tests, errors, failures, disabled, and time are captured for summary reporting. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-025 | Each testsuite records attributes including name, tests, errors, failures, hostname, id, skipped, disabled, package, and time. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-026 | Suite properties are extracted as name/value pairs for environment details. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-027 | Testcase attributes name, status, classname, assertions, time, and any skip message are preserved. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-028 | Requirement identifiers embedded in testcase names are detected and associated with the test. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-029 | Test results are aggregated by requirement and by suite to count passed, failed, and skipped cases. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-030 | Traceability matrix links requirement IDs to testcases with status, execution time, host properties, and skipped reasons. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-031 | Parsing logic validates presence of required fields and reports missing or malformed data. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-032 | Parser tolerates and retains unknown attributes for future extensibility. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-033 | Tests ending with SelfHosted.Workflow.Tests.ps1 execute only in dry run mode unless the workflow targets a self-hosted Windows runner labeled self-hosted-windows-lv. | | 1 | 1 | 0 | 0 | 100.00 | +| Unmapped | | | 48 | 48 | 0 | 0 | 100.00 | ### Requirement Testcases | Requirement ID | Test ID | Status | | --- | --- | --- | +| REQ-023 | parses-nested-junit-structures | Passed | +| REQ-024 | captures-root-testsuites-attributes | Passed | +| REQ-025 | captures-testsuite-attributes | Passed | +| REQ-026 | captures-suite-properties | Passed | +| REQ-027 | captures-testcase-attributes-and-skipped-message | Passed | +| REQ-028 | extracts-requirement-identifiers | Passed | +| REQ-029 | aggregates-status-by-requirement-and-suite | Passed | +| REQ-030 | builds-traceability-matrix-with-skipped-reasons | Passed | +| REQ-031 | validates-missing-fields | Passed | +| REQ-032 | preserves-unknown-attributes | Passed | +| REQ-033 | throws-error-for-malformed-xml | Passed | +| Unmapped | associates-classname-with-requirement | Passed | +| Unmapped | buildissuebranchname-formats-branch-name | Passed | +| Unmapped | buildissuebranchname-rejects-non-numeric-input | Passed | | Unmapped | buildprofile1.iconeditor.addtokentolabview.dispatcher.dry-runs-add-token-to-labview-with-expected-arguments- | Passed | | Unmapped | buildprofile1.iconeditor.applyvipc.dispatcher.dry-runs-apply-vipc-with-expected-arguments- | Passed | | Unmapped | buildprofile1.iconeditor.buildvipackage.dispatcher.dry-runs-build-vi-package-with-expected-arguments- | Passed | -| Unmapped | buildprofile1.iconeditor.closelabview.dispatcher.dry-runs-close-labview-with-expected-arguments- | Passed | \ No newline at end of file +| Unmapped | buildprofile1.iconeditor.closelabview.dispatcher.dry-runs-close-labview-with-expected-arguments- | Passed | +| Unmapped | buildsummary-splits-totals-by-os | Passed | +| Unmapped | collecttestcases-captures-requirement-property | Passed | +| Unmapped | collecttestcases-uses-evidence-property-and-falls-back-to-directory-scan | Passed | +| Unmapped | collecttestcases-uses-machine-name-property-for-owner | Passed | +| Unmapped | computestatuscounts-tallies-test-statuses | Passed | +| Unmapped | detects-downloaded-artifacts-path | Passed | +| Unmapped | dispatchers-and-parameters-include-descriptions | Passed | +| Unmapped | errors-when-strict-unmapped-mode-enabled | Passed | +| Unmapped | escapemarkdown-escapes-special-characters | Passed | +| Unmapped | escapemarkdown-leaves-plain-text-untouched | Passed | +| Unmapped | fails-when-commit-lacks-requirement-reference | Passed | +| Unmapped | fails-when-requirement-lacks-test-coverage | Passed | +| Unmapped | fails-when-tests-are-unmapped | Passed | +| Unmapped | fails-when-tests-reference-unknown-requirements | Passed | +| Unmapped | formaterror-handles-plain-objects | Passed | +| Unmapped | formaterror-handles-primitives | Passed | +| Unmapped | formaterror-handles-real-error-objects | Passed | +| Unmapped | formaterror-handles-unstringifiable-values | Passed | +| Unmapped | generate-ci-summary-features | Passed | +| Unmapped | groups-owners-and-includes-requirements-and-evidence | Passed | +| Unmapped | grouptomarkdown-omits-numeric-identifiers | Passed | +| Unmapped | grouptomarkdown-supports-optional-limit-for-truncation | Passed | +| Unmapped | handles-root-level-testcases | Passed | +| Unmapped | handles-zipped-junit-artifacts | Passed | +| Unmapped | ignores-stale-junit-files-outside-artifacts-path | Passed | +| Unmapped | loadrequirements-logs-warning-on-invalid-json | Passed | +| Unmapped | loadrequirements-merges-multiple-files | Passed | +| Unmapped | loadrequirements-warns-and-skips-invalid-entries | Passed | +| Unmapped | logs-a-warning-when-no-junit-files-are-found | Passed | +| Unmapped | partitions-requirement-groups-by-runner\_type | Passed | +| Unmapped | passes-with-coverage-and-requirement-reference | Passed | +| Unmapped | requirementssummarytomarkdown-escapes-pipes-in-description | Passed | +| Unmapped | skips-invalid-junit-files-and-still-generates-summary | Passed | +| Unmapped | summarytomarkdown-handles-no-tests | Passed | +| Unmapped | summarytomarkdown-sorts-os-alphabetically-and-escapes-special-characters | Passed | +| Unmapped | throws-when-no-junit-files-found-and-strict-mode-enabled | Passed | +| Unmapped | uses-latest-artifact-directory-when-multiple-are-present | Passed | +| Unmapped | warns-when-all-tests-are-unmapped | Passed | +| Unmapped | writeerrorsummary-appends-error-details-to-summary-file | Passed | +| Unmapped | writeerrorsummary-skips-summary-file-for-non-error-throws | Passed | +| Unmapped | writes-outputs-to-os-specific-directory | Passed | \ No newline at end of file diff --git a/artifacts/linux/summary-standard.md b/artifacts/linux/summary-standard.md index cfdde583..7439d2f8 100644 --- a/artifacts/linux/summary-standard.md +++ b/artifacts/linux/summary-standard.md @@ -1,7 +1,7 @@ ### Test Summary | OS | Passed | Failed | Skipped | Duration (s) | Pass Rate (%) | | --- | --- | --- | --- | --- | --- | -| overall | 4 | 0 | 0 | 0.67 | 100.00 | -| linux | 4 | 0 | 0 | 0.67 | 100.00 | +| overall | 59 | 0 | 0 | 17.28 | 100.00 | +| linux | 59 | 0 | 0 | 17.28 | 100.00 | _For detailed per-test information, see [traceability-standard.md](traceability-standard.md)._ \ No newline at end of file diff --git a/artifacts/linux/summary.md b/artifacts/linux/summary.md index 8b9ea053..e38f7dbd 100644 --- a/artifacts/linux/summary.md +++ b/artifacts/linux/summary.md @@ -1,12 +1,23 @@ ### Test Summary | OS | Passed | Failed | Skipped | Duration (s) | Pass Rate (%) | | --- | --- | --- | --- | --- | --- | -| overall | 4 | 0 | 0 | 0.67 | 100.00 | -| linux | 4 | 0 | 0 | 0.67 | 100.00 | +| overall | 59 | 0 | 0 | 17.28 | 100.00 | +| linux | 59 | 0 | 0 | 17.28 | 100.00 | ### Requirement Summary | Requirement ID | Description | Owner | Total Tests | Passed | Failed | Skipped | Pass Rate (%) | | --- | --- | --- | --- | --- | --- | --- | --- | -| Unmapped | | | 4 | 4 | 0 | 0 | 100.00 | +| REQ-023 | Parser ingests JUnit XML artifacts starting at the testsuites root and iterating through nested suites and testcases. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-024 | Top-level testsuites attributes name, tests, errors, failures, disabled, and time are captured for summary reporting. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-025 | Each testsuite records attributes including name, tests, errors, failures, hostname, id, skipped, disabled, package, and time. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-026 | Suite properties are extracted as name/value pairs for environment details. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-027 | Testcase attributes name, status, classname, assertions, time, and any skip message are preserved. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-028 | Requirement identifiers embedded in testcase names are detected and associated with the test. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-029 | Test results are aggregated by requirement and by suite to count passed, failed, and skipped cases. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-030 | Traceability matrix links requirement IDs to testcases with status, execution time, host properties, and skipped reasons. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-031 | Parsing logic validates presence of required fields and reports missing or malformed data. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-032 | Parser tolerates and retains unknown attributes for future extensibility. | | 1 | 1 | 0 | 0 | 100.00 | +| REQ-033 | Tests ending with SelfHosted.Workflow.Tests.ps1 execute only in dry run mode unless the workflow targets a self-hosted Windows runner labeled self-hosted-windows-lv. | | 1 | 1 | 0 | 0 | 100.00 | +| Unmapped | | | 48 | 48 | 0 | 0 | 100.00 | _For detailed per-test information, see [traceability.md](traceability.md)._ \ No newline at end of file diff --git a/artifacts/linux/traceability-standard.md b/artifacts/linux/traceability-standard.md index d46bd1ae..f6638d50 100644 --- a/artifacts/linux/traceability-standard.md +++ b/artifacts/linux/traceability-standard.md @@ -1,10 +1,122 @@ ### Test Traceability Matrix -#### Unmapped (100% passed) +#### REQ-023 (100% passed) | Requirement | Test ID | Status | Duration (s) | Owner | Evidence | | --- | --- | --- | --- | --- | --- | +| REQ-023 | parses-nested-junit-structures | Passed | 0.015 | | | + +#### REQ-024 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-024 | captures-root-testsuites-attributes | Passed | 0.006 | | | + +#### REQ-025 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-025 | captures-testsuite-attributes | Passed | 0.010 | | | + +#### REQ-026 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-026 | captures-suite-properties | Passed | 0.001 | | | + +#### REQ-027 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-027 | captures-testcase-attributes-and-skipped-message | Passed | 0.001 | | | + +#### REQ-028 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-028 | extracts-requirement-identifiers | Passed | 0.002 | | | + +#### REQ-029 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-029 | aggregates-status-by-requirement-and-suite | Passed | 0.002 | | | + +#### REQ-030 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-030 | builds-traceability-matrix-with-skipped-reasons | Passed | 0.002 | | | + +#### REQ-031 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-031 | validates-missing-fields | Passed | 0.001 | | | + +#### REQ-032 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-032 | preserves-unknown-attributes | Passed | 0.001 | | | + +#### REQ-033 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-033 | throws-error-for-malformed-xml | Passed | 0.002 | | | + +
Unmapped (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| Unmapped | associates-classname-with-requirement | Passed | 0.018 | | | +| Unmapped | buildissuebranchname-formats-branch-name | Passed | 0.001 | | | +| Unmapped | buildissuebranchname-rejects-non-numeric-input | Passed | 0.003 | | | | Unmapped | buildprofile1.iconeditor.addtokentolabview.dispatcher.dry-runs-add-token-to-labview-with-expected-arguments- | Passed | 0.482 | | | | Unmapped | buildprofile1.iconeditor.applyvipc.dispatcher.dry-runs-apply-vipc-with-expected-arguments- | Passed | 0.042 | | | | Unmapped | buildprofile1.iconeditor.buildvipackage.dispatcher.dry-runs-build-vi-package-with-expected-arguments- | Passed | 0.106 | | | -| Unmapped | buildprofile1.iconeditor.closelabview.dispatcher.dry-runs-close-labview-with-expected-arguments- | Passed | 0.036 | | | \ No newline at end of file +| Unmapped | buildprofile1.iconeditor.closelabview.dispatcher.dry-runs-close-labview-with-expected-arguments- | Passed | 0.036 | | | +| Unmapped | buildsummary-splits-totals-by-os | Passed | 0.001 | | | +| Unmapped | collecttestcases-captures-requirement-property | Passed | 0.024 | | | +| Unmapped | collecttestcases-uses-evidence-property-and-falls-back-to-directory-scan | Passed | 0.013 | | | +| Unmapped | collecttestcases-uses-machine-name-property-for-owner | Passed | 0.014 | | | +| Unmapped | computestatuscounts-tallies-test-statuses | Passed | 0.000 | | | +| Unmapped | detects-downloaded-artifacts-path | Passed | 0.999 | | | +| Unmapped | dispatchers-and-parameters-include-descriptions | Passed | 0.003 | | | +| Unmapped | errors-when-strict-unmapped-mode-enabled | Passed | 1.075 | | | +| Unmapped | escapemarkdown-escapes-special-characters | Passed | 0.001 | | | +| Unmapped | escapemarkdown-leaves-plain-text-untouched | Passed | 0.000 | | | +| Unmapped | fails-when-commit-lacks-requirement-reference | Passed | 0.916 | | | +| Unmapped | fails-when-requirement-lacks-test-coverage | Passed | 1.145 | | | +| Unmapped | fails-when-tests-are-unmapped | Passed | 0.854 | | | +| Unmapped | fails-when-tests-reference-unknown-requirements | Passed | 0.938 | | | +| Unmapped | formaterror-handles-plain-objects | Passed | 0.000 | | | +| Unmapped | formaterror-handles-primitives | Passed | 0.000 | | | +| Unmapped | formaterror-handles-real-error-objects | Passed | 0.003 | | | +| Unmapped | formaterror-handles-unstringifiable-values | Passed | 0.000 | | | +| Unmapped | generate-ci-summary-features | Passed | 0.022 | | | +| Unmapped | groups-owners-and-includes-requirements-and-evidence | Passed | 1.019 | | | +| Unmapped | grouptomarkdown-omits-numeric-identifiers | Passed | 0.002 | | | +| Unmapped | grouptomarkdown-supports-optional-limit-for-truncation | Passed | 0.001 | | | +| Unmapped | handles-root-level-testcases | Passed | 0.000 | | | +| Unmapped | handles-zipped-junit-artifacts | Passed | 0.816 | | | +| Unmapped | ignores-stale-junit-files-outside-artifacts-path | Passed | 0.875 | | | +| Unmapped | loadrequirements-logs-warning-on-invalid-json | Passed | 0.015 | | | +| Unmapped | loadrequirements-merges-multiple-files | Passed | 0.008 | | | +| Unmapped | loadrequirements-warns-and-skips-invalid-entries | Passed | 0.004 | | | +| Unmapped | logs-a-warning-when-no-junit-files-are-found | Passed | 0.908 | | | +| Unmapped | partitions-requirement-groups-by-runner\_type | Passed | 0.769 | | | +| Unmapped | passes-with-coverage-and-requirement-reference | Passed | 1.067 | | | +| Unmapped | requirementssummarytomarkdown-escapes-pipes-in-description | Passed | 0.000 | | | +| Unmapped | skips-invalid-junit-files-and-still-generates-summary | Passed | 1.101 | | | +| Unmapped | summarytomarkdown-handles-no-tests | Passed | 0.000 | | | +| Unmapped | summarytomarkdown-sorts-os-alphabetically-and-escapes-special-characters | Passed | 0.001 | | | +| Unmapped | throws-when-no-junit-files-found-and-strict-mode-enabled | Passed | 0.657 | | | +| Unmapped | uses-latest-artifact-directory-when-multiple-are-present | Passed | 0.914 | | | +| Unmapped | warns-when-all-tests-are-unmapped | Passed | 1.131 | | | +| Unmapped | writeerrorsummary-appends-error-details-to-summary-file | Passed | 0.012 | | | +| Unmapped | writeerrorsummary-skips-summary-file-for-non-error-throws | Passed | 0.004 | | | +| Unmapped | writes-outputs-to-os-specific-directory | Passed | 1.242 | | | + +
\ No newline at end of file diff --git a/artifacts/linux/traceability.json b/artifacts/linux/traceability.json index 7ded38d4..c517ab6d 100644 --- a/artifacts/linux/traceability.json +++ b/artifacts/linux/traceability.json @@ -1,8 +1,222 @@ { "requirements": [ + { + "id": "REQ-023", + "description": "Parser ingests JUnit XML artifacts starting at the testsuites root and iterating through nested suites and testcases.", + "tests": [ + { + "id": "parses-nested-junit-structures", + "name": "[REQ-023] parses nested JUnit structures", + "className": "test", + "status": "Passed", + "duration": 0.015367, + "requirements": [ + "REQ-023" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-024", + "description": "Top-level testsuites attributes name, tests, errors, failures, disabled, and time are captured for summary reporting.", + "tests": [ + { + "id": "captures-root-testsuites-attributes", + "name": "[REQ-024] captures root testsuites attributes", + "className": "test", + "status": "Passed", + "duration": 0.005649, + "requirements": [ + "REQ-024" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-025", + "description": "Each testsuite records attributes including name, tests, errors, failures, hostname, id, skipped, disabled, package, and time.", + "tests": [ + { + "id": "captures-testsuite-attributes", + "name": "[REQ-025] captures testsuite attributes", + "className": "test", + "status": "Passed", + "duration": 0.010137, + "requirements": [ + "REQ-025" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-026", + "description": "Suite properties are extracted as name/value pairs for environment details.", + "tests": [ + { + "id": "captures-suite-properties", + "name": "[REQ-026] captures suite properties", + "className": "test", + "status": "Passed", + "duration": 0.000926, + "requirements": [ + "REQ-026" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-027", + "description": "Testcase attributes name, status, classname, assertions, time, and any skip message are preserved.", + "tests": [ + { + "id": "captures-testcase-attributes-and-skipped-message", + "name": "[REQ-027] captures testcase attributes and skipped message", + "className": "test", + "status": "Passed", + "duration": 0.000682, + "requirements": [ + "REQ-027" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-028", + "description": "Requirement identifiers embedded in testcase names are detected and associated with the test.", + "tests": [ + { + "id": "extracts-requirement-identifiers", + "name": "[REQ-028] extracts requirement identifiers", + "className": "test", + "status": "Passed", + "duration": 0.001617, + "requirements": [ + "REQ-028" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-029", + "description": "Test results are aggregated by requirement and by suite to count passed, failed, and skipped cases.", + "tests": [ + { + "id": "aggregates-status-by-requirement-and-suite", + "name": "[REQ-029] aggregates status by requirement and suite", + "className": "test", + "status": "Passed", + "duration": 0.001629, + "requirements": [ + "REQ-029" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-030", + "description": "Traceability matrix links requirement IDs to testcases with status, execution time, host properties, and skipped reasons.", + "tests": [ + { + "id": "builds-traceability-matrix-with-skipped-reasons", + "name": "[REQ-030] builds traceability matrix with skipped reasons", + "className": "test", + "status": "Passed", + "duration": 0.001713, + "requirements": [ + "REQ-030" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-031", + "description": "Parsing logic validates presence of required fields and reports missing or malformed data.", + "tests": [ + { + "id": "validates-missing-fields", + "name": "[REQ-031] validates missing fields", + "className": "test", + "status": "Passed", + "duration": 0.000838, + "requirements": [ + "REQ-031" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-032", + "description": "Parser tolerates and retains unknown attributes for future extensibility.", + "tests": [ + { + "id": "preserves-unknown-attributes", + "name": "[REQ-032] preserves unknown attributes", + "className": "test", + "status": "Passed", + "duration": 0.000567, + "requirements": [ + "REQ-032" + ], + "os": "linux" + } + ] + }, + { + "id": "REQ-033", + "description": "Tests ending with SelfHosted.Workflow.Tests.ps1 execute only in dry run mode unless the workflow targets a self-hosted Windows runner labeled self-hosted-windows-lv.", + "tests": [ + { + "id": "throws-error-for-malformed-xml", + "name": "[REQ-033] throws error for malformed XML", + "className": "test", + "status": "Passed", + "duration": 0.001633, + "requirements": [ + "REQ-033" + ], + "os": "linux" + } + ] + }, { "id": "Unmapped", "tests": [ + { + "id": "associates-classname-with-requirement", + "name": "associates classname with requirement", + "className": "test", + "status": "Passed", + "duration": 0.017978, + "requirements": [], + "os": "linux" + }, + { + "id": "buildissuebranchname-formats-branch-name", + "name": "buildIssueBranchName formats branch name", + "className": "test", + "status": "Passed", + "duration": 0.00114, + "requirements": [], + "os": "linux" + }, + { + "id": "buildissuebranchname-rejects-non-numeric-input", + "name": "buildIssueBranchName rejects non-numeric input", + "className": "test", + "status": "Passed", + "duration": 0.002863, + "requirements": [], + "os": "linux" + }, { "id": "buildprofile1.iconeditor.addtokentolabview.dispatcher.dry-runs-add-token-to-labview-with-expected-arguments-", "name": "BuildProfile1.IconEditor.AddTokenToLabview.Dispatcher.dry-runs add-token-to-labview with expected arguments [REQIE-001]", @@ -38,24 +252,393 @@ "duration": 0.036, "requirements": [], "os": "linux" + }, + { + "id": "buildsummary-splits-totals-by-os", + "name": "buildSummary splits totals by OS", + "className": "test", + "status": "Passed", + "duration": 0.000577, + "requirements": [], + "os": "linux" + }, + { + "id": "collecttestcases-captures-requirement-property", + "name": "collectTestCases captures requirement property", + "className": "test", + "status": "Passed", + "duration": 0.02373, + "requirements": [], + "os": "linux" + }, + { + "id": "collecttestcases-uses-evidence-property-and-falls-back-to-directory-scan", + "name": "collectTestCases uses evidence property and falls back to directory scan", + "className": "test", + "status": "Passed", + "duration": 0.013354, + "requirements": [], + "os": "linux" + }, + { + "id": "collecttestcases-uses-machine-name-property-for-owner", + "name": "collectTestCases uses machine-name property for owner", + "className": "test", + "status": "Passed", + "duration": 0.014287, + "requirements": [], + "os": "linux" + }, + { + "id": "computestatuscounts-tallies-test-statuses", + "name": "computeStatusCounts tallies test statuses", + "className": "test", + "status": "Passed", + "duration": 0.000306, + "requirements": [], + "os": "linux" + }, + { + "id": "detects-downloaded-artifacts-path", + "name": "detects downloaded artifacts path", + "className": "test", + "status": "Passed", + "duration": 0.998774, + "requirements": [], + "os": "linux" + }, + { + "id": "dispatchers-and-parameters-include-descriptions", + "name": "Dispatchers and parameters include descriptions", + "className": "test", + "status": "Passed", + "duration": 0.003332, + "requirements": [], + "os": "linux" + }, + { + "id": "errors-when-strict-unmapped-mode-enabled", + "name": "errors when strict unmapped mode enabled", + "className": "test", + "status": "Passed", + "duration": 1.075037, + "requirements": [], + "os": "linux" + }, + { + "id": "escapemarkdown-escapes-special-characters", + "name": "escapeMarkdown escapes special characters", + "className": "test", + "status": "Passed", + "duration": 0.001169, + "requirements": [], + "os": "linux" + }, + { + "id": "escapemarkdown-leaves-plain-text-untouched", + "name": "escapeMarkdown leaves plain text untouched", + "className": "test", + "status": "Passed", + "duration": 0.000191, + "requirements": [], + "os": "linux" + }, + { + "id": "fails-when-commit-lacks-requirement-reference", + "name": "fails when commit lacks requirement reference", + "className": "test", + "status": "Passed", + "duration": 0.915909, + "requirements": [], + "os": "linux" + }, + { + "id": "fails-when-requirement-lacks-test-coverage", + "name": "fails when requirement lacks test coverage", + "className": "test", + "status": "Passed", + "duration": 1.14534, + "requirements": [], + "os": "linux" + }, + { + "id": "fails-when-tests-are-unmapped", + "name": "fails when tests are unmapped", + "className": "test", + "status": "Passed", + "duration": 0.853508, + "requirements": [], + "os": "linux" + }, + { + "id": "fails-when-tests-reference-unknown-requirements", + "name": "fails when tests reference unknown requirements", + "className": "test", + "status": "Passed", + "duration": 0.938316, + "requirements": [], + "os": "linux" + }, + { + "id": "formaterror-handles-plain-objects", + "name": "formatError handles plain objects", + "className": "test", + "status": "Passed", + "duration": 0.000306, + "requirements": [], + "os": "linux" + }, + { + "id": "formaterror-handles-primitives", + "name": "formatError handles primitives", + "className": "test", + "status": "Passed", + "duration": 0.000128, + "requirements": [], + "os": "linux" + }, + { + "id": "formaterror-handles-real-error-objects", + "name": "formatError handles real Error objects", + "className": "test", + "status": "Passed", + "duration": 0.002535, + "requirements": [], + "os": "linux" + }, + { + "id": "formaterror-handles-unstringifiable-values", + "name": "formatError handles unstringifiable values", + "className": "test", + "status": "Passed", + "duration": 0.000345, + "requirements": [], + "os": "linux" + }, + { + "id": "generate-ci-summary-features", + "name": "generate-ci-summary features", + "className": "test", + "status": "Passed", + "duration": 0.022454, + "requirements": [], + "os": "linux" + }, + { + "id": "groups-owners-and-includes-requirements-and-evidence", + "name": "groups owners and includes requirements and evidence", + "className": "test", + "status": "Passed", + "duration": 1.018638, + "requirements": [], + "os": "linux" + }, + { + "id": "grouptomarkdown-omits-numeric-identifiers", + "name": "groupToMarkdown omits numeric identifiers", + "className": "test", + "status": "Passed", + "duration": 0.001864, + "requirements": [], + "os": "linux" + }, + { + "id": "grouptomarkdown-supports-optional-limit-for-truncation", + "name": "groupToMarkdown supports optional limit for truncation", + "className": "test", + "status": "Passed", + "duration": 0.000604, + "requirements": [], + "os": "linux" + }, + { + "id": "handles-root-level-testcases", + "name": "handles root-level testcases", + "className": "test", + "status": "Passed", + "duration": 0.000452, + "requirements": [], + "os": "linux" + }, + { + "id": "handles-zipped-junit-artifacts", + "name": "handles zipped JUnit artifacts", + "className": "test", + "status": "Passed", + "duration": 0.816208, + "requirements": [], + "os": "linux" + }, + { + "id": "ignores-stale-junit-files-outside-artifacts-path", + "name": "ignores stale JUnit files outside artifacts path", + "className": "test", + "status": "Passed", + "duration": 0.874948, + "requirements": [], + "os": "linux" + }, + { + "id": "loadrequirements-logs-warning-on-invalid-json", + "name": "loadRequirements logs warning on invalid JSON", + "className": "test", + "status": "Passed", + "duration": 0.014903, + "requirements": [], + "os": "linux" + }, + { + "id": "loadrequirements-merges-multiple-files", + "name": "loadRequirements merges multiple files", + "className": "test", + "status": "Passed", + "duration": 0.008402, + "requirements": [], + "os": "linux" + }, + { + "id": "loadrequirements-warns-and-skips-invalid-entries", + "name": "loadRequirements warns and skips invalid entries", + "className": "test", + "status": "Passed", + "duration": 0.00367, + "requirements": [], + "os": "linux" + }, + { + "id": "logs-a-warning-when-no-junit-files-are-found", + "name": "logs a warning when no JUnit files are found", + "className": "test", + "status": "Passed", + "duration": 0.907921, + "requirements": [], + "os": "linux" + }, + { + "id": "partitions-requirement-groups-by-runner_type", + "name": "partitions requirement groups by runner_type", + "className": "test", + "status": "Passed", + "duration": 0.768752, + "requirements": [], + "os": "linux" + }, + { + "id": "passes-with-coverage-and-requirement-reference", + "name": "passes with coverage and requirement reference", + "className": "test", + "status": "Passed", + "duration": 1.066877, + "requirements": [], + "os": "linux" + }, + { + "id": "requirementssummarytomarkdown-escapes-pipes-in-description", + "name": "requirementsSummaryToMarkdown escapes pipes in description", + "className": "test", + "status": "Passed", + "duration": 0.000375, + "requirements": [], + "os": "linux" + }, + { + "id": "skips-invalid-junit-files-and-still-generates-summary", + "name": "skips invalid JUnit files and still generates summary", + "className": "test", + "status": "Passed", + "duration": 1.101184, + "requirements": [], + "os": "linux" + }, + { + "id": "summarytomarkdown-handles-no-tests", + "name": "summaryToMarkdown handles no tests", + "className": "test", + "status": "Passed", + "duration": 0.000344, + "requirements": [], + "os": "linux" + }, + { + "id": "summarytomarkdown-sorts-os-alphabetically-and-escapes-special-characters", + "name": "summaryToMarkdown sorts OS alphabetically and escapes special characters", + "className": "test", + "status": "Passed", + "duration": 0.000572, + "requirements": [], + "os": "linux" + }, + { + "id": "throws-when-no-junit-files-found-and-strict-mode-enabled", + "name": "throws when no JUnit files found and strict mode enabled", + "className": "test", + "status": "Passed", + "duration": 0.657427, + "requirements": [], + "os": "linux" + }, + { + "id": "uses-latest-artifact-directory-when-multiple-are-present", + "name": "uses latest artifact directory when multiple are present", + "className": "test", + "status": "Passed", + "duration": 0.914005, + "requirements": [], + "os": "linux" + }, + { + "id": "warns-when-all-tests-are-unmapped", + "name": "warns when all tests are unmapped", + "className": "test", + "status": "Passed", + "duration": 1.131071, + "requirements": [], + "os": "linux" + }, + { + "id": "writeerrorsummary-appends-error-details-to-summary-file", + "name": "writeErrorSummary appends error details to summary file", + "className": "test", + "status": "Passed", + "duration": 0.011979, + "requirements": [], + "os": "linux" + }, + { + "id": "writeerrorsummary-skips-summary-file-for-non-error-throws", + "name": "writeErrorSummary skips summary file for non-Error throws", + "className": "test", + "status": "Passed", + "duration": 0.003976, + "requirements": [], + "os": "linux" + }, + { + "id": "writes-outputs-to-os-specific-directory", + "name": "writes outputs to OS-specific directory", + "className": "test", + "status": "Passed", + "duration": 1.242115, + "requirements": [], + "os": "linux" } ] } ], "totals": { "overall": { - "passed": 4, + "passed": 59, "failed": 0, "skipped": 0, - "duration": 0.666, + "duration": 17.284624, "rate": 100 }, "byOs": { "linux": { - "passed": 4, + "passed": 59, "failed": 0, "skipped": 0, - "duration": 0.666, + "duration": 17.284624, "rate": 100 } } diff --git a/artifacts/linux/traceability.md b/artifacts/linux/traceability.md index d46bd1ae..f6638d50 100644 --- a/artifacts/linux/traceability.md +++ b/artifacts/linux/traceability.md @@ -1,10 +1,122 @@ ### Test Traceability Matrix -#### Unmapped (100% passed) +#### REQ-023 (100% passed) | Requirement | Test ID | Status | Duration (s) | Owner | Evidence | | --- | --- | --- | --- | --- | --- | +| REQ-023 | parses-nested-junit-structures | Passed | 0.015 | | | + +#### REQ-024 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-024 | captures-root-testsuites-attributes | Passed | 0.006 | | | + +#### REQ-025 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-025 | captures-testsuite-attributes | Passed | 0.010 | | | + +#### REQ-026 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-026 | captures-suite-properties | Passed | 0.001 | | | + +#### REQ-027 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-027 | captures-testcase-attributes-and-skipped-message | Passed | 0.001 | | | + +#### REQ-028 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-028 | extracts-requirement-identifiers | Passed | 0.002 | | | + +#### REQ-029 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-029 | aggregates-status-by-requirement-and-suite | Passed | 0.002 | | | + +#### REQ-030 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-030 | builds-traceability-matrix-with-skipped-reasons | Passed | 0.002 | | | + +#### REQ-031 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-031 | validates-missing-fields | Passed | 0.001 | | | + +#### REQ-032 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-032 | preserves-unknown-attributes | Passed | 0.001 | | | + +#### REQ-033 (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| REQ-033 | throws-error-for-malformed-xml | Passed | 0.002 | | | + +
Unmapped (100% passed) + +| Requirement | Test ID | Status | Duration (s) | Owner | Evidence | +| --- | --- | --- | --- | --- | --- | +| Unmapped | associates-classname-with-requirement | Passed | 0.018 | | | +| Unmapped | buildissuebranchname-formats-branch-name | Passed | 0.001 | | | +| Unmapped | buildissuebranchname-rejects-non-numeric-input | Passed | 0.003 | | | | Unmapped | buildprofile1.iconeditor.addtokentolabview.dispatcher.dry-runs-add-token-to-labview-with-expected-arguments- | Passed | 0.482 | | | | Unmapped | buildprofile1.iconeditor.applyvipc.dispatcher.dry-runs-apply-vipc-with-expected-arguments- | Passed | 0.042 | | | | Unmapped | buildprofile1.iconeditor.buildvipackage.dispatcher.dry-runs-build-vi-package-with-expected-arguments- | Passed | 0.106 | | | -| Unmapped | buildprofile1.iconeditor.closelabview.dispatcher.dry-runs-close-labview-with-expected-arguments- | Passed | 0.036 | | | \ No newline at end of file +| Unmapped | buildprofile1.iconeditor.closelabview.dispatcher.dry-runs-close-labview-with-expected-arguments- | Passed | 0.036 | | | +| Unmapped | buildsummary-splits-totals-by-os | Passed | 0.001 | | | +| Unmapped | collecttestcases-captures-requirement-property | Passed | 0.024 | | | +| Unmapped | collecttestcases-uses-evidence-property-and-falls-back-to-directory-scan | Passed | 0.013 | | | +| Unmapped | collecttestcases-uses-machine-name-property-for-owner | Passed | 0.014 | | | +| Unmapped | computestatuscounts-tallies-test-statuses | Passed | 0.000 | | | +| Unmapped | detects-downloaded-artifacts-path | Passed | 0.999 | | | +| Unmapped | dispatchers-and-parameters-include-descriptions | Passed | 0.003 | | | +| Unmapped | errors-when-strict-unmapped-mode-enabled | Passed | 1.075 | | | +| Unmapped | escapemarkdown-escapes-special-characters | Passed | 0.001 | | | +| Unmapped | escapemarkdown-leaves-plain-text-untouched | Passed | 0.000 | | | +| Unmapped | fails-when-commit-lacks-requirement-reference | Passed | 0.916 | | | +| Unmapped | fails-when-requirement-lacks-test-coverage | Passed | 1.145 | | | +| Unmapped | fails-when-tests-are-unmapped | Passed | 0.854 | | | +| Unmapped | fails-when-tests-reference-unknown-requirements | Passed | 0.938 | | | +| Unmapped | formaterror-handles-plain-objects | Passed | 0.000 | | | +| Unmapped | formaterror-handles-primitives | Passed | 0.000 | | | +| Unmapped | formaterror-handles-real-error-objects | Passed | 0.003 | | | +| Unmapped | formaterror-handles-unstringifiable-values | Passed | 0.000 | | | +| Unmapped | generate-ci-summary-features | Passed | 0.022 | | | +| Unmapped | groups-owners-and-includes-requirements-and-evidence | Passed | 1.019 | | | +| Unmapped | grouptomarkdown-omits-numeric-identifiers | Passed | 0.002 | | | +| Unmapped | grouptomarkdown-supports-optional-limit-for-truncation | Passed | 0.001 | | | +| Unmapped | handles-root-level-testcases | Passed | 0.000 | | | +| Unmapped | handles-zipped-junit-artifacts | Passed | 0.816 | | | +| Unmapped | ignores-stale-junit-files-outside-artifacts-path | Passed | 0.875 | | | +| Unmapped | loadrequirements-logs-warning-on-invalid-json | Passed | 0.015 | | | +| Unmapped | loadrequirements-merges-multiple-files | Passed | 0.008 | | | +| Unmapped | loadrequirements-warns-and-skips-invalid-entries | Passed | 0.004 | | | +| Unmapped | logs-a-warning-when-no-junit-files-are-found | Passed | 0.908 | | | +| Unmapped | partitions-requirement-groups-by-runner\_type | Passed | 0.769 | | | +| Unmapped | passes-with-coverage-and-requirement-reference | Passed | 1.067 | | | +| Unmapped | requirementssummarytomarkdown-escapes-pipes-in-description | Passed | 0.000 | | | +| Unmapped | skips-invalid-junit-files-and-still-generates-summary | Passed | 1.101 | | | +| Unmapped | summarytomarkdown-handles-no-tests | Passed | 0.000 | | | +| Unmapped | summarytomarkdown-sorts-os-alphabetically-and-escapes-special-characters | Passed | 0.001 | | | +| Unmapped | throws-when-no-junit-files-found-and-strict-mode-enabled | Passed | 0.657 | | | +| Unmapped | uses-latest-artifact-directory-when-multiple-are-present | Passed | 0.914 | | | +| Unmapped | warns-when-all-tests-are-unmapped | Passed | 1.131 | | | +| Unmapped | writeerrorsummary-appends-error-details-to-summary-file | Passed | 0.012 | | | +| Unmapped | writeerrorsummary-skips-summary-file-for-non-error-throws | Passed | 0.004 | | | +| Unmapped | writes-outputs-to-os-specific-directory | Passed | 1.242 | | | + +
\ No newline at end of file diff --git a/ci_evidence.txt b/ci_evidence.txt index ce05fb35..41ba5c99 100644 --- a/ci_evidence.txt +++ b/ci_evidence.txt @@ -1 +1 @@ -{"pipeline":"Unknown","git_sha":"4a4d08c05d6852d7aa75ba72c5fb1f39370560ad","req_status":{}} \ No newline at end of file +{"pipeline":"Unknown","git_sha":"85a73ea39c0b2fe1e91c7dc2504fd8fcd7a71b52","req_status":{"REQ-023":"PASS","REQ-024":"PASS","REQ-025":"PASS","REQ-026":"PASS","REQ-027":"PASS","REQ-028":"PASS","REQ-029":"PASS","REQ-030":"PASS","REQ-031":"PASS","REQ-032":"PASS","REQ-033":"PASS"}} \ No newline at end of file diff --git a/error-summary.md b/error-summary.md index d9cc5343..1301db89 100644 --- a/error-summary.md +++ b/error-summary.md @@ -40,6 +40,22 @@ Error: All tests are unmapped; verify requirements mapping. ``` +### Error generating CI summary + +``` +Error: No JUnit files found + at main (/workspace/open-source/scripts/generate-ci-summary.ts:79:15) +``` + + +### Error generating CI summary + +``` +Error: All tests are unmapped; verify requirements mapping. + at main (/workspace/open-source/scripts/generate-ci-summary.ts:94:13) +``` + + ### Error generating CI summary ``` diff --git a/test-results/node-junit.xml b/test-results/node-junit.xml index 32a8e32d..29670deb 100644 --- a/test-results/node-junit.xml +++ b/test-results/node-junit.xml @@ -1,2 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +