name: Validate

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  eslint:
    name: ESLint
    runs-on: ubuntu-20.04

    steps:

      - name: Fetch Repository
        uses: actions/checkout@v3
        with:
          persist-credentials: false

      - name: Install Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18.12.1
          cache: 'npm'

      - name: Install Modules
        run: npm ci

      - name: Run ESLint
        run: npm run eslint

  unit-tests:
    name: Unit Tests
    strategy:
        matrix:
          os: [ubuntu-20.04, windows-2022, macos-11, [self-hosted, linux, ARM64]]

    runs-on: ${{ matrix.os }}

    steps:

      - name: Fetch Repository
        uses: actions/checkout@v3
        with:
          persist-credentials: false

      - name: Install Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18.12.1
          cache: 'npm'

      - name: Install Modules
        run: npm ci

      - name: Build Sample Addon
        run: npm run test-build

      - name: Run Unit Tests
        run: npm run test-ci
