# 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: Postinstall Unit Tests

on:
  push:
    paths:
      - .github/workflows/postinstall.tests.yml
      - traffic_ops/install/bin/_postinstall
      - traffic_ops/install/bin/postinstall.test.sh
  create:
  pull_request:
    paths:
      - .github/workflows/postinstall.tests.yml
      - traffic_ops/install/bin/_postinstall
      - traffic_ops/install/bin/postinstall.test.sh
    types: [ opened, reopened, ready_for_review, synchronize ]

jobs:
  postinstall-tests:
    if: github.event.pull_request.draft == false
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@master
        if: ${{ (github.repository_owner == 'apache' && github.ref == 'refs/heads/master' ) || github.event_name != 'schedule' }}
        id: checkout
      - name: Install Python 3.6
        uses: actions/setup-python@v2
        if: ${{ steps.checkout.outcome == 'success' }}
        with: { python-version: 3.6 }
      - name: Install Python 2.7
        uses: actions/setup-python@v2
        if: ${{ steps.checkout.outcome == 'success' }}
        with: { python-version: 2.7 }
      - name: Run Postinstall Tests
        if: ${{ steps.checkout.outcome == 'success' }}
        run: traffic_ops/install/bin/postinstall.test.sh
