name: Lint CI

on: [push]

jobs:
  lint:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    strategy:
      matrix:
        node-version: [14.x]
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install
    - name: Run eslint
      run: npm run lint
  test-node:
    needs: [lint]
    runs-on: ubuntu-latest
    timeout-minutes: 10
    strategy:
      matrix:
        node-version: [12.x, 14.x]
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: |
        npm install
        cd test
        npm install
    - name: Run test with Node.js ${{ matrix.node-version }}
      run: |
        cd test
        npm test
  coverage:
   needs: [test-node]
   runs-on: ubuntu-latest
   timeout-minutes: 10
   strategy:
     matrix:
       node-version: [14.x]
   steps:
   - uses: actions/checkout@v2
   - name: Use Node.js ${{ matrix.node-version }}
     uses: actions/setup-node@v1
     with:
       node-version: ${{ matrix.node-version }}
   - run: |
       npm install
       cd test
       npm install
   - name: Generate coverage report
     run: |
       cd test
       npm run coverage-ci
   - name: Upload coverage to Codecov
     uses: codecov/codecov-action@v2
     with:
       file: ./test/coverage/lcov.info
       fail_ci_if_error: true
