Skip to content

feat(lsp): surface traceability gaps in family gate #271

feat(lsp): surface traceability gaps in family gate

feat(lsp): surface traceability gaps in family gate #271

Workflow file for this run

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'