-
Notifications
You must be signed in to change notification settings - Fork 91
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a workflow to test on Windows and MacOS
- Loading branch information
Showing
1 changed file
with
88 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
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=$env:USERPROFILE\AppData\Local\Temp" >> $env:GITHUB_ENV | ||
echo "TEMP=$env:USERPROFILE\AppData\Local\Temp" >> $env:GITHUB_ENV | ||
- name: Workaround for TMPDIR in MacOS 12 | ||
if: ${{ matrix.os == 'macos-12' }} | ||
run: echo "TMPDIR=/private$TMPDIR" >> "$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 }} |