Skip to content

Modernize CI and Julia setup - #297

Merged
devmotion merged 4 commits into
mainfrom
dmw/modernize-ci
Oct 20, 2026
Merged

devmotion merged 4 commits into
mainfrom
dmw/modernize-ci

Conversation

@devmotion

@devmotion devmotion commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Brings the CI and package setup in line with ChainRulesCore (JuliaDiff/ChainRulesCore.jl#715, JuliaDiff/ChainRulesCore.jl#717) and ChainRules (JuliaDiff/ChainRules.jl#850).

CI

  • Replace CompatHelper with Dependabot's julia ecosystem
  • Add a typos spell check workflow (and fix the typos it finds)
  • Keep the existing test matrix (lts and 1 on Linux, macOS and Windows, native arch), and test pre on Linux with allowed failures instead of in the separate JuliaNightly workflow
  • Upload coverage from the CI jobs
  • Build the docs in the CI workflow on Julia 1. The separate Documenter workflow only ran on pushes to the non-existent master branch, so the dev docs were never deployed from main
  • IntegrationTest: run on main (was master), add cache and permissions, and test the downstream packages in a temporary environment
  • Add concurrency and permissions settings, and update action versions (no more @latest/@v1/@v2 pins)

Julia setup

  • Require Julia 1.10 and drop obsolete version checks in the tests
  • Remove the Compat dependency (only is in Base) and add compat entries for stdlibs
  • Move the test dependencies to test/Project.toml and set up a workspace with the test and docs environments, using [sources] instead of Pkg.develop and the checked-in docs/Manifest.toml
  • Update Documenter to v1. The doctests had been failing silently under Documenter 0.27. They now ignore Test Summary tables, which differ between makedocs and doctest() and across Julia versions, and the deliberately failing test_rrule example (random output) is no longer doctested
  • Only import Test.eval_test on Julia < 1.13: since JuliaLang/julia@d934b03 (1.13.0-DEV.300) it is replaced by eval_test_comparison and eval_test_function, and the unconditional import printed "WARNING: Imported binding Test.eval_test was undeclared at import time". The import is still required on older versions, where the code generated by @test_msg calls eval_test unqualified
  • Bump the version to 1.13.2

Local checks

  • Pkg.test() passes on Julia 1.10.12 and 1.13.1, without the eval_test warning on 1.13
  • docs/make.jl and doctest(ChainRulesTestUtils) pass on Julia 1.13.1; doctest also passes on 1.10.12
  • typos reports nothing

🤖 Generated with Claude Code

devmotion and others added 3 commits October 20, 2026 13:26
Fix misspellings in README, docstrings, comments and tests found by
typos, plus two it misses ("based ion", "a arbitrary").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bring the CI setup in line with ChainRulesCore (JuliaDiff/ChainRulesCore.jl#715)
and ChainRules (JuliaDiff/ChainRules.jl#850):

- Replace CompatHelper with Dependabot's `julia` ecosystem
- Add a `typos` spell check workflow
- Test `pre` on Linux with allowed failures instead of a separate
  JuliaNightly workflow, and upload coverage from the CI jobs
- Build the docs in the CI workflow on Julia 1; the separate Documenter
  workflow only ran on pushes to the non-existent `master` branch
- Run IntegrationTest on `main`, add cache and permissions, and test
  downstream packages in a temporary environment
- Add concurrency and permissions everywhere and update action versions
  (no more `@latest`)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bring the package setup in line with ChainRulesCore (JuliaDiff/ChainRulesCore.jl#717):

- Require Julia 1.10 (the current LTS) and drop the obsolete version
  checks in the tests
- Remove the Compat dependency (`only` is in Base since Julia 1.4)
- Add compat entries for the stdlibs
- Move the test dependencies to test/Project.toml and make the test and
  docs environments part of a workspace, using [sources] instead of
  `Pkg.develop` and a checked-in docs/Manifest.toml
- Update Documenter to v1 and fix the doctests, which were silently
  failing with Documenter 0.27: ignore `Test Summary` tables (they
  differ between `makedocs` and `doctest` and across Julia versions) and
  don't run the deliberately failing `test_rrule` example, whose output
  is random
- Set `devbranch = "main"` in `deploydocs`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.80%. Comparing base (f7fc032) to head (84d2a1b).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #297      +/-   ##
==========================================
- Coverage   95.62%   93.80%   -1.83%     
==========================================
  Files          12       12              
  Lines         343      355      +12     
==========================================
+ Hits          328      333       +5     
- Misses         15       22       +7     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Since JuliaLang/julia@d934b03 (1.13.0-DEV.300) `Test.eval_test` is replaced
by `eval_test_comparison` and `eval_test_function`, so importing it
unconditionally warns that the imported binding was undeclared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@devmotion
devmotion merged commit bc05541 into main Oct 20, 2026
15 of 16 checks passed
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