diff --git a/.github/workflows/testing-all-oses.yml b/.github/workflows/testing-all-oses.yml new file mode 100644 index 000000000..ef214edca --- /dev/null +++ b/.github/workflows/testing-all-oses.yml @@ -0,0 +1,54 @@ +name: Test MSS + +on: + push: + pull_request: + +jobs: + Test-MSS: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: ["macos-12", "macos-14", "ubuntu-latest", "windows-latest"] + order: ["normal", "reverse"] + + steps: + - uses: actions/checkout@v4 + - name: Build requirements.txt file + run: | + cat localbuild/meta.yaml | + sed -n '/^requirements:/,/^test:/p' | + sed -e "s/.*- //" | + sed -e "s/menuinst.*//" | + sed -e "s/.*://" > requirements.tmp.txt + cat requirements.d/development.txt >> requirements.tmp.txt + sed -e '/^$/d' -e '/^#.*$/d' requirements.tmp.txt > requirements.txt + rm requirements.tmp.txt + cat requirements.txt + - name: Remove unavailable dependencies on Windows + if: ${{ startsWith(matrix.os, 'windows') }} + run: sed -i -e '/^dbus-python.*$/d' -e '/^libxmlsec1.*$/d' requirements.txt + - name: Get current year and calendar week + id: year-and-week + run: echo "year-and-week=$(date +%Y-%V)" >> "${GITHUB_OUTPUT}" + - uses: mamba-org/setup-micromamba@v1 + with: + environment-file: requirements.txt + environment-name: ci + cache-environment: true + # Set the cache key in a way that the cache is invalidated every week on monday + cache-environment-key: environment-${{ steps.year-and-week.outputs.year-and-week }} + - name: Run tests + timeout-minutes: 20 + run: micromamba run -n ci ${{ (startsWith(matrix.os, 'ubuntu') && 'xvfb-run') || 'env QT_QPA_PLATFORM=offscreen' }} + pytest -v -n 6 --dist loadfile --max-worker-restart 4 --durations=20 --cov=mslib + ${{ (matrix.order == 'normal' && ' ') || (matrix.order == 'reverse' && '--reverse') }} tests + - name: Collect coverage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git config --global --add safe.directory /__w/MSS/MSS + micromamba create -n coveralls coveralls + micromamba run -n coveralls coveralls --service=github