ci: github: west: Add a GH workflow to run the west command tests

Replace running west command tests in run_ci.sh with a github workflow.
This provides some benefits in that we can run the west command tests on
multiple python versions and host OSes (linux, mac and windows).

Also have the benefit that the tests are only run on modifications to
files in scripts/west_commands/ or scripts/west-commands.yml.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
Kumar Gala 2020-02-05 16:04:36 -06:00 committed by Kumar Gala
parent 1c80d79fdd
commit 2fd7876aa7
3 changed files with 66 additions and 19 deletions

65
.github/workflows/west_cmds.yml vendored Normal file
View file

@ -0,0 +1,65 @@
# Copyright (c) 2020 Linaro Limited.
# SPDX-License-Identifier: Apache-2.0
name: Zephyr West Command Tests
on:
push:
paths:
- 'scripts/west-commands.yml'
- 'scripts/west_commands/**'
pull_request:
paths:
- 'scripts/west-commands.yml'
- 'scripts/west_commands/**'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: [3.6, 3.7, 3.8]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: checkout
uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: cache-pip-linux
if: startsWith(runner.os, 'Linux')
uses: actions/cache@v1
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.python-version }}
restore-keys: |
${{ runner.os }}-pip-${{ matrix.python-version }}
- name: cache-pip-mac
if: startsWith(runner.os, 'macOS')
uses: actions/cache@v1
with:
path: ~/Library/Caches/pip
# Trailing '-' was just to get a different cache name
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-
restore-keys: |
${{ runner.os }}-pip-${{ matrix.python-version }}-
- name: cache-pip-win
if: startsWith(runner.os, 'Windows')
uses: actions/cache@v1
with:
path: ~\AppData\Local\pip\Cache
key: ${{ runner.os }}-pip-${{ matrix.python-version }}
restore-keys: |
${{ runner.os }}-pip-${{ matrix.python-version }}
- name: install pytest
run: |
pip3 install pytest west
- name: run pytest-win
if: runner.os == 'Windows'
run: |
cmd /C "set PYTHONPATH=.\scripts\west_commands && pytest ./scripts/west_commands/tests/"
- name: run pytest-mac-linux
if: runner.os != 'Windows'
run: |
PYTHONPATH=./scripts/west_commands pytest ./scripts/west_commands/tests/

View file

@ -14,6 +14,7 @@
# * @galak @nashif
/.known-issues/ @inakypg @nashif
/.github/workflows/ @galak @nashif
/arch/arc/ @vonhust @ruuddw
/arch/arm/ @MaureenHelm @galak @ioannisg
/arch/arm/core/aarch32/cortex_m/cmse/ @ioannisg

View file

@ -110,11 +110,6 @@ function on_complete() {
cp ${bsim_bt_test_results_file} shippable/testresults/
fi
if [ -e ${west_commands_results_file} ]; then
echo "Copy ${west_commands_results_file}"
cp ${west_commands_results_file} shippable/testresults
fi
if [ "$matrix" = "1" ]; then
echo "Skip handling coverage data..."
#handle_coverage
@ -245,20 +240,6 @@ if [ -n "$main_ci" ]; then
echo "Skipping BT simulator tests"
fi
if [ "$matrix" = "1" ]; then
# Run pytest-based testing for Python in matrix
# builder 1. For now, this is just done for the west
# extension commands, but additional directories which
# run pytest could go here too.
pytest=$(type -p pytest-3 || echo "pytest")
mkdir -p $(dirname ${west_commands_results_file})
PYTHONPATH=./scripts/west_commands "${pytest}" \
--junitxml=${west_commands_results_file} \
./scripts/west_commands/tests
else
echo "Skipping west command tests"
fi
# cleanup
rm -f test_file.txt
touch test_file_1.txt test_file_2.txt