name: Test and Coverage

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v3

      - name: Use Node.js 22.x
        uses: actions/setup-node@v3
        with:
          node-version: 22.x

      - name: Verify Test Assets
        run: mkdir test/test-generated && ls -R test

      - name: npm install, make test-coverage on 22.x
        run: |
          npm install
          npm run test:coverage -- --verbose --timeout=10000
          sleep 2

      - name: Report Coveralls (Linux)
        if: startsWith(runner.os, 'Linux')
        run: curl -sL https://coveralls.io/coveralls-linux.tar.gz | tar -xz && ./coveralls
        env:
          COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}

      - name: Report Coveralls (Windows)
        if: startsWith(runner.os, 'Windows')
        run: curl -sL https://github.com/coverallsapp/coverage-reporter/releases/latest/download/coveralls-windows.zip | zcat > ./coveralls.exe && ./coveralls.exe
        env:
          COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}

      - name: Report Coveralls (macOS)
        if: startsWith(runner.os, 'macOS')
        run: |
          brew tap coverallsapp/coveralls --quiet
          brew install coveralls --quiet
          coveralls
