# 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/**'
    - '.github/workflows/west_cmds.yml'
  pull_request:
    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-20.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@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 wheel
        pip3 install pytest west pyelftools canopen progress mypy intelhex psutil
    - 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
