Use pnpm/action-setup in workflows #12775
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
name: Run Tests | |
permissions: read-all | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: [opened, synchronize, reopened] | |
merge_group: | |
branches: [main] | |
workflow_dispatch: | |
jobs: | |
test: | |
name: Test | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, ubuntu-latest, windows-latest] | |
app_version: [stable] | |
include: | |
- os: ubuntu-latest | |
app_version: legacy | |
runs-on: ${{ matrix.os }} | |
env: | |
APP_VERSION: ${{ matrix.app_version }} | |
NEOVIM_VERSION: ${{ matrix.app_version == 'stable' && 'stable' || 'v0.10.0' }} | |
VSCODE_CRASH_DIR: ${{ github.workspace }}/artifacts/dumps | |
VSCODE_LOGS_DIR: ${{ github.workspace }}/artifacts/logs | |
CURSORLESS_REPO_ROOT: ${{ github.workspace }} | |
TEMP_DIR: ${{ github.workspace }}/temp | |
NODE_OPTIONS: "--max-old-space-size=4096" | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: .nvmrc | |
cache: pnpm | |
- name: Creating log directories | |
run: mkdir -p "${{ env.VSCODE_CRASH_DIR }}" "${{ env.VSCODE_LOGS_DIR }}" "${{ env.TEMP_DIR }}" | |
shell: bash | |
- name: Install dependencies | |
run: pnpm --color install | |
- name: Compile | |
run: pnpm --color compile | |
- name: Build | |
run: pnpm --color --filter '!cursorless-org' --filter '!cursorless-org-*' build | |
- name: Run tests (Linux) | |
run: xvfb-run -a pnpm --color test | |
if: runner.os == 'Linux' | |
- name: Run tests (Other) | |
run: pnpm --color test | |
if: runner.os != 'Linux' | |
- name: Run Talon-JS tests (Linux) | |
run: xvfb-run -a pnpm -F @cursorless/test-harness test:talonJs | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
- name: Run Talon-JS tests (Other) | |
run: pnpm -F @cursorless/test-harness test:talonJs | |
if: runner.os != 'Linux' && matrix.app_version == 'stable' | |
- name: Run Cursorless-everywhere-talon tests (Linux) | |
run: xvfb-run -a pnpm -F @cursorless/cursorless-everywhere-talon-e2e test:quickjs | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
- name: Run Cursorless-everywhere-talon tests (Other) | |
run: pnpm -F @cursorless/cursorless-everywhere-talon-e2e test:quickjs | |
if: runner.os != 'Linux' && matrix.app_version == 'stable' | |
- name: Install neovim dependencies | |
run: bash -x scripts/install-neovim-dependencies.sh | |
- name: Setup neovim (Linux) | |
uses: rhysd/action-setup-vim@v1 | |
id: vim | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
with: | |
version: ${{ env.NEOVIM_VERSION }} | |
neovim: true | |
- name: Run neovim tests (Linux) | |
run: xvfb-run -a pnpm -F @cursorless/test-harness test:neovim | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
env: | |
NEOVIM_PATH: ${{ steps.vim.outputs.executable }} | |
- name: Run neovim lua tests (Linux) | |
uses: ./.github/actions/test-neovim-lua/ | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
- name: Run neovim lua lint (Linux) | |
uses: ./.github/actions/lint-lua-ls/ | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
- name: Create vscode dist that can be installed locally | |
run: pnpm -F @cursorless/cursorless-vscode populate-dist --local-install | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
- name: Test create vsix | |
id: createVsix | |
uses: HaaLeo/publish-vscode-extension@v1 | |
with: | |
pat: none | |
packagePath: packages/cursorless-vscode/dist | |
dryRun: true | |
- name: Rename vsix | |
run: mv ${{ steps.createVsix.outputs.vsixPath }} cursorless-development.vsix | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
- name: Upload vsix | |
uses: actions/upload-artifact@v4 | |
if: runner.os == 'Linux' && matrix.app_version == 'stable' | |
with: | |
name: vsix | |
path: cursorless-development.vsix | |
- name: Archive logs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs | |
path: ${{ env.VSCODE_LOGS_DIR }} | |
if: failure() | |
- name: Archive dumps | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dumps | |
path: ${{ env.VSCODE_CRASH_DIR }} | |
if: failure() |