# This is part of WHY2
# Copyright (C) 2022 Václav Šmejkal

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

name: Test WHY2-core

on:
  push:
    branches: [ development ]
  workflow_dispatch:
  schedule:
    - cron: '40 22 12 4 2'

jobs:
  test-why2:
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os:  [ ubuntu-latest ]
        include:
          - os: ubuntu-latest
            output: ./out/why2-core-test
            valgrind: valgrind --leak-check=full --show-leak-kinds=reachable --track-origins=yes -s
            configure: configure.sh
            app: why2

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
        with:
          ref: development

      - if: matrix.os == 'ubuntu-latest'
        name: Update packages
        run: |
          sudo apt update
#         sudo apt upgrade

      - name: Permissions
        run: chmod +x ${{ matrix.configure }}

      - name: Preparation
        run: sudo ./${{ matrix.configure }}

      - name: Install Valgrind
        run: sudo apt install valgrind

      - name: Install WHY2
        run: make install

      - name: Build WHY2 Test
        run: make test_core

      - name: Test Lib
        run: ./${{ matrix.output }}

      - name: Test App
        run: ${{ matrix.app }}

      - name: Test Lib by Valgrind
        run: ${{ matrix.valgrind }} ${{ matrix.output }}