# Copyright (c) 2023 Intel Corporation. # SPDX-License-Identifier: Apache-2.0 name: Twister BlackBox TestSuite on: pull_request: branches: - main paths: - 'scripts/pylib/twister/**' - 'scripts/twister' - 'scripts/tests/twister_blackbox/**' - '.github/workflows/twister_tests_blackbox.yml' jobs: twister-tests: name: Twister Black Box Tests runs-on: ${{ matrix.os }} strategy: matrix: python-version: [3.8, 3.9, '3.10', '3.11', '3.12'] os: [ubuntu-22.04] container: image: ghcr.io/zephyrproject-rtos/ci:v0.26.5 env: ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.3 steps: - name: Apply Container Owner Mismatch Workaround run: | # FIXME: The owner UID of the GITHUB_WORKSPACE directory may not # match the container user UID because of the way GitHub # Actions runner is implemented. Remove this workaround when # GitHub comes up with a fundamental fix for this problem. git config --global --add safe.directory ${GITHUB_WORKSPACE} - name: Checkout uses: actions/checkout@v3 - name: Environment Setup run: | echo "$HOME/.local/bin" >> $GITHUB_PATH west init -l . || true west config --global update.narrow true west update --path-cache /github/cache/zephyrproject 2>&1 1> west.update.log || west update --path-cache /github/cache/zephyrproject 2>&1 1> west.update.log || ( rm -rf ../modules ../bootloader ../tools && west update --path-cache /github/cache/zephyrproject) west forall -c 'git reset --hard HEAD' - name: Set Up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Go Into Venv shell: bash run: | python3 -m pip install --user virtualenv python3 -m venv env source env/bin/activate echo "$(which python)" - name: Install Packages run: | python3 -m pip install -U -r scripts/requirements-base.txt -r scripts/requirements-build-test.txt -r scripts/requirements-run-test.txt - name: Run Pytest For Twister Black Box Tests shell: bash env: ZEPHYR_BASE: ./ ZEPHYR_TOOLCHAIN_VARIANT: zephyr run: | echo "Run twister tests" source zephyr-env.sh PYTHONPATH="./scripts/tests" pytest ./scripts/tests/twister_blackbox - name: Upload Unit Test Results if: success() || failure() uses: actions/upload-artifact@v2 with: name: Black Box Test Results (Python ${{ matrix.python-version }}) path: | twister-out*/twister.log twister-out*/twister.json twister-out*/testplan.log retention-days: 14 - name: Clear Workspace if: success() || failure() run: | rm -rf twister-out*/