# 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: LVS 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:
  lvs_switch:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - { tool: klayout, part: lvs, test: switch }

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

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: 'recursive'
      - name: Testing ${{ matrix.part }} for ${{ matrix.test }}
        run: |
          make test-"$(python -c 'print("${{ matrix.part }}".upper())')"-${{ matrix.test }}

  build_lvs-matrix:
    runs-on: ubuntu-latest
    outputs:
      lvs_table: ${{ steps.set-matrix.outputs.lvs_table }}
    steps:
      - uses: actions/checkout@v3
      - id: set-matrix
        run: |
          lvs_table=`find -iname '*_extraction.lvs' | grep -i rule_decks | grep -v main | grep -v tail | awk -F'/' '{printf "\"%s-%s\",", $2, $NF}' | sed -e "s/^/[/g" -e "s/,$/]/g" -e "s/_extraction.lvs//g"`
          lvs_table=`echo $lvs_table | jq -c .`
          echo $lvs_table
          echo "lvs_table=$lvs_table" >>$GITHUB_OUTPUT

  lvs_regression:
    needs: build_lvs-matrix
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        part: [lvs]
        test: ${{ fromJson(needs.build_lvs-matrix.outputs.lvs_table) }}

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

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: 'recursive'
      - name: Testing ${{ matrix.part }} for ${{ matrix.test }}
        run: |
          make test-"$(python -c 'print("${{ matrix.part }}".upper())')"-${{ matrix.test }}
