# make sure the action works on a clean machine without building
name: prod

on:
  pull_request:
  push:
  workflow_dispatch:

jobs:
  basic-build:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout sources
      uses: actions/checkout@v2
    - name: Build using Gradle wrapper
      uses: ./
      with:
        build-root-directory: __tests__/samples/basic
        arguments: test
   
  gradle-execution:
    needs: basic-build
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        include:
          - os: windows-latest
            script-suffix: '.bat'
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout sources
      uses: actions/checkout@v2
    - name: Test use defined Gradle version
      uses: ./
      with:
        gradle-version: 6.9
        build-root-directory: __tests__/samples/no-wrapper
        arguments: help
    - name: Test use Gradle version alias
      uses: ./
      with:
        gradle-version: release-candidate
        build-root-directory: __tests__/samples/no-wrapper
        arguments: help
    - name: Test use defined Gradle executable
      uses: ./
      with:
        gradle-executable: __tests__/samples/basic/gradlew${{ matrix.script-suffix }}
        build-root-directory: __tests__/samples/no-wrapper
        arguments: help
    - name: Test custom wrapper location (deprecated)
      uses: ./
      with:
        build-root-directory: __tests__/samples/no-wrapper
        wrapper-directory: __tests__/samples/basic
        arguments: help

  dependencies-cache:
    needs: basic-build
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout sources
      uses: actions/checkout@v2
    - name: Test dependencies-cache-enabled
      uses: ./
      with:
        build-root-directory: __tests__/samples/basic
        arguments: test --no-daemon
        dependencies-cache-enabled: true

  configuration-cache:
    needs: basic-build
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout sources
      uses: actions/checkout@v2
    - name: Test configuration-cache-enabled
      uses: ./
      with:
        build-root-directory: __tests__/samples/basic
        arguments: test --configuration-cache --no-daemon
        configuration-cache-enabled: true
        dependencies-cache-enabled: true 
        # Configuration cache requires dependencies cache, since it assumes dependencies are already downloaded.

  cache-read-only:
    needs: basic-build
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - name: Checkout sources
      uses: actions/checkout@v2
    - name: Test cache-read-only
      uses: ./
      with:
        build-root-directory: __tests__/samples/basic
        arguments: test --no-daemon
        dependencies-cache-enabled: true
        configuration-cache-enabled: true
        cache-read-only: true

  failures: # These build invocations are informational only, and are expected to fail
    needs: basic-build
    runs-on: ubuntu-latest
    steps:
    - name: Checkout sources
      uses: actions/checkout@v2
    - name: Test wrapper missing
      uses: ./
      continue-on-error: true
      with:
        build-root-directory: __tests__/samples/no-wrapper
        arguments: help