Skip to content

tests: arduino-core-tests + test_config.h - #27

Open
IFX-Anusha wants to merge 12 commits into
ifx-mainfrom
ifx-arduino-core-tests
Open

IFX-Anusha wants to merge 12 commits into
ifx-mainfrom
ifx-arduino-core-tests

Conversation

@IFX-Anusha

@IFX-Anusha IFX-Anusha commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

By creating this pull request you agree to the terms in CONTRIBUTING.md.
https://github.com/Infineon/.github/blob/master/CONTRIBUTING.md
--- DO NOT DELETE ANYTHING ABOVE THIS LINE ---

CONTRIBUTING.md also tells you what to expect in the PR process.

Description
Infineon/arduino-core-tests (with its nested Unity submodule) as a pinned submodule under arduino_core_tests.

Add test_config.h as a shared scaffold — one file, one #if defined(ARDUINO_) block per board — matching where the submodule's own Makefile expects it. No board blocks included here; those belong to the family branch that owns each board (see edge-arduino-core-tests-config for kit_pse84_ai).

README.md documents the convention and how to run a test via make -C extra/arduino_core_tests.

Verified: test_digitalio_single compiles, links, flashes, and runs correctly on real KIT-PSE84-AI hardware using this mechanism.

The job runs in a container, where GitHub Actions defaults run: steps
to sh instead of bash. The step uses <<< here-strings (bash-only),
which sh rejects with 'Syntax error: redirection unexpected'.
…reachable

git describe was picking up windows_toolchain_1.0.1 (created by
repackage_toolchain_windows.yml) as the closest tag, since the
existing --exclude '*/*' only filters tags containing a slash. The
resulting non-semver describe output made the script's regex match
fail and exit 1, breaking build-env on any branch reachable from that
tag.

Excluding it uncovers a second issue on edge-main/control-main: no
semver tag is reachable at all from their rebuilt history (0.0.1/0.0.2
are on the old pre-branch-split history). Fall back to 9.9.9-0 in that
case, same as the existing no-git-history fallback path.
Matches the codebase convention of putting CI logic in extra/*.sh
scripts rather than inlining it in workflow YAML (get_core_version.sh,
get_board_details.sh, package_core.sh, etc.).

Invoking it as 'bash <script>' also sidesteps the sh-vs-bash
default-shell issue at the source, instead of relying on an explicit
shell: bash override on the step.

Also installs jq on demand if missing, since
zephyrprojectrtos/ci-base:latest doesn't ship it.
Direct pushes to edge-main/control-main only need to build/package that
family's own feature boards; PRs still validate the full board matrix
before merge. package_core.sh now respects a pre-filtered ALL_BOARD_DATA
if the caller sets it, falling back to the full board set otherwise.
… opted in

A direct push to a branch with zero feature_board=true boards (e.g.
control-main today) previously filtered ALL_BOARD_DATA down to an empty
array, causing build-board to produce zero binaries and package-core to
crash with a confusing 'tar: Cannot open: No such file or directory'
instead of a clear error.

Only apply the feature-board filter if it leaves at least one board, so
branches with no board opted in yet keep building/packaging their full
board set exactly as before this mechanism existed.
Previously only direct pushes were limited to a board family's own
feature_board boards; PRs always ran the full board matrix as a
pre-merge safety net. Per request, apply the same filtering to PRs as
well, so both events only build/test the branch's own boards (still
falling back to the full set if none are opted in).

Note: this trades away full-matrix pre-merge validation on PRs against
edge-main/control-main - a PR touching shared CI/build logic will no
longer be checked against unrelated boards (giga, portenta, etc.)
before merge.
hal_infineon's pse84_metadata.cmake attempts to pip-install imgtool's
Python dependencies (cryptography, cbor2, click, intelhex, Pillow) at
CMake-configure time, but only emits a message(WARNING ...) if that
fails rather than aborting the build. In our CI this silently no-ops,
and the failure resurfaces later as a confusing
ModuleNotFoundError: No module named 'cryptography' from imgtool.py
during the post-build signing step.

Pre-install the same packages explicitly in this workflow, scoped to
kit_pse84_ai only, so the existing HAL-level install attempt becomes
a harmless no-op regardless of whether/why it fails in CI.
@IFX-Anusha IFX-Anusha changed the title build(tests): vendor arduino-core-tests + test_config.h scaffold tests: arduino-core-tests + test_config.h Sep 28, 2026
@IFX-Anusha
IFX-Anusha force-pushed the ifx-arduino-core-tests branch from e20d53b to 729eea3 Compare September 28, 2026 08:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant