name: Continuous integration
on: [push, pull_request]

jobs:
  test:
    name: Test
    strategy:
      matrix:
        os: [macos-latest, ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Node.js
        uses: actions/setup-node@v4.0.2
        with:
          node-version: 16.x

      - name: Install dependencies
        run: npm install

      - name: Run headless test
        uses: coactions/setup-xvfb@v1
        with:
          run: |
            npm run compile
            npm test

  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Node.js
        uses: actions/setup-node@v4.0.2
        with:
          node-version: 16.x

      - name: Install dependencies
        run: npm install

      - name: Lint and build extension
        run: |
          npm run lint
          npm run package -- --out godot-tools.vsix
          ls -l godot-tools.vsix

      - name: Upload extension VSIX
        uses: actions/upload-artifact@v4.3.1
        with:
          name: godot-tools
          path: godot-tools.vsix
