# 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:

      - 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: Installing Klayout 0.27.8
        run: |
          sudo apt update -qq -y
          wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.8-1_amd64.deb
          sudo apt install -qq -y \
            qt5-default \
            qttools5-dev \
            libqt5xmlpatterns5-dev \
            qtmultimedia5-dev \
            libqt5multimediawidgets5 \
            libqt5svg5-dev
          sudo dpkg -i ./klayout_0.27.8-1_amd64.deb
          sudo apt-get install -f -y

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