name: build-unit-tests-external

on: [push, pull_request]

jobs: 
  release_extra_only:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]

    steps:
      - uses: actions/checkout@v4

      - name: Clone extra unit tests repo 
        shell: bash
        working-directory: ${{runner.workspace}}
        run: |
          git clone https://github.com/galabovaa/highs-unit-tests.git

      - name: Create symlink
        shell: bash
        working-directory: ${{runner.workspace}}
        run: ln -s ${{runner.workspace}}/highs-unit-tests $GITHUB_WORKSPACE/check

      - name: Create Build Environment
        run: cmake -E make_directory ${{runner.workspace}}/build

      - name: Configure CMake All
        shell: bash
        working-directory: ${{runner.workspace}}/build
        run: cmake $GITHUB_WORKSPACE -DBUILD_EXTRA_UNIT_TESTS=ON -DBUILD_EXTRA_UNIT_ONLY=ON -DBUILD_CXX=OFF

      - name: Build All
        working-directory: ${{runner.workspace}}/build
        shell: bash
        run: |
          cmake --build . --parallel

      - name: Test Extra Only
        working-directory: ${{runner.workspace}}/build
        shell: bash
        run: ctest --parallel --timeout 300 --output-on-failure 

  release_all_tests:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]

    steps:
      - uses: actions/checkout@v4

      - name: Clone extra unit tests repo 
        shell: bash
        working-directory: ${{runner.workspace}}
        run: |
          git clone https://github.com/galabovaa/highs-unit-tests.git

      - name: Create symlink
        shell: bash
        working-directory: ${{runner.workspace}}
        run: ln -s ${{runner.workspace}}/highs-unit-tests $GITHUB_WORKSPACE/check
        
      - name: Create Build Environment
        run: cmake -E make_directory ${{runner.workspace}}/build

      - name: Configure CMake All
        shell: bash
        working-directory: ${{runner.workspace}}/build
        run: cmake $GITHUB_WORKSPACE -DALL_TESTS=ON -DBUILD_EXTRA_UNIT_TESTS=ON 

      - name: Build All
        working-directory: ${{runner.workspace}}/build
        shell: bash
        run: |
          cmake --build . --parallel 

      - name: Test All
        working-directory: ${{runner.workspace}}/build
        shell: bash
        run: ctest --parallel --timeout 300 --output-on-failure 

  # release__windows_extra_unit_tests:
  #   runs-on: windows-2022

  #   steps:
  #     - uses: actions/checkout@v4

  #     - name: Create Build Environment
  #       run: cmake -E make_directory ${{runner.workspace}}/build

  #     - name: Clone extra unit tests repo 
  #       working-directory: ${{runner.workspace}}/build
  #       run: git clone https://github.com/galabovaa/highs-unit-tests.git

  #     - name: Create symlink
  #       shell: bash
  #       working-directory: $GITHUB_WORKSPACE/check
  #       run: mklink /d highs-unit-tests ${{runner.workspace}}/highs-unit-tests

  #     - name: Configure CMake
  #       # Use a bash shell so we can use the same syntax for environment variable
  #       # access regardless of the host operating system
  #       shell: bash
  #       working-directory: ${{runner.workspace}}/build
  #       # Note the current convention is to use the -S and -B options here to specify source
  #       # and build directories, but this is only available with CMake 3.13 and higher.
  #       # The CMake binaries on the Github Actions machines are (as of this writing) 3.12
  #       run: cmake $GITHUB_WORKSPACE -DALL_TESTS=ON -DBUILD_EXTRA_UNIT_TESTS=ON

  #     - name: Build
  #       working-directory: ${{runner.workspace}}/build
  #       shell: bash
  #       # Execute the build.  You can specify a specific target with "--target <NAME>"
  #       run: cmake --build . --config Release --parallel

  #     - name: Unit Test Extra
  #       working-directory: ${{runner.workspace}}/build
  #       shell: bash
  #       run: ./Release/bin/unit_tests.exe highs-names-extra 

  #     - name: Test
  #       working-directory: ${{runner.workspace}}/build
  #       shell: bash
  #       # Execute tests defined by the CMake configuration.
  #       # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
  #       run: ctest --timeout 300 --output-on-failure -C Release
