# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: QEMU

on:
    push:
    pull_request:
    merge_group:

concurrency:
    group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
    cancel-in-progress: true

env:
    CHIP_NO_LOG_TIMESTAMPS: true
    
jobs:

    qemu-esp32:
        name: ESP32

        env:
            BUILD_TYPE: esp32-qemu

        runs-on: ubuntu-latest
        if: github.actor != 'restyled-io[bot]'

        container:
            image: ghcr.io/project-chip/chip-build-esp32-qemu:41
            volumes:
                - "/tmp/log_output:/tmp/test_logs"

        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: esp32

            - name: Build ESP32 QEMU test images
              run: |
                  scripts/run_in_build_env.sh "         \
                      ./scripts/build/build_examples.py \
                      --target esp32-qemu-tests         \
                      build                             \
                  "
            - name: Run all tests
              # Disabled being tracked here: https://github.com/project-chip/connectedhomeip/issues/32587
              if: false
              run: |
                  src/test_driver/esp32/run_qemu_image.py \
                    --verbose                             \
                    --file-image-list ./out/esp32-qemu-tests/test_images.txt
            - name: Uploading Logs
              uses: actions/upload-artifact@v4
              if: ${{ !env.ACT }}
              with:
                  name: qemu-esp32-logs
                  path: /tmp/log_output

    qemu-tizen:
        name: Tizen

        runs-on: ubuntu-latest
        if: github.actor != 'restyled-io[bot]'

        container:
            image: ghcr.io/project-chip/chip-build-tizen-qemu:41
            volumes:
                - "/tmp/log_output:/tmp/test_logs"

        steps:
            - name: Checkout
              uses: actions/checkout@v4
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: tizen

            - name: Build and run tests
              run: |
                ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py \
                        --target tizen-arm-tests-no-ble-no-thread \
                        build
                    "
