--- a +++ b/.github/workflows/test.yml @@ -0,0 +1,71 @@ +name: Tests + + +on: + push: + branches: [master] + pull_request: + + workflow_dispatch: + inputs: + use-custom-anybodycon: + type: boolean + description: 'Use a custom version of AnyBody from AMS build system.' + default: false + custom-anybodycon-name: + description: 'Name of the custom AnyBody version to use. (E.g. path on the I:\ drive)' + required: false + default: 'AnyBody.8.0-CI-master.AnyBody.8.1.x/AnyBodyCon.exe' + custom-pytest-arg: + description: 'Specify which test to run. E.g. `Tests/test_example.any`. Default is entire test suite.' + required: false + default: '' + +concurrency: + group: Test-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + if: ${{ !github.event.pull_request.head.repo.fork && github.repository == 'anybody/ammr' }} + strategy: + fail-fast: false + matrix: + test_group: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] + + env: + # Triggers a warning at 20 deg + ShortestPathMaxAngle: 0.3491 + + runs-on: windows-latest + + steps: + + - uses: actions/checkout@v4 + + - uses: prefix-dev/setup-pixi@v0.8.7 + with: + environments: test + cache-write: ${{ github.event_name == 'push' && github.ref_name == 'master' }} + activate-environment: test + + - name: Patch with custom version + if: inputs.use-custom-anybodycon + uses: ./.github/actions/custom-anybodycon + with: + custom-anybodycon: ${{ inputs.custom-anybodycon-name }} + connection-string: ${{ secrets.AZURE_CONN_STR }} + target-path: .pixi/envs/test/bin/AnyBodyCon.exe + + - name: Run AMMR tests + run: | + cd Tests + pytest -n auto --dist worksteal ` + --splits 20 --group ${{ matrix.test_group }} --splitting-algorithm=least_duration ` + --durations=10 ` + --runslow + ${{ github.event.inputs.custom-pytest-arg || '' }} + + env: + RLM_LICENSE: ${{ secrets.LICENSE_SERVER }} + RLM_LICENSE_PASSWORD: ${{ secrets.LICENSE_PASSWORD }}