Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
342cd3b
refactor: install clang tools on demand
2bndy5 Feb 19, 2026
5b59378
reduce library API surface
2bndy5 Mar 11, 2026
bef6673
review changes
2bndy5 Mar 11, 2026
0883a0d
prioritize and order tests
2bndy5 Mar 12, 2026
920e838
print cached bin path and version
2bndy5 Mar 12, 2026
6b5a77b
explicitly populate cache with dedicated test "profile"
2bndy5 Mar 29, 2026
4a40481
show more info about failing test
2bndy5 Mar 29, 2026
a84fa70
add fallback to LLVM install script (for `apt`)
2bndy5 Mar 30, 2026
424a837
some code review on unix-only module
2bndy5 Mar 30, 2026
39d4d66
ensure tool is downloaded by using the min support clang version
2bndy5 Mar 30, 2026
fadeb13
wire up `--directory` with static and PyPI downloads
2bndy5 Mar 30, 2026
2d1609c
propagate err in node.js binding and regenerate type stub
2bndy5 Apr 1, 2026
63aa795
propagate IO errors when checking files' hashes
2bndy5 Apr 1, 2026
25cf611
use tmpfile dep to remove partial downloads upon failure.
2bndy5 Apr 1, 2026
72daee3
ensure installed version (via native package manager) matches desired…
2bndy5 Apr 1, 2026
9ef398f
use `--noconfirm` for pacman and no sudo for homebrew
2bndy5 Apr 1, 2026
4806708
use `dnf list installed`
2bndy5 Apr 1, 2026
c4b23f5
use `.split_ascii_whitespace()` instead of `.split(' ')`
2bndy5 Apr 1, 2026
7feee4b
support matching universal2 PyPI platform tags
2bndy5 Apr 1, 2026
60e51ce
progress bars uses `\r` if stdout is a terminal.
2bndy5 Apr 1, 2026
65e08a7
fix `get_min_version()` for completeness
2bndy5 Apr 1, 2026
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
21 changes: 15 additions & 6 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,37 @@ nextest-version = "0.9.77"

[profile.default]
# A profile to run most tests, except tests that run longer than 10 seconds
default-filter = "not test(#*rate_limit_secondary) - test(#git::test::with_*) - test(#repo_get_sha)"
default-filter = """\
not test(#*rate_limit_secondary) \
- test(#git::test::with_*) \
- test(#git::test::repo_get_sha) \
- test(#*eval_version)
"""

# This will flag any test that runs longer than 10 seconds. Useful when writing new tests.
slow-timeout = "10s"

# show which tests were skipped
status-level = "skip"

[profile.warmup]
# Run this profile before other tests to warmup the cache of clang tools binaries.
default-filter = 'test(#*eval_version)'

[profile.ci]
# A profile to run only tests that use clang-tidy and/or clang-format
# NOTE: This profile is intended to keep CI runtime low. Locally, use default or all profiles

# This is all tests in tests/ folder + unit test for --extra-args.
default-filter = "kind(test) + test(#*use_extra_args)"

# show which tests were skipped
status-level = "skip"
default-filter = "kind(test) + test(#*use_extra_args) + test(#*eval_version)"

# show log output from each test
success-output = "final"
failure-output = "immediate-final"

[profile.all]
# A profile to run all tests (including tests that run longer than 10 seconds)
default-filter = "all()"
default-filter = "all() - test(#*eval_version)"

# Revert slow-timeout to nextest default value.
# Otherwise, default profile value (10s) is inherited.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
fi
- run: rustup update --no-self-update
if: steps.cache.outputs.cache-hit != 'true' || steps.validate.outputs.cache-valid == 'false'
- run: cargo build --bin cpp-linter --release
- run: cargo build --bin cpp-linter --features bin --release
if: steps.cache.outputs.cache-hit != 'true' || steps.validate.outputs.cache-valid == 'false'
- name: Upload build artifact
uses: actions/upload-artifact@v7
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/binary-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,10 @@ jobs:
os: ubuntu-latest
vendored: true
cross: true
- target: powerpc64-unknown-linux-gnu
os: ubuntu-latest
vendored: true
cross: true
# - target: powerpc64-unknown-linux-gnu
# os: ubuntu-latest
# vendored: true
# cross: true
- target: powerpc64le-unknown-linux-gnu
os: ubuntu-latest
vendored: true
Expand Down Expand Up @@ -131,7 +131,7 @@ jobs:
--bin cpp-linter
--release
--target ${{ matrix.target }}
${{ matrix.vendored && '--features openssl-vendored' || '' }}
--features ${{ matrix.vendored && 'bin,openssl-vendored' || 'bin' }}

- name: Prepare artifacts (unix)
if: runner.os != 'Windows'
Expand Down
139 changes: 21 additions & 118 deletions .github/workflows/run-dev-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: ['windows-latest', ubuntu-latest]
os: ["windows-latest", ubuntu-latest]

runs-on: ${{ matrix.os }}
steps:
Expand Down Expand Up @@ -93,125 +93,28 @@ jobs:
- if: runner.os == 'Linux'
run: sudo apt-get update

- name: Install clang 11
uses: ./.github/install-clang-action
with:
version: '11'

- name: Collect Coverage for clang v11
env:
CLANG_VERSION: '11'
run: nur test --profile ci

- name: Install clang 12
uses: ./.github/install-clang-action
with:
version: '12'

- name: Collect Coverage for clang v12
env:
CLANG_VERSION: '12'
run: nur test --profile ci

- name: Install clang 13
uses: ./.github/install-clang-action
with:
version: '13'

- name: Collect Coverage for clang v13
env:
CLANG_VERSION: '13'
run: nur test --profile ci

- name: Install clang 14
uses: ./.github/install-clang-action
with:
version: '14'

- name: Collect Coverage for clang v14
env:
CLANG_VERSION: '14'
run: nur test --profile ci

- name: Install clang 15
uses: ./.github/install-clang-action
with:
version: '15'

- name: Collect Coverage for clang v15
env:
CLANG_VERSION: '15'
run: nur test --profile ci

- name: Install clang 16
uses: ./.github/install-clang-action
with:
version: '16'

- name: Collect Coverage for clang v16
env:
CLANG_VERSION: '16'
run: nur test --profile ci
- name: Install nushell
uses: hustcer/setup-nu@920172d92eb04671776f3ba69d605d3b09351c30 # v3.22

- name: Install clang 17
uses: ./.github/install-clang-action
with:
version: '17'

- name: Collect Coverage for clang v17
env:
CLANG_VERSION: '17'
run: nur test --profile ci

- name: Install clang 18
uses: ./.github/install-clang-action
with:
version: '18'

- name: Collect Coverage for clang v18
- name: Run test suite
env:
CLANG_VERSION: '18'
run: nur test --profile ci

- name: Install clang v19
uses: ./.github/install-clang-action
with:
version: '19'

- name: Collect Coverage for clang v19
env:
CLANG_VERSION: '19'
run: nur test --profile ci

- name: Install clang v20
uses: ./.github/install-clang-action
with:
version: '20'

- name: Collect Coverage for clang v20
env:
CLANG_VERSION: '20'
run: nur test --profile ci

- name: Install clang v21
uses: ./.github/install-clang-action
with:
version: '21'

- name: Collect Coverage for clang v21
env:
CLANG_VERSION: '21'
run: nur test --profile ci

- name: Install clang v22
uses: ./.github/install-clang-action
with:
version: '22'

- name: Collect Coverage for clang v22
env:
CLANG_VERSION: '22'
run: nur test --profile all
MIN_CLANG_VERSION: "11"
MAX_CLANG_VERSION: "22"
shell: nu {0}
run: |-
let max_ver = $env.MAX_CLANG_VERSION | into int
let min_ver = $env.MIN_CLANG_VERSION | into int
for $ver in ($min_ver..$max_ver) {
print $"::group::Testing with clang v($ver)"
with-env { CLANG_VERSION: $"($ver)" } {
nur test --profile warmup
let test_profile = (
if ($ver == $max_ver) { "all" } else { "ci" }
)
nur test --profile $test_profile
}
print "::endgroup::"
}

- name: Generate Coverage HTML report
run: nur test llvm-cov
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ repos:
exclude: bindings/node/.*package\.json
- id: check-docstring-first
- id: check-added-large-files
exclude: '^\.yarn/releases/yarn.*js'
exclude: '^\.yarn/releases/yarn.*js|pypi_clang.*\.json$'
- id: check-yaml
exclude: docs/mkdocs.yml
- id: check-toml
Expand Down
Loading
Loading