name: Test dependency submission failures

on:
  workflow_call:
    inputs:
      cache-key-prefix:
        type: string
        default: '0'
      runner-os:
        type: string
        default: '["ubuntu-latest"]'
      skip-dist:
        type: boolean
        default: false

env:
  SKIP_DIST: ${{ inputs.skip-dist }}
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-submission-failures-${{ inputs.cache-key-prefix }}
  GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository

permissions:
  contents: read

jobs:
  dependency-submission-failures-failing-build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout sources
      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
    - name: Initialize integ-test
      uses: ./.github/actions/init-integ-test

    - name: Submit with failing build
      id: gradle-build
      uses: ./dependency-submission
      with:
        build-root-directory: .github/workflow-samples/groovy-dsl
        additional-arguments: fail
      continue-on-error: true
    - name: Check step failed
      if: steps.gradle-build.outcome != 'failure'
      run: |
        echo "Expected dependency submission step to fail"
        exit 1
    - name: Check no dependency graph is generated
      shell: bash
      run: |
        if [ ! -z "$(ls -A dependency-graph-reports)" ]; then
            echo "Expected no dependency graph files to be generated"
            ls -l dependency-graph-reports
            exit 1
        fi

  dependency-submission-failures-unsupported-gradle-version:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout sources
      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
    - name: Initialize integ-test
      uses: ./.github/actions/init-integ-test

    - name: Submit with unsupported Gradle version
      id: gradle-build
      uses: ./dependency-submission
      with:
        gradle-version: '7.0.1'
        build-root-directory: .github/workflow-samples/groovy-dsl
      continue-on-error: true
    - name: Check step failed
      if: steps.gradle-build.outcome != 'failure'
      run: |
        echo "Expected dependency submission step to fail"
        exit 1
    - name: Check no dependency graph is generated
      shell: bash
      run: |
        if [ ! -z "$(ls -A dependency-graph-reports)" ]; then
            echo "Expected no dependency graph files to be generated"
            ls -l dependency-graph-reports
            exit 1
        fi

  dependency-submission-failures-insufficient-permissions:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
    - name: Checkout sources
      uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
    - name: Initialize integ-test
      uses: ./.github/actions/init-integ-test

    - name: Submit with insufficient permissions
      id: gradle-build
      uses: ./dependency-submission
      with:
        build-root-directory: .github/workflow-samples/groovy-dsl
      continue-on-error: true
    - name: Check step failed
      if: steps.gradle-build.outcome != 'failure'
      run: |
        echo "Expected dependency submission step to fail"
        exit 1
