name: "Use a custom `checkout_path`"
description: "Checks that a custom `checkout_path` will find the proper commit_oid"
versions: ["linked"]
installGo: true
installPython: true
installDotNet: true
steps:
  # This ensures we don't accidentally use the original checkout for any part of the test.
  - name: Delete original checkout
    run: |
      # delete the original checkout so we don't accidentally use it.
      # Actions does not support deleting the current working directory, so we
      # delete the contents of the directory instead.
      rm -rf ./* .github .git
  # Check out the actions repo again, but at a different location.
  # choose an arbitrary SHA so that we can later test that the commit_oid is not from main
  - uses: actions/checkout@v6
    with:
      ref: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6
      path: x/y/z/some-path

  - uses: ./../action/init
    with:
      tools: ${{ steps.prepare-test.outputs.tools-url }}
      # it's enough to test one compiled language and one interpreted language
      languages: csharp,javascript
      source-root: x/y/z/some-path/tests/multi-language-repo

  - name: Build code
    working-directory: x/y/z/some-path/tests/multi-language-repo
    run: |
      ./build.sh

  - uses: ./../action/analyze
    with:
      checkout_path: x/y/z/some-path/tests/multi-language-repo
      ref: v1.1.0
      sha: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6

  - name: Verify SARIF after upload
    run: |
      PAYLOAD_FILE="$RUNNER_TEMP/payload-code-scanning.json"
      EXPECTED_COMMIT_OID="474bbf07f9247ffe1856c6a0f94aeeb10e7afee6"
      EXPECTED_REF="v1.1.0"
      EXPECTED_CHECKOUT_URI_SUFFIX="/x/y/z/some-path/tests/multi-language-repo"

      ACTUAL_COMMIT_OID="$(cat "$PAYLOAD_FILE" | jq -r .commit_oid)"
      ACTUAL_REF="$(cat "$PAYLOAD_FILE" | jq -r .ref)"
      ACTUAL_CHECKOUT_URI="$(cat "$PAYLOAD_FILE" | jq -r .checkout_uri)"

      if [[ "$EXPECTED_COMMIT_OID" != "$ACTUAL_COMMIT_OID" ]]; then
        echo "::error Invalid commit oid. Expected: $EXPECTED_COMMIT_OID Actual: $ACTUAL_COMMIT_OID"
        echo "$PAYLOAD_FILE"
        exit 1
      fi

      if [[ "$EXPECTED_REF" != "$ACTUAL_REF" ]]; then
        echo "::error Invalid ref. Expected: '$EXPECTED_REF' Actual: '$ACTUAL_REF'"
        echo "$PAYLOAD_FILE"
        exit 1
      fi

      if [[ "$ACTUAL_CHECKOUT_URI" != *$EXPECTED_CHECKOUT_URI_SUFFIX ]]; then
        echo "::error Invalid checkout URI suffix. Expected suffix: $EXPECTED_CHECKOUT_URI_SUFFIX Actual uri: $ACTUAL_CHECKOUT_URI"
        echo "$PAYLOAD_FILE"
        exit 1
      fi
