feat(lsp): surface traceability gaps in family gate #271
Workflow file for this run
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: CI | |
| on: | |
| push: | |
| branches: [main, master] | |
| paths: | |
| - 'package.json' | |
| - 'package-lock.json' | |
| - 'src/**' | |
| - 'tests/**' | |
| - 'syntaxes/**' | |
| - 'language-configurations/**' | |
| - '.github/workflows/ci.yml' | |
| pull_request: | |
| branches: [main, master] | |
| paths: | |
| - 'package.json' | |
| - 'package-lock.json' | |
| - 'src/**' | |
| - 'tests/**' | |
| - 'syntaxes/**' | |
| - 'language-configurations/**' | |
| - '.github/workflows/ci.yml' | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| name: Run Tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| strategy: | |
| matrix: | |
| node-version: ['18.x', '20.x'] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'npm' | |
| cache-dependency-path: package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Compile TypeScript | |
| run: npm run compile | |
| - name: Run linter | |
| run: npm run lint | |
| - name: Run unit tests | |
| run: npm run test:unit | |
| - name: Run integration tests | |
| run: npm run test:integration | |
| - name: Run format check | |
| run: npm run format:check | |
| - name: Upload coverage report | |
| uses: codecov/codecov-action@v7 | |
| if: matrix.node-version == '18.x' | |
| with: | |
| file: ./coverage/lcov.info | |
| fail_ci_if_error: false | |
| lsp-integration-test: | |
| name: LSP Integration Test | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout OpenQC-VSCode | |
| uses: actions/checkout@v6 | |
| with: | |
| path: openqc-vscode | |
| - name: Checkout CP2K LSP | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: newtontech/cp2k-lsp-enhanced | |
| path: cp2k-lsp-enhanced | |
| - name: Checkout Gaussian LSP | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: newtontech/gaussian-lsp | |
| path: gaussian-lsp | |
| - name: Checkout VASP LSP | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: newtontech/vasp-lsp | |
| path: vasp-lsp | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20.x' | |
| cache: 'npm' | |
| cache-dependency-path: openqc-vscode/package-lock.json | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.11' | |
| - name: Install Python LSP servers | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install "./cp2k-lsp-enhanced[lsp]" | |
| pip install -e ./gaussian-lsp | |
| pip install -e ./vasp-lsp | |
| - name: Add Python console scripts to PATH | |
| run: | | |
| mkdir -p ~/.local/bin | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH | |
| - name: Install OpenQC-VSCode dependencies | |
| working-directory: ./openqc-vscode | |
| run: npm ci | |
| - name: Compile OpenQC-VSCode | |
| working-directory: ./openqc-vscode | |
| run: npm run compile | |
| - name: Verify LSP servers are available | |
| run: | | |
| which cp2k-language-server | |
| which gaussian-lsp | |
| which vasp-lsp | |
| - name: Run LSP-specific tests | |
| working-directory: ./openqc-vscode | |
| run: npx jest tests/unit/LSPManager.test.ts --runInBand --coverage=false | |
| build-and-package: | |
| name: Build and Package | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: [test, lsp-integration-test] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20.x' | |
| cache: 'npm' | |
| cache-dependency-path: package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Compile | |
| run: npm run compile | |
| - name: Package extension | |
| run: npx @vscode/vsce package | |
| - name: Upload VSIX artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: extension-vsix | |
| path: '*.vsix' |