name: CI

on: [push, pull_request]

jobs:
  test:
    name: Node.js v${{ matrix.nodejs }} (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        nodejs: [8, 10, 12, 14]
        os: [ubuntu-latest, windows-latest, macOS-latest]
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.nodejs }}

    - name: Install
      run: |
        npm install
        npm install -g nyc

    - name: Test w/ Coverage
      run: nyc --include=src npm test

    - name: Report
      if: matrix.nodejs >= 14 && matrix.os == 'ubuntu-latest'
      run: |
        nyc report --reporter=text-lcov > coverage.lcov
        bash <(curl -s https://codecov.io/bash)
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
