mirror of
https://github.com/electron/node-gyp.git
synced 2025-08-15 12:58:19 +02:00
141 lines
4.3 KiB
YAML
141 lines
4.3 KiB
YAML
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
|
|
# TODO: add `python -m pytest --doctest-modules`
|
|
|
|
name: Tests
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
workflow_call:
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
jobs:
|
|
lint-python:
|
|
name: Lint Python
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: pip install --user ruff
|
|
- run: ruff check --output-format=github --select="E,F,PLC,PLE,UP,W,YTT" --ignore="E721,PLC1901,S101,UP031" --target-version=py38 .
|
|
|
|
lint-js:
|
|
name: Lint JS
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
- name: Use Node.js 20.x
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20.x
|
|
- name: Install Dependencies
|
|
run: npm install
|
|
- name: Lint
|
|
run: npm run lint
|
|
|
|
check-engines:
|
|
name: Check Engines
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
- name: Use Node.js 20.x
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20.x
|
|
- name: Install Dependencies
|
|
run: npm install
|
|
- name: Check Engines
|
|
run: |
|
|
# TODO: move this to its own action
|
|
npm install @npmcli/arborist@7 semver@7 --no-save
|
|
node .github/scripts/check-engines.js
|
|
|
|
test-pack:
|
|
name: Test Pack
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
- name: Use Node.js 20.x
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20.x
|
|
- name: Update npm
|
|
run: npm install npm@latest -g
|
|
- name: Install Dependencies
|
|
run: npm install
|
|
- name: Pack
|
|
id: pack
|
|
env:
|
|
NODE_GYP_TEMP_DIR: '${{ runner.temp }}/node-gyp'
|
|
run: |
|
|
mkdir -p $NODE_GYP_TEMP_DIR
|
|
npm pack
|
|
tar xzf *.tgz -C $NODE_GYP_TEMP_DIR --strip-components=1
|
|
cp -r test/ $NODE_GYP_TEMP_DIR/test/
|
|
echo "dir=$NODE_GYP_TEMP_DIR" >> "$GITHUB_OUTPUT"
|
|
- name: Test
|
|
working-directory: ${{ steps.pack.outputs.dir }}
|
|
env:
|
|
FULL_TEST: '1'
|
|
run: |
|
|
npm install
|
|
npm test
|
|
|
|
tests:
|
|
# lint-python takes ~5 seconds, so wait for it to pass before running the full matrix of tests.
|
|
needs: [lint-python]
|
|
strategy:
|
|
fail-fast: false
|
|
max-parallel: 15
|
|
matrix:
|
|
os: [macos-latest, ubuntu-latest, windows-latest]
|
|
python: ["3.8", "3.10", "3.12"]
|
|
node: [16.x, 18.x, 20.x]
|
|
include: # `npm test` is running Windows find-visualstudio tests on an M1 Mac!!!
|
|
- os: macos-14
|
|
python: "3.12"
|
|
node: 20.x
|
|
name: ${{ matrix.os }} - ${{ matrix.python }} - ${{ matrix.node }}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
- name: Use Node.js ${{ matrix.node }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- name: Use Python ${{ matrix.python }}
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
env:
|
|
PYTHON_VERSION: ${{ matrix.python }} # Why do this?
|
|
- uses: seanmiddleditch/gha-setup-ninja@v5
|
|
- name: Install Dependencies
|
|
run: |
|
|
npm install
|
|
pip install pytest
|
|
- name: Set Windows Env
|
|
if: startsWith(matrix.os, 'windows')
|
|
run: |
|
|
echo 'GYP_MSVS_VERSION=2015' >> $Env:GITHUB_ENV
|
|
echo 'GYP_MSVS_OVERRIDE_PATH=C:\\Dummy' >> $Env:GITHUB_ENV
|
|
- name: Run Python Tests
|
|
run: python -m pytest
|
|
- name: Run Tests (macOS or Linux)
|
|
if: "!startsWith(matrix.os, 'windows')"
|
|
shell: bash
|
|
run: npm test --python="${pythonLocation}/python"
|
|
env:
|
|
FULL_TEST: ${{ (matrix.node == '20.x' && matrix.python == '3.12') && '1' || '0' }}
|
|
- name: Run Tests (Windows)
|
|
if: startsWith(matrix.os, 'windows')
|
|
shell: bash # Building wasm on Windows requires using make generator, it only works in bash
|
|
run: npm run test --python="${pythonLocation}\\python.exe"
|
|
env:
|
|
FULL_TEST: ${{ (matrix.node == '20.x' && matrix.python == '3.12') && '1' || '0' }}
|