name: QA Deprecated C and C++ action

on:
  push:
    branches:
      - master
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  output-test:
    name: Action outputs
    strategy:
      fail-fast: false
      matrix:
        os: [github-ubuntu-latest-s, github-windows-latest-s, macos-latest, macos-14]
        cache: [true, false]
        include:
          - arch: X64
          - os: macos-latest
            arch: ARM64
          - os: macos-14
            arch: ARM64
    runs-on: ${{ matrix.os }}
    steps:
      # Specifying a specific architecture of the runner is not possible for Github hosted runners
      # We can only check if the runner architecture matches the expected one
      - name: check_runner_arch
        shell: bash
        run: |
          echo "Runner architecture: ${{ runner.arch }}"
          if [[ "${{ runner.arch }}" != "${{ matrix.arch }}" ]]; then
            echo "##[error]Runner architecture does not match the expected one"
            exit 1
          fi

      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis

      - name: Run SonarQube C/C++ action
        id: run-action
        uses: ./deprecated-c-cpp
        env:
          SONAR_HOST_URL: 'https://next.sonarqube.com/sonarqube/'
        with:
          cache-binaries: ${{ matrix.cache }}

      - name: SONAR_HOST_URL is set
        shell: bash
        run: |
          [[ $SONAR_HOST_URL == "https://next.sonarqube.com/sonarqube/" ]]

      - name: sonar-scanner is installed and in PATH
        run: |
          sonar-scanner --help | grep "usage: sonar-scanner "

      - name: sonar-scanner-binary output is correct
        shell: bash
        env:
          BINARY: ${{ steps.run-action.outputs.sonar-scanner-binary }}
        run: |
          "$BINARY" --help | grep "usage: sonar-scanner "

      # build-wrapper does not have --help or equivalent option.
      # Pass to few arguments and ignore error code
      - name: build-wrapper is installed and in PATH on Windows
        if: runner.os == 'Windows'
        shell: bash
        run: |
          (build-wrapper-win-x86-64.exe || true) | grep "build-wrapper, version "

      - name: build-wrapper is installed and in PATH on Linux
        if: runner.os == 'Linux'
        shell: bash
        run: |
          (build-wrapper-linux-x86-64 || true) | grep "build-wrapper, version "

      - name: build-wrapper is installed and in PATH on macOS
        if: runner.os == 'macOs'
        shell: bash
        run: |
          (build-wrapper-macosx-x86 || true) | grep "build-wrapper, version "

      - name: build-wrapper-binary output is correct
        shell: bash
        env:
          BINARY: ${{ steps.run-action.outputs.build-wrapper-binary }}
        run: |
          ("$BINARY" || true) | grep "build-wrapper, version "
