From 6a9fa8e80899c4598670cca7dc2acfd4e7b3dd4c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 18 May 2026 08:31:12 +0000 Subject: [PATCH] Add validation test ratio output and badge Agent-Logs-Url: https://github.com/PMSFIT/osc-simulator/sessions/44df84a5-0c30-48a1-8ee4-a855e205609f Co-authored-by: pmai <91502+pmai@users.noreply.github.com> --- .github/workflows/validation.yml | 41 +++++++++++++++++++++++++++++++- README.md | 1 + 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index d8be088..14b424e 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -8,7 +8,7 @@ on: workflow_dispatch: permissions: - contents: read + contents: write jobs: validate: @@ -44,14 +44,53 @@ jobs: run: poetry install --no-interaction - name: Run osc-validation suite + id: run_validation working-directory: osc-validation run: | + set +e poetry run pytest validation/scenario \ --tool OscSimulator \ --toolpath "$(which osc-simulator)" \ --html=validation-report.html \ + --junitxml=validation-results.xml \ --self-contained-html \ -v + pytest_exit_code=$? + python - <<'PY' + import os + import xml.etree.ElementTree as ET + + total_tests = 0 + failures = 0 + errors = 0 + skipped = 0 + + try: + root = ET.parse("validation-results.xml").getroot() + suites = [root] if root.tag == "testsuite" else root.findall("testsuite") + for suite in suites: + total_tests += int(suite.attrib.get("tests", 0)) + failures += int(suite.attrib.get("failures", 0)) + errors += int(suite.attrib.get("errors", 0)) + skipped += int(suite.attrib.get("skipped", 0)) + except Exception: + pass + + passed_tests = max(total_tests - failures - errors - skipped, 0) + with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as github_output: + github_output.write(f"total_tests={total_tests}\n") + github_output.write(f"passed_tests={passed_tests}\n") + PY + exit "$pytest_exit_code" + + - name: Build validation ratio badge + if: always() + uses: peterrhodesdev/build-a-badge@v1.3.1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + filename: validation-suite-tests + label: validation + message: ${{ steps.run_validation.outputs.passed_tests }}/${{ steps.run_validation.outputs.total_tests }} - name: Upload validation report if: always() diff --git a/README.md b/README.md index fd3f222..c6d43e9 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![Build and Test](https://github.com/PMSFIT/osc-simulator/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/PMSFIT/osc-simulator/actions/workflows/build-and-test.yml) [![Validation](https://github.com/PMSFIT/osc-simulator/actions/workflows/validation.yml/badge.svg)](https://github.com/PMSFIT/osc-simulator/actions/workflows/validation.yml) +[![Validation Tests](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/wiki/PMSFIT/osc-simulator/validation-suite-tests.md)](https://github.com/PMSFIT/osc-simulator/actions/workflows/validation.yml) This repository provides a baseline simulator for ASAM OpenSCENARIO XML scenarios. It serves as an adjunct to the [OpenSCENARIO XML Validation Suite](https://github.com/PMSFIT/osc-validation), which provides test cases to validate a scenario engine against a subset of the [ASAM OpenSCENARIO XML standard](https://www.asam.net/standards/detail/openscenario-xml/).