# 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.10', '3.11', '3.12', '3.13']
        os: [ubuntu-22.04, macos-14, windows-2022]
    steps:
    - name: checkout
      uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
    - name: cache-pip-linux
      if: startsWith(runner.os, 'Linux')
      uses: actions/cache@v4
      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@v4
      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@v4
      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: |
        pip install pytest pyyaml tox
    - name: run tox
      working-directory: scripts/dts/python-devicetree
      run: |
        tox
