zcbor.py: Add support for unordered maps in generated code #1534
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run tests | |
on: | |
pull_request: {} | |
schedule: | |
- cron: '0 0 * * 0' # every sunday | |
env: | |
ZEPHYR_SDK_VERSION: 0.17.0 | |
ZEPHYR_REV: c3466b14d09b1e51b6ca472f3b3654e40cba12d8 | |
jobs: | |
merge-test-1: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
platform: ["native_sim", "native_sim/native/64", "mps2/an521/cpu0"] | |
asserts: ["", "-x VERBOSE=ON -x ASSERTS=ON"] | |
name: Merge test 1 - Twister (Ubuntu) (${{ matrix.platform }}${{ matrix.asserts != '' && ' with asserts' || '' }}) | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Install zcbor | |
uses: ./.github/actions/install_zcbor | |
- name: Prepare and run tests | |
uses: ./.github/actions/prepare_and_run_tests | |
with: | |
twister_arguments: "--timestamps --platform ${{ matrix.platform }} ${{ matrix.asserts }} --exclude-tag release" | |
zephyr_toolchain: ${{ matrix.platform == 'mps2/an521/cpu0' && 'zephyr' || 'host'}} | |
zephyr_toolchain_arch: ${{ matrix.platform == 'mps2/an521/cpu0' && 'arm' || ''}} | |
merge-test-1-win: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
platform: ["mps2/an521/cpu0"] | |
asserts: [""] | |
name: Merge test 1 - Twister (Windows) (${{ matrix.platform }}${{ matrix.asserts != '' && ' with asserts' || '' }} - build only) | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Checkout Zephyr | |
run: | | |
git init zephyr-clone | |
cd zephyr-clone | |
git remote add origin https://github.com/zephyrproject-rtos/zephyr | |
git fetch origin $env:ZEPHYR_REV --depth=1 | |
git reset --hard FETCH_HEAD | |
- name: Install zcbor and pip dependencies | |
run: | | |
$ErrorActionPreference="Stop" | |
pip install -U --ignore-requires-python -r scripts\requirements.txt -r zephyr-clone\scripts\requirements-base.txt -r zephyr-clone\scripts\requirements-build-test.txt -r zephyr-clone\scripts\requirements-run-test.txt; if($LastExitCode -ne 0) {Write-Error "$LastExitCode"}; | |
pip install -e . | |
- name: Install ninja and 7zip | |
run: | | |
choco feature enable -n allowGlobalConfirmation | |
choco install ninja 7zip | |
- name: Run West | |
run: | | |
$ErrorActionPreference="Stop" | |
west init -l zephyr-clone; if($LastExitCode -ne 0) {Write-Error "$LastExitCode"}; | |
west update cmsis | |
- name: Install Zephyr SDK (ARM) | |
run: | | |
$client = new-object System.Net.WebClient | |
$client.DownloadFile("https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v$env:ZEPHYR_SDK_VERSION/zephyr-sdk-${env:ZEPHYR_SDK_VERSION}_windows-x86_64_minimal.7z", "$pwd\zephyr-sdk-${env:ZEPHYR_SDK_VERSION}_windows-x86_64_minimal.7z") | |
7z x $pwd\zephyr-sdk-${env:ZEPHYR_SDK_VERSION}_windows-x86_64_minimal.7z | |
Rename-Item -Path zephyr-sdk-${env:ZEPHYR_SDK_VERSION} -NewName zephyr-sdk | |
cd zephyr-sdk | |
$client.DownloadFile("https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v$env:ZEPHYR_SDK_VERSION/toolchain_windows-x86_64_arm-zephyr-eabi.7z", "$pwd\toolchain_windows-x86_64_arm-zephyr-eabi.7z") | |
7z x $pwd\toolchain_windows-x86_64_arm-zephyr-eabi.7z | |
- name: Run Twister | |
shell: cmd | |
run: | | |
set ZEPHYR_BASE=%cd%\zephyr-clone | |
set ZEPHYR_TOOLCHAIN_VARIANT=zephyr | |
set ZEPHYR_SDK_INSTALL_DIR=%cd%\zephyr-sdk | |
python %ZEPHYR_BASE%\scripts\twister -i -v -T tests -W --timestamps --platform ${{ matrix.platform }} ${{ matrix.asserts }} --exclude-tag release --build-only | |
merge-test-2: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
name: Merge tests 2 - Python (${{ matrix.python-version }}) functional tests (Ubuntu) | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Install zcbor | |
uses: ./.github/actions/install_zcbor | |
with: | |
zcbor_package: 'setup_install' | |
- name: Run python tests | |
working-directory: tests/scripts | |
run: | | |
python3 -m unittest test_zcbor | |
merge-test-2-win: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python-version: ['3.12'] | |
name: Merge tests 2 - Python (${{ matrix.python-version }}) functional tests (Windows) | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Read zcbor version | |
run: | | |
echo "ZCBOR_VERSION=$(cat zcbor/VERSION)" >> $env:GITHUB_ENV | |
- name: Install west and dependencies | |
run: | | |
pip install -U pip | |
pip install -U build | |
pip install -U -r scripts/requirements.txt | |
- name: Generate and install zcbor package | |
run: | | |
$ErrorActionPreference="Stop" | |
python -m build; if($LastExitCode -ne 0) {Write-Error "$LastExitCode"}; | |
pip install dist/zcbor-$env:ZCBOR_VERSION-py3-none-any.whl; if($LastExitCode -ne 0) {Write-Error "$LastExitCode"}; | |
pip uninstall -y zcbor | |
pip install -e . | |
- name: Run python tests | |
working-directory: tests/scripts | |
run: | | |
python3 -m unittest test_zcbor | |
merge-test-3: | |
runs-on: ubuntu-24.04 | |
name: Merge tests 3 - Check repo files (Ubuntu) | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
- name: Install zcbor | |
uses: ./.github/actions/install_zcbor | |
with: | |
zcbor_package: 'setup_develop' | |
- name: Run tests on repo files | |
working-directory: tests/scripts | |
run: | | |
python3 -m unittest test_repo_files | |
release-test-1: | |
runs-on: ubuntu-24.04 | |
name: Release tests 1 - Check versions | |
needs: | |
- merge-test-1 | |
- merge-test-1-win | |
- merge-test-2 | |
- merge-test-2-win | |
- merge-test-3 | |
if: "startswith(github.head_ref, 'release/')" | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Install zcbor | |
uses: ./.github/actions/install_zcbor | |
- name: Run python release tests | |
working-directory: tests/scripts | |
run: | | |
set -e | |
echo -n ${{ github.head_ref }} > HEAD_REF | |
python3 -m unittest test_versions | |
rm HEAD_REF | |
release-test-2: | |
runs-on: ubuntu-24.04 | |
name: Release tests 2 - Fuzz | |
needs: | |
- release-test-1 | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Read zcbor version | |
run: echo "ZCBOR_VERSION=$(cat zcbor/VERSION)" >> $GITHUB_ENV | |
- name: Install zcbor | |
uses: ./.github/actions/install_zcbor | |
- name: Install packages | |
run: | | |
sudo apt update | |
sudo apt install -y afl++ | |
- name: Run everything fuzz tests | |
working-directory: tests/fuzz | |
run: | | |
./test-afl.sh 2400 64 everything | |
- name: Run manifest12 fuzz tests | |
working-directory: tests/fuzz | |
run: | | |
./test-afl.sh 800 64 manifest12 | |
- name: Run pet fuzz tests | |
working-directory: tests/fuzz | |
run: | | |
./test-afl.sh 400 64 pet | |
- name: Rename fuzz failures | |
if: ${{ failure() }} | |
working-directory: tests/fuzz/build-afl/output/default/crashes/ | |
run: | | |
for i in ./* ; do mv "$i" "${i//:/_}_1"; done | |
- name: Upload fuzz failures | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: fuzz-failures | |
path: tests/fuzz/build-afl/output/default/crashes/ | |
- name: Upload release files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: zcbor-release-${{ env.ZCBOR_VERSION }} | |
path: dist/* | |
release-test-3: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
asserts: ["", "-x VERBOSE=ON -x ASSERTS=ON"] | |
name: Release tests 3 (Python ${{ matrix.python-version }}${{ matrix.asserts != '' && ' with asserts' || '' }}) | |
needs: | |
- merge-test-1 | |
- merge-test-1-win | |
- merge-test-2 | |
- merge-test-2-win | |
- merge-test-3 | |
if: "github.event_name == 'schedule' || (github.event_name == 'pull_request' && startswith(github.head_ref, 'release/'))" | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Install zcbor | |
uses: ./.github/actions/install_zcbor | |
with: | |
zcbor_package: 'setup_install' | |
- name: Prepare and run tests | |
uses: ./.github/actions/prepare_and_run_tests | |
with: | |
twister_arguments: "--timestamps --platform native_sim --platform native_sim/native/64 --platform mps2/an521/cpu0 --platform qemu_malta/qemu_malta/be ${{ matrix.asserts }}" | |
zephyr_toolchain: zephyr | |
zephyr_toolchain_arch: arm,mips | |
release-test-4: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
asserts: ["", "-x VERBOSE=ON -x ASSERTS=ON"] | |
name: Release tests 4 (Python ${{ matrix.python-version }}${{ matrix.asserts != '' && ' with asserts' || '' }}) | |
needs: | |
- merge-test-1 | |
- merge-test-1-win | |
- merge-test-2 | |
- merge-test-2-win | |
- merge-test-3 | |
if: "github.event_name == 'schedule' || (github.event_name == 'pull_request' && startswith(github.head_ref, 'release/'))" | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Install zcbor | |
uses: ./.github/actions/install_zcbor | |
with: | |
zcbor_package: 'setup_develop' | |
- name: Run python tests on samples | |
working-directory: tests/scripts | |
run: | | |
python3 -m unittest test_repo_files.TestSamples |