Skip to content
Open
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
62 changes: 62 additions & 0 deletions .github/actions/run_osc_validation/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: "Run osc-validation"
description: "Install osc-validation, run pytest suite with HTML report, and collect artifacts"
runs:
using: "composite"
steps:

- name: Checkout osc-validation
uses: actions/checkout@v4
with:
repository: PMSFIT/osc-validation
ref: v0.2.0
fetch-depth: 1
path: osc-validation

- name: Set up Python venv
shell: bash
run: |
pushd osc-validation
python3 -m venv .venv
source .venv/bin/activate
pip install -e . "numpy<2.0"
popd

- name: Run osc-validation
id: run_tests
shell: bash
run: |
pushd osc-validation
source .venv/bin/activate

SIM_BIN="$(pwd)/../bin/esmini"
echo "Using esmini binary: $SIM_BIN"

mkdir -p osc_validation_results

set +e
osc-validate \
--tool ESMini \
--toolpath "$SIM_BIN" \
--test-profile "$GITHUB_ACTION_PATH/test_profile.toml" \
--html osc_validation_results/report.html
code=$?
echo "exitcode=$code" >> $GITHUB_OUTPUT
echo "osc-validation finished with exit code $code"

popd

- name: Upload osc-validation artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: osc-validation
path: osc-validation/osc_validation_results

- name: Fail if tests failed
if: always()
shell: bash
run: |
if [ "${{ steps.run_tests.outputs.exitcode }}" != "0" ]; then
echo "osc-validation failed"
exit 1
fi
15 changes: 15 additions & 0 deletions .github/actions/run_osc_validation/test_profile.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[[xfail]]
test = "scenario/trajectories/val_interpolation.py::test_timed_polyline_trajectory_interpolation[constant_acceleration_from_initial_speed-*]"
reason = "ESMini does not currently support timed polyline constant-acceleration interpolation."

[[xfail]]
test = "scenario/trajectories/val_follow_trajectory_future_time_reference.py::test_follow_trajectory_future_time_reference_continues_init_speed_until_first_vertex"
reason = "ESMini does not currently implement this OpenSCENARIO FollowTrajectoryAction special case (OpenSCENARIO Specification section 6.9.2)."

[[xfail]]
test = "scenario/trajectories/val_follow_trajectory_teleport.py::test_follow_trajectory_position_mode_teleports_to_current_trajectory_time[exact_trajectory_point-2.0]"
reason = "ESMini does not currently implement this OpenSCENARIO FollowTrajectoryAction special case (OpenSCENARIO Specification section 6.9.3)."

[[xfail]]
test = "scenario/trajectories/val_follow_trajectory_teleport.py::test_follow_trajectory_position_mode_teleports_to_current_trajectory_time[between_trajectory_points-1.0]"
reason = "ESMini does not currently implement this OpenSCENARIO FollowTrajectoryAction special case (OpenSCENARIO Specification section 6.9.3)."
19 changes: 19 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,25 @@ jobs:
if: ${{ failure() && env.USE_TMATE == 'true' }}
uses: mxschmitt/action-tmate@v3

osc-validation:
needs: [test]
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v6

- uses: actions/download-artifact@v4.1.7
with:
name: esmini-bin_Linux

- name: Extract Ubuntu release binary artifact
run: |
unzip -q esmini-bin_Linux.zip
ln -s esmini/bin bin

- name: Run osc-validation
uses: ./.github/actions/run_osc_validation

test-no-external-modules:
needs: [lint]

Expand Down
Loading