From 0317aa42279bc5916ce8cc44083cb65f386c7266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Ri=C3=9Fe?= Date: Thu, 15 Feb 2024 12:46:56 +0100 Subject: [PATCH] WIP --- .github/workflows/testing-all-oses.yml | 85 ++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 .github/workflows/testing-all-oses.yml diff --git a/.github/workflows/testing-all-oses.yml b/.github/workflows/testing-all-oses.yml new file mode 100644 index 000000000..22d6cff72 --- /dev/null +++ b/.github/workflows/testing-all-oses.yml @@ -0,0 +1,85 @@ +name: Test MSS + +on: + push: + pull_request: + +jobs: + test: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: ["macos-12", "macos-14", "ubuntu-latest", "windows-latest"] + order: ["normal", "reverse"] + headless-method: ["env QT_QPA_PLATFORM=offscreen"] + include: + - os: "ubuntu-latest" + order: "normal" + headless-method: "xvfb-run" + - os: "ubuntu-latest" + order: "reverse" + headless-method: "xvfb-run" + + steps: + # This workaround is necessary because PyFilesystem2 throws an InvalidCharsInPath error: + # fs.errors.InvalidCharsInPath: path 'C:/Users/RUNNER~1/AppData/Local/Temp/tmp4hu4dmfwmsui546ffd7ad0/colabTestData/uploads/1' contains invalid characters + # This is caused by the short name conversion ("RUNNER~1"). + # The workaround is described here: https://github.com/actions/runner-images/issues/712#issuecomment-613004302 + - name: Workaround for TMP and TEMP path on windows + if: ${{ startsWith(matrix.os, 'windows') }} + run: | + echo "TMP=%USERPROFILE%\AppData\Local\Temp" >> "$GITHUB_ENV" + echo "TEMP=%USERPROFILE%\AppData\Local\Temp" >> "$GITHUB_ENV" + - 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 ${{ matrix.headless-method }} pytest -v -n logical --durations=20 --cov=mslib + ${{ (matrix.order == 'normal' && ' ') || (matrix.order == 'reverse' && '--reverse') }} tests + - name: Collect coverage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_FLAG_NAME: ${{ join(matrix.*, ' - ') }} + COVERALLS_PARALLEL: true + run: | + git config --global --add safe.directory /__w/MSS/MSS + micromamba create -n coveralls coveralls + micromamba run -n coveralls coveralls --service=github + + coveralls: + name: Indicate completion to coveralls.io + if: ${{ !cancelled() }} + needs: test + runs-on: ubuntu-latest + steps: + - name: Finished + run: | + pip3 install --upgrade coveralls + coveralls --service=github --finish + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}