name: "Go: workaround for indirect tracing"
description: "Checks that our workaround for indirect tracing for Go 1.21+ on Linux works"
# only Linux is affected
# pinned to a version which does not support statically linked binaries for indirect tracing
versions: ["default"]
installGo: true
collection: go
steps:
  - uses: ./../action/init
    with:
      languages: go
      tools: ${{ steps.prepare-test.outputs.tools-url }}
  - name: Build code
    run: go build main.go
  - uses: ./../action/analyze
  - run: |
      if [[ -z "${CODEQL_ACTION_GO_BINARY}" ]]; then
        echo "Expected the workaround for indirect tracing of static binaries to trigger, but the" \
          "CODEQL_ACTION_GO_BINARY environment variable is not set."
        exit 1
      fi
      if [[ ! -f "${CODEQL_ACTION_GO_BINARY}" ]]; then
        echo "CODEQL_ACTION_GO_BINARY is set, but the corresponding script does not exist."
        exit 1
      fi


      # Once we start running Bash 4.2 in all environments, we can replace the
      # `! -z` flag with the more elegant `-v` which confirms that the variable
      # is actually unset and not potentially set to a blank value.
      if [[ ! -z "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" ]]; then
        echo "Expected the Go autobuilder not to be run, but the" \
          "CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was set."
        exit 1
      fi
      cd "$RUNNER_TEMP/codeql_databases"
      if [[ ! -d go ]]; then
        echo "Did not find a Go database"
        exit 1
      fi
