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