# Warning: This file is generated automatically, and should not be modified.
# Instead, please modify the template in the pr-checks directory and run:
#     (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
# to regenerate this file.

name: PR Check - Export file baseline information
env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  GO111MODULE: auto
  CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
on:
  push:
    branches:
    - main
    - releases/v2
  pull_request:
    types:
    - opened
    - synchronize
    - reopened
    - ready_for_review
  workflow_dispatch: {}
jobs:
  export-file-baseline-information:
    strategy:
      matrix:
        include:
        - os: ubuntu-latest
          version: nightly-latest
        - os: macos-latest
          version: nightly-latest
        - os: windows-latest
          version: nightly-latest
    name: Export file baseline information
    permissions:
      contents: read
      security-events: write
    timeout-minutes: 45
    runs-on: ${{ matrix.os }}
    steps:
    - name: Check out repository
      uses: actions/checkout@v4
    - name: Prepare test
      id: prepare-test
      uses: ./.github/actions/prepare-test
      with:
        version: ${{ matrix.version }}
        use-all-platform-bundle: 'false'
    - name: Set environment variable for Swift enablement
      if: >-
        runner.os != 'Windows' && (
            matrix.version == '20220908' ||
            matrix.version == '20221211'
        )
      shell: bash
      run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
    - uses: ./../action/init
      id: init
      with:
        languages: javascript
        tools: ${{ steps.prepare-test.outputs.tools-url }}
      env:
        CODEQL_FILE_BASELINE_INFORMATION: true
    - uses: ./../action/.github/actions/setup-swift
      with:
        codeql-path: ${{ steps.init.outputs.codeql-path }}
    - name: Build code
      shell: bash
      run: ./build.sh
    - uses: ./../action/analyze
      with:
        output: ${{ runner.temp }}/results
      env:
        CODEQL_FILE_BASELINE_INFORMATION: true
    - name: Upload SARIF
      uses: actions/upload-artifact@v3
      with:
        name: with-baseline-information-${{ matrix.os }}-${{ matrix.version }}.sarif.json
        path: ${{ runner.temp }}/results/javascript.sarif
        retention-days: 7
    - name: Check results
      shell: bash
      run: |
        cd "$RUNNER_TEMP/results"
        expected_baseline_languages="cpp cs go java js py rb"
        if [[ $RUNNER_OS != "Windows" ]]; then
          expected_baseline_languages+=" swift"
        fi

        for lang in ${expected_baseline_languages}; do
          rule_name="${lang}/baseline/expected-extracted-files"
          found_notification=$(jq --arg rule_name "${rule_name}" '[.runs[0].tool.driver.notifications |
            select(. != null) | flatten | .[].id] | any(. == $rule_name)' javascript.sarif)
          if [[ "${found_notification}" != "true" ]]; then
            echo "Expected SARIF output to contain notification '${rule_name}', but found no such notification."
            exit 1
          else
            echo "Found notification '${rule_name}'."
          fi
        done
    env:
      CODEQL_ACTION_TEST_MODE: true