diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4aa041df9e..fde4aacfc1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,5 +1,5 @@ # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources -# TODO: Line 48, enable pytest --doctest-modules +# TODO: add `python -m pytest --doctest-modules` name: Tests on: @@ -12,44 +12,82 @@ permissions: contents: read # to fetch code (actions/checkout) jobs: - Lint_Python: + lint-python: + name: Lint Python runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: pip install --user ruff - run: ruff --output-format=github --select="E,F,PLC,PLE,UP,W,YTT" --ignore="E721,PLC1901,S101,UP031" --target-version=py38 . - Lint_JS: + + 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@v3 + uses: actions/setup-node@v4 with: node-version: 20.x - name: Install Dependencies - run: npm install --no-progress + run: npm install - name: Lint run: npm run lint - Engines: + + 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@v3 + uses: actions/setup-node@v4 with: node-version: 20.x - name: Install Dependencies - run: | - npm install --no-progress + 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 - Tests: - needs: Lint_Python # Lint_Python takes ~5 seconds, so wait for it to pass before running the full matrix of tests. + + 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 @@ -63,7 +101,7 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - name: Use Python ${{ matrix.python }} @@ -74,26 +112,22 @@ jobs: PYTHON_VERSION: ${{ matrix.python }} # Why do this? - name: Install Dependencies run: | - npm install --no-progress + npm install pip install pytest - - name: Set Windows environment - if: matrix.os == 'windows' + - name: Set Windows Env + if: runner.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 + - name: Run Python Tests run: python -m pytest - # - name: Run doctests with pytest - # run: python -m pytest --doctest-modules - - name: Environment Information - run: npx envinfo - - name: Run Node tests (macOS or Linux) + - name: Run Tests (macOS or Linux) if: runner.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) + - name: Run Tests (Windows) if: runner.os == 'Windows' shell: pwsh run: npm run test --python="${env:pythonLocation}\\python.exe" diff --git a/.github/workflows/visual-studio.yml b/.github/workflows/visual-studio.yml index 8b796256da..19993a57f9 100644 --- a/.github/workflows/visual-studio.yml +++ b/.github/workflows/visual-studio.yml @@ -26,10 +26,7 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - name: Install Dependencies - run: | - npm install --no-progress - - name: Environment Information - run: npx envinfo + run: npm install - name: Run Node tests shell: pwsh run: | diff --git a/.gitignore b/.gitignore index e906ca7280..e588699b7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ +.ncu +.nyc_output *.swp gyp/test node_modules -test/.node-gyp -.ncu -.nyc_output +node-gyp-*.tgz package-lock.json +test/.node-gyp diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000000..8f95594d44 --- /dev/null +++ b/.npmignore @@ -0,0 +1,15 @@ +.ncu +.nyc_output +*.swp +/.github/ +/docs/ +/gyp/.github/ +/gyp/*.md +/gyp/AUTHORS +/gyp/test +/gyp/tools/ +/node-gyp-*.tgz +/test/ +/test/.node-gyp +/update-gyp.py +node-gyp-*.tgz