name: Tests
on: [push, pull_request]
env:
  CI: true

jobs:
  run:
    name: Node ${{ matrix.node }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        node: [10, 12, 14, 20]
        os: [ubuntu-latest, windows-latest]

    steps:
      - name: Clone repository
        uses: actions/checkout@v5

      - name: Set Node.js version
        uses: actions/setup-node@v5
        with:
          node-version: ${{ matrix.node }}

      - run: npm --version

      - run: npm install

      - run: npm test

      # We test multiple Windows shells because of prior stdout buffering issues
      # filed against Grunt. https://github.com/joyent/node/issues/3584
      - name: Run PowerShell tests
        run: "npm test # PowerShell" # Pass comment to PS for easier debugging
        shell: powershell
        if: startsWith(matrix.os, 'windows')
