# Copyright (c) 2020 Linaro Limited.
# SPDX-License-Identifier: Apache-2.0

name: Zephyr West Command Tests

on:
  push:
    branches:
    - main
    - v*-branch
    paths:
    - 'scripts/west-commands.yml'
    - 'scripts/west_commands/**'
    - '.github/workflows/west_cmds.yml'
  pull_request:
    branches:
    - main
    - v*-branch
    paths:
    - 'scripts/west-commands.yml'
    - 'scripts/west_commands/**'
    - '.github/workflows/west_cmds.yml'

jobs:
  west-commnads:
    name: West Command Tests
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        python-version: [3.8, 3.9, '3.10']
        os: [ubuntu-22.04, macos-11, windows-2022]
        exclude:
        - os: macos-11
          python-version: 3.6
        - os: windows-2022
          python-version: 3.6
    steps:
    - name: checkout
      uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}
    - name: cache-pip-linux
      if: startsWith(runner.os, 'Linux')
      uses: actions/cache@v3
      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@v3
      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@v3
      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 wheel
        pip3 install pytest west pyelftools canopen progress mypy intelhex psutil ply pyserial
    - name: run pytest-win
      if: runner.os == 'Windows'
      run: |
        python ./scripts/west_commands/run_tests.py
    - name: run pytest-mac-linux
      if: runner.os != 'Windows'
      run: |
        ./scripts/west_commands/run_tests.py
