# Copyright 2022 GlobalFoundries PDK Authors
#
# Licensed 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: Regression testing

# Prevent keeping resources busy when a branch/PR is updated
# https://docs.github.com/en/actions/using-jobs/using-concurrency
concurrency:
  group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on:
  push:
  pull_request:
  workflow_dispatch:

jobs:


  Test:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - { type: DRC, pdk: drc, test: main }
          - { type: DRC, pdk: drc, test: switch }
          - { type: DRC, pdk: drc, test: gf180mcu_fd_io }
          - { type: DRC, pdk: drc, test: gf180mcu_fd_ip_sram }
          - { type: DRC, pdk: drc, test: gf180mcu_fd_sc_mcu7t5v0 }
          - { type: DRC, pdk: drc, test: gf180mcu_fd_sc_mcu9t5v0 }
          - { type: LVS, pdk: lvs, test: main }
          - { type: LVS, pdk: lvs, test: switch }
          - { type: LVS, pdk: lvs, test: gf180mcu_fd_sc_mcu7t5v0}
          - { type: LVS, pdk: lvs, test: gf180mcu_fd_sc_mcu9t5v0 }

    name: ${{ matrix.type }} | ${{ matrix.test }}

    env:
      PDK_ROOT: $GITHUB_WORKSPACE/rules/klayout
      PDK: ${{ matrix.pdk }}

    steps:

      - name: Installing Klayout
        run: |
          sudo apt update -qq -y
          sudo apt install -qq -y \
            qt5-default \
            qttools5-dev \
            libqt5xmlpatterns5-dev \
            qtmultimedia5-dev \
            libqt5multimediawidgets5 \
            libqt5svg5-dev
          wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.10-1_amd64.deb
          sudo dpkg -i ./klayout_0.27.10-1_amd64.deb
          sudo apt install -f -y

      - uses: actions/checkout@v3

      - uses: actions/setup-python@v3
        with:
          python-version: '3.9'
          cache: 'pip'
          cache-dependency-path: '**/requirements.test.txt'

      - run: pip install -r ./rules/klayout/requirements.test.txt

      - name: Testing ${{ matrix.type }} for ${{ matrix.test }}
        run: |
          cd ./rules/klayout/${{ matrix.pdk }}/testing
          make test-${{ matrix.type }}-${{ matrix.test }}
