# Cross platform tests for DUB

name: Testsuite

# Only triggers on pushes to master & stable, as well as PR to master and stable
# Sometimes reverts appear in the upstream repository (e.g. when the revert button
# is clicked by a contributor with commit access), this should be tested as PR).
#
# Also note that Github actions does not retrigger on target branch changes,
# hence the check on push.
on:
  pull_request:
    branches:
      - master
      - stable
  push:
    branches:
      - master
      - stable
      # Use this branch name in your fork to test changes
      - github-actions

jobs:
  main:
    name: Run
    strategy:
      # Default, disable if you want to debug
      fail-fast: false
      matrix:
        # Latest stable version, update at will
        os: [ macOS-11, ubuntu-18.04, windows-2019 ]
        dc:
          - dmd-latest
          - ldc-latest
          - dmd-master
          - ldc-master

    runs-on: ${{ matrix.os }}
    steps:

    # Install required dependencies
    - name: '[OSX] Install dependencies'
      if: runner.os == 'macOS'
      run: |
        brew install pkg-config coreutils
        echo "PKG_CONFIG_PATH=/usr/local/opt/openssl@1.1/lib/pkgconfig/" >> $GITHUB_ENV

    - name: '[Linux] Install dependencies'
      if: runner.os == 'Linux'
      run: |
        sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev netcat

    # Compiler to test with
    - name: Prepare compiler
      uses: dlang-community/setup-dlang@v1
      with:
        compiler: ${{ matrix.dc }}

    # Checkout the repository
    - name: Checkout
      uses: actions/checkout@v2

    - name: '[POSIX] Test'
      if: runner.os != 'Windows'
      env:
        COVERAGE: false
        # The value doesn't matter as long as it's > 2.087
        FRONTEND: 2.095.0
      run: |
        dub build --compiler=${{ env.DC }}
        dub run   --compiler=${{ env.DC }} --single test/issue2051_running_unittests_from_dub_single_file_packages_fails.d
        ./scripts/ci/travis.sh

    - name: '[Windows] Test'
      if: runner.os == 'Windows'
      env:
        DUB: ${{ github.workspace }}\bin\dub.exe
      # Only run `dub test` to run unittests so far,
      # the test-suite needs to be overhauled to support Windows
      run: |
        dub build --compiler=${{ env.DC }}
        dub test  --compiler=${{ env.DC }}
        dub run   --compiler=${{ env.DC }} --single test\issue2051_running_unittests_from_dub_single_file_packages_fails.d
        cd test
        dub --single run-unittest.d
      shell: pwsh
