Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Commits that changed file headers, copyright lines or version constants across
# the whole tree. They carry no behavioural change, so `git blame` should look
# through them to the commit that last touched the code itself.
#
# GitHub applies this file automatically. To use it locally, run once:
#
# git config blame.ignoreRevsFile .git-blame-ignore-revs
#
# Add a commit here only when it is mechanical and repository-wide. A commit
# that changes behaviour does not belong in this file, however large it is.

# 2024-01-29 Update copyright.
# 986 files
a6087c2efa17d10f67b450392218b68571a68d16

# 2026-03-05 Updated copyright headers and removed trailing whitespace
# 1128 files
ea36a88e9fee4136b56e0b8faf94b9acf4c21761

# 2026-03-05 Removed misplaced copyright headers and updated port version strings
# 31 files
b20e7effea2140ded769c19184bc533480b04b8d

# 2026-06-06 Added copyright headers to files missing them
# 544 files
d0d46fd2418f3c1f9a29aeb8b3e3af53cb773dbf
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
target-branch: dev
schedule:
interval: weekly
ignore:
# The cross-repository bootstrap and workflow are reviewed together.
- dependency-name: eclipse-threadx/threadx/.github/workflows/regression_template.yml
43 changes: 23 additions & 20 deletions .github/workflows/regression_test.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,47 @@
name: USBX Regression Test

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
workflow_dispatch:
inputs:
tests_to_run:
description: 'all, single or multiple of default_build_coverage error_check_build_full_coverage tracex_enable_build device_buffer_owner_build device_zero_copy_build nofx_build_coverage optimized_build standalone_device_build_coverage standalone_device_buffer_owner_build standalone_device_zero_copy_build standalone_host_build_coverage standalone_build_coverage generic_build otg_support_build memory_management_build_coverage msrc_rtos_build msrc_standalone_build'
required: false
description: 'all, or space-separated profiles from test/cmake/usbx/CMakeLists.txt'
required: true
default: 'all'
type: string
skip_coverage:
required: false
type: boolean
default: false
coverage_name:
required: false
default: 'default_build_coverage'
push:
branches: [ master ]
branches: [dev, master]
pull_request:
branches: [ master ]
branches: [dev, master]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
concurrency:
group: usbx-regression-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
manual_tests:
if: github.event_name == 'workflow_dispatch'
permissions:
contents: read
issues: read
checks: write
pull-requests: write
# GitHub validates deployment permissions even when that job is skipped.
# The called test job narrows its own token scope.
pages: write
id-token: write

uses: eclipse-threadx/threadx/.github/workflows/regression_template.yml@master
uses: eclipse-threadx/threadx/.github/workflows/regression_template.yml@b37cd4a81a1cb8c2ebefc438220ab7f009e13362
with:
cmake_path: ./test/cmake/usbx
build_script: ./scripts/build.sh ${{ inputs.tests_to_run }}
test_script: ./scripts/test.sh ${{ inputs.tests_to_run }}
coverage_name: ${{ inputs.coverage_name }}
skip_coverage: ${{ !!inputs.skip_coverage }}
build_script: ./scripts/build.sh --manual
test_script: ./scripts/test.sh --manual
coverage_name: ${{ inputs.tests_to_run == 'all' && 'merged' || 'subset' }}
coverage_thresholds: '0 100'
skip_coverage: ${{ inputs.skip_coverage }}
skip_deploy: ${{ github.ref != 'refs/heads/master' || inputs.tests_to_run != 'all' }}

auto_tests:
if: github.event_name != 'workflow_dispatch'
Expand All @@ -49,13 +50,15 @@ jobs:
issues: read
checks: write
pull-requests: write
# The reusable workflow declares a separate deployment job.
pages: write
id-token: write

uses: eclipse-threadx/threadx/.github/workflows/regression_template.yml@master
uses: eclipse-threadx/threadx/.github/workflows/regression_template.yml@b37cd4a81a1cb8c2ebefc438220ab7f009e13362
with:
cmake_path: ./test/cmake/usbx
build_script: ./scripts/build.sh all
test_script: ./scripts/test.sh all
coverage_name: default_build_coverage
coverage_name: merged
coverage_thresholds: '66 100'
skip_coverage: false
skip_deploy: ${{ github.event_name != 'push' || github.ref != 'refs/heads/master' }}
63 changes: 63 additions & 0 deletions .github/workflows/repo_checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
###############################################################################
# Copyright (c) 2026 Eclipse ThreadX contributors
#
# This program and the accompanying materials are made available under the
# terms of the MIT License which is available at
# https://opensource.org/licenses/MIT.
#
# AI Disclosure: This file was largely AI-generated by Claude Code (Opus 5).
# The AI-generated portions may be considered public domain (CC0-1.0)
# and not subject to the project's licence. The human contributor has
# reviewed and verified that the code is correct.
#
# SPDX-License-Identifier: MIT and CC0-1.0
###############################################################################

name: repo_checks

# Repository-wide text checks.
#
# THIS LIVES IN ITS OWN WORKFLOW BECAUSE IT MUST NOT BE PATH-FILTERED, and a
# path filter is a property of a workflow rather than of a job. The check
# selects its input with `git ls-files` and scans every tracked file, so any
# file at all can carry a finding.
#
# That is not hypothetical here. The pass that introduced the fixed
# disclosure line covered source files only, and the drift it was meant to end
# survived for months afterwards in CMake files, toolchain files, shell and
# PowerShell scripts, a GDB script and a Visual Studio manifest -- precisely
# the files a source-path filter would have skipped. A workflow that gates no
# pull request anybody opens is worse than no workflow, because it looks like
# coverage.
#
# Cheap enough that running it on everything costs nothing worth measuring: it
# is grep over a repository this size, with no toolchain, no build and no
# cache.

on:
# No `paths:` on either trigger, deliberately. See above.
push:
branches: [ dev, master ]
pull_request:
branches: [ dev, master ]

# A second push to the same branch makes the first answer irrelevant.
concurrency:
group: repo-checks-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
checks:
runs-on: ubuntu-24.04
steps:
# Actions are pinned to a commit SHA with the version in the trailing
# comment. A tag can be moved; a SHA cannot, which is what makes "which
# code ran in our CI" answerable from the repository.
- name: Check out the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Check the AI disclosure comments
run: scripts/check_ai_disclosure.sh
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,8 @@ compile_commands.json
CTestTestfile.cmake

coverage_report/

/test/externals/
/test/cmake/usbx/.run.sh
/test/cmake/usbx/libs/
__pycache__/
Loading
Loading