Publish 4.0.4 #544
This file contains hidden or 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
| name: Test | |
| on: | |
| push: | |
| branches: main | |
| pull_request: | |
| jobs: | |
| docs: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.8 | |
| - uses: actions/cache@v5 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ hashFiles('**/setup.py') }}-${{hashFiles('**/requirements.txt')}} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Install dependencies (docs) | |
| run: | | |
| sudo apt-get install -y pandoc | |
| python -m pip install --upgrade pip | |
| python -m pip install .[docs] | |
| python -m pip install -r ./docs/doc-requirements.txt | |
| - name: Build docs | |
| run: | | |
| cd docs | |
| make html | |
| js: | |
| name: JavaScript | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.8 | |
| - uses: actions/cache@v5 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ hashFiles('**/setup.py') }}-${{hashFiles('**/requirements.txt')}} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Install dependencies (js) | |
| run: | | |
| python -m pip install --upgrade pip | |
| - name: Use Node.js 18.x | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 18.x | |
| - name: Get npm cache directory | |
| id: npm-cache-dir | |
| run: | | |
| echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT | |
| - uses: actions/cache@v5 | |
| id: npm-cache | |
| with: | |
| path: ${{ steps.npm-cache-dir.outputs.dir }} | |
| key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-node- | |
| - name: Install and build | |
| run: | | |
| python -m pip install --upgrade --upgrade-strategy=eager -e ".[test]" | |
| - name: Run tests | |
| run: npm test | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| directory: packages/nbdime/coverage | |
| verbose: true | |
| python: | |
| name: Python | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| max-parallel: 4 | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] | |
| os: [ubuntu-latest] | |
| include: | |
| - python-version: '3.11' | |
| jupyter_server-version: '<2' | |
| - python-version: '3.11' | |
| jupyter_server-version: '>=2' | |
| - python-version: '3.8' | |
| os: windows-latest | |
| - python-version: '3.11' | |
| os: windows-latest | |
| outputs: | |
| wheel: ${{ steps.packaging.outputs.wheel }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - uses: actions/cache@v5 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ hashFiles('**/setup.py') }}-${{hashFiles('**/requirements.txt')}} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Install dependencies (pytest) | |
| run: | | |
| python -m pip install --upgrade pip 'setuptools<82' | |
| python -m pip install jupyterlab~=3.0 | |
| python -m pip install --upgrade --upgrade-strategy=eager ".[test]" | |
| python -m pip install jupyter_server${{ matrix.jupyter_server-version }} | |
| python -m pip install 'setuptools<82' | |
| - name: Test with pytest (Linux) | |
| if: startsWith(matrix.os, 'ubuntu') | |
| run: | | |
| git config --global user.email CI@fake.com | |
| git config --global user.name "CI" | |
| tmpdir=$(mktemp -d) | |
| echo "TEST_TMPDIR=$tmpdir" >> $GITHUB_ENV | |
| pushd $tmpdir | |
| pytest -l --cov-report xml --cov=nbdime --pyargs nbdime | |
| - name: Test with pytest (Windows) | |
| if: startsWith(matrix.os, 'windows') | |
| run: | | |
| git config --global user.email CI@fake.com | |
| git config --global user.name "CI" | |
| $hgconfig = "[ui]`r`nusername = CI <CI@fake.com>" | |
| $hgconfig | Set-Content ($HOME + "\mercurial.ini") | |
| echo "TEST_TMPDIR=." >> $Env:GITHUB_ENV | |
| pytest -l --cov-report xml --cov=nbdime --pyargs nbdime | |
| - uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| verbose: true | |
| directory: ${{ env.TEST_TMPDIR }} | |
| - name: Build package | |
| if: startsWith(matrix.os, 'ubuntu') && matrix.python-version == '3.10' | |
| id: packaging | |
| run: | | |
| set -uex | |
| pip install build | |
| python -m build | |
| WHEEL_NAME=$(ls dist/nbdime*.whl | cut -d '/' -f2) | |
| echo "wheel=${WHEEL_NAME}" >> "$GITHUB_OUTPUT" | |
| - name: Upload nbdime package | |
| if: startsWith(matrix.os, 'ubuntu') && matrix.python-version == '3.10' | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: nbdime-package | |
| path: dist/nbdime* | |
| if-no-files-found: error | |
| ui-test: | |
| needs: python | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 40 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [windows-latest, ubuntu-22.04] | |
| env: | |
| PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '18.x' | |
| - name: Install Python '3.11' | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Download nbdime package | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: nbdime-package | |
| - name: Install nbdime from wheel | |
| run: | | |
| python -m pip install "${{ needs.python.outputs.wheel }}" | |
| - name: Install Playwright | |
| working-directory: ui-tests | |
| env: | |
| PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 | |
| run: | |
| npm install | |
| - name: Set up browser cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ${{ github.workspace }}/pw-browsers | |
| key: ${{ runner.os }}-${{ hashFiles('ui-tests/package-lock.json') }} | |
| - name: Install browser | |
| working-directory: ui-tests | |
| run: npx playwright install chromium | |
| - name: Run playwright tests | |
| working-directory: ui-tests | |
| run: | | |
| npx playwright test | |
| - name: Upload Playwright Test report | |
| if: always() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: ui-tests-${{ matrix.os }} | |
| path: | | |
| ui-tests/playwright-report |