#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: Test

on:
  pull_request:
  push:
    branches:
      - master

jobs:
  TestPlugins:
    runs-on: ubuntu-18.04
    timeout-minutes: 30
    strategy:
      matrix:
        node-version: [ 10, 12, 14, 15 ]
    env:
      SW_NODE_VERSION: ${{ matrix.node-version }}
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true

      - uses: actions/cache@v2
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - name: Set Up NodeJS ${{ matrix.node-version }}
        uses: actions/setup-node@v2-beta
        with:
          node-version: ${{ matrix.node-version }}

      - name: Test
        run: |
          npm i
          npm run lint
          npm run test

  TestLib:
    runs-on: ubuntu-18.04
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true

      - name: Test Dist Lib
        run: |
          docker build . -f tests/build/Dockerfile -t skywalking-nodejs:${{ github.sha }}
          docker run --rm skywalking-nodejs:${{ github.sha }}
