name: "Packaging: Config file"
description: "Checks that specifying packages using only a config file works"
# This feature is not compatible with old CLIs
versions:
  - linked
  - default
  - nightly-latest
installGo: true
installNode: true
installDotNet: true
steps:
  - uses: ./../action/init
    with:
      config-file: ".github/codeql/codeql-config-packaging.yml"
      languages: javascript
      tools: ${{ steps.prepare-test.outputs.tools-url }}
  - name: Build code
    run: ./build.sh
  - uses: ./../action/analyze
    with:
      output: "${{ runner.temp }}/results"
      upload-database: false

  - name: Check results
    uses: ./../action/.github/actions/check-sarif
    with:
      sarif-file: ${{ runner.temp }}/results/javascript.sarif
      queries-run: javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
      queries-not-run: foo,bar

  - name: Assert Results
    run: |
      cd "$RUNNER_TEMP/results"
      # We should have 4 hits from these rules
      EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"

      # use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
      RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
      echo "Found matching rules '$RULES'"
      if [ "$RULES" != "$EXPECTED_RULES" ]; then
        echo "Did not match expected rules '$EXPECTED_RULES'."
        exit 1
      fi
