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

name: Devicetree script tests

on:
  push:
    branches:
    - main
    - v*-branch
    paths:
    - 'scripts/dts/**'
    - '.github/workflows/devicetree_checks.yml'
  pull_request:
    branches:
    - main
    - v*-branch
    paths:
    - 'scripts/dts/**'
    - '.github/workflows/devicetree_checks.yml'

jobs:
  devicetree-checks:
    name: Devicetree script 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@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 python dependencies
      run: |
        pip3 install wheel
        pip3 install pytest pyyaml tox
    - name: run tox
      working-directory: scripts/dts/python-devicetree
      run: |
        tox
