Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
5783ab8
Initial commit
danwos Apr 26, 2018
791cd5b
initial commit
danwos Apr 26, 2018
e1b730d
moved docs to sphinx-root folder
danwos Apr 26, 2018
6372af5
added shields to doc
danwos Apr 26, 2018
3c7a255
corrected setup.py setup and namespace handling
danwos Apr 26, 2018
5daeff3
Setup done for correct testing
danwos Apr 26, 2018
8722cef
Added first directive and some working tests
danwos Jun 4, 2018
ee59201
Merge branch 'master' of https://github.com/useblocks/sphinx-test-rep…
danwos Jun 4, 2018
4dd6c79
fixed tests
danwos Jun 4, 2018
ab5be94
added parse() to get a common obj from different xml-files. Added als…
danwos Jun 4, 2018
7a63821
Added initial table generation
danwos Jun 5, 2018
5e9a481
added test result layout
danwos Jun 5, 2018
b5fef5e
added doc requirements
danwos Jun 5, 2018
0a2423d
removed xml validation from init and put it unto a specific function
danwos Jun 5, 2018
72dc832
Evn report (useblocks/sphinx-test-reports#2)
saifsayyad Dec 7, 2018
4302414
Better test-env doc
danwos Dec 7, 2018
9cafb09
skip testsuites element if present
Aug 26, 2019
b9dbf2b
Merge pull request useblocks/sphinx-test-reports#9 from ptillemans/PY…
danwos Aug 27, 2019
c7cc202
Raised version to 0.2.1
danwos Aug 27, 2019
132dad6
Removes py2.7 and 3.4 from travis config
danwos Aug 27, 2019
dacfed9
Adds test_file, test_suite and test_case directives
danwos Nov 12, 2019
92a5906
Adds needs support
danwos Nov 13, 2019
3ae363b
Fixes FLAKE8 findings
danwos Nov 13, 2019
6c898bd
Rename test_link to tr_link. Better pytest support *sigh*
danwos Nov 13, 2019
7c9b541
Adds missing reqs for doc generation
danwos Nov 13, 2019
7e3bf2d
Adds plantuml deps
danwos Nov 13, 2019
c7c3d67
Uses style for test-cases and tables. Better docs with more exmaples
danwos Nov 15, 2019
d96c0a5
Fixes tests
danwos Nov 15, 2019
52a3711
Raises version to 0.3.1
danwos Nov 15, 2019
fbd40b7
Fixes flake8 findings#
danwos Nov 15, 2019
9c70407
Fixes flake8 findings#
danwos Nov 15, 2019
b8cfcfc
Set doc-req for test-report on 0.3.1
danwos Nov 15, 2019
5ff1f89
Adds new tr_file and go options
danwos Nov 21, 2019
b1eeebb
deps update
danwos Nov 21, 2019
c01fdaf
Adds test_report directive
danwos Nov 21, 2019
efe2857
changelog: report
danwos Nov 21, 2019
6e6c8ca
Flake8 fixes
danwos Nov 21, 2019
15a196c
doc-deps update
danwos Nov 22, 2019
e8a5a06
doc-deps update
danwos Nov 22, 2019
a8c4d4f
Raised version to 0.3.3
danwos Nov 22, 2019
bebaf96
doc-deps update
danwos Nov 22, 2019
bf1f4e3
Adds more tool links
danwos May 26, 2020
1ffc67e
Fix RemovedInSphinx40Warning
lassebn Aug 10, 2020
ce63b5d
Merge pull request useblocks/sphinx-test-reports#11 from lassebn/fix-…
danwos Aug 11, 2020
1f96cd8
Raised version to 0.3.4
danwos Apr 30, 2021
08dabee
Install description fix
danwos Jun 18, 2021
2df1f27
Merge pull request useblocks/sphinx-test-reports#16 from useblocks/in…
danwos Jun 18, 2021
a7b95a4
Added ecosystem desc to docs
danwos Oct 25, 2021
cdc39d4
Linting and move to github CI
danwos Nov 10, 2021
c32bffc
README fix
danwos Nov 10, 2021
f127980
Test cases fixes and better import strategy
danwos Nov 10, 2021
99f4cf8
Merge pull request useblocks/sphinx-test-reports#22 from useblocks/typos
danwos Nov 10, 2021
ab0e369
Parallel build support (by twodrops)
danwos Nov 10, 2021
9963c8a
Merge pull request useblocks/sphinx-test-reports#23 from useblocks/pa…
danwos Nov 10, 2021
299d216
Fixed skip test lookup in junit parser
JamesMBarr Jul 30, 2021
9c04167
Support added for pytest xfail test cases
JamesMBarr Aug 1, 2021
1707554
linter fixes
danwos Nov 10, 2021
52649f6
minor doc updates and version 0.3.6 raise
danwos Nov 12, 2021
369ef4b
small mistake on `test-results` usage
Dec 16, 2021
3685ff8
Supports nested testsuites (useblocks/sphinx-test-reports#31)
mawieland May 20, 2022
952f45c
adding support for custom templates for testreports (useblocks/sphinx…
mawieland May 24, 2022
ca8941f
fixed broken link in index.rst + small typos (useblocks/sphinx-test-r…
mawieland May 24, 2022
8aeaee2
Preparation for release 3.7
danwos Jun 9, 2022
0b1b66f
Merge pull request useblocks/sphinx-test-reports#36 from useblocks/3.…
danwos Jun 9, 2022
5046b9f
Sphinx-Test-Report supports SN 1.0.1
iSOLveIT Jul 15, 2022
2334e8a
Merge pull request useblocks/sphinx-test-reports#39 from useblocks/da…
iSOLveIT Jul 16, 2022
596fee8
migrated nosetests to pytest
haiyangToAI Sep 12, 2022
f1d854b
enable pre-commit in CI lint
haiyangToAI Sep 12, 2022
687a912
removed nox run lint
haiyangToAI Sep 12, 2022
430c49f
Merge pull request useblocks/sphinx-test-reports#42 from useblocks/re…
danwos Sep 26, 2022
10089b4
merge fix
danwos Sep 26, 2022
d7b4cb9
Merge pull request useblocks/sphinx-test-reports#43 from useblocks/sn…
danwos Sep 26, 2022
9259648
fixed test_file with needs_extra_options
haiyangToAI Sep 26, 2022
29c5be0
Merge pull request useblocks/sphinx-test-reports#44 from useblocks/fi…
danwos Oct 5, 2022
1612f5f
Support for multiple testsuites in one "testsuites" object (useblocks…
danwos Oct 26, 2022
4d4b964
Adds tr_suite_id_length and tr_case_id_length (useblocks/sphinx-test-…
danwos Oct 27, 2022
038603e
Release 1.0.1 preparation (useblocks/sphinx-test-reports#48)
danwos Nov 4, 2022
b88dc63
Links in test-suite and co do not throw error (useblocks/sphinx-test-…
danwos Dec 16, 2022
f37cfd5
support ctest junit file parsing UPDATE (useblocks/sphinx-test-report…
danwos Dec 21, 2022
7b710e3
Preparation for release 1.0.2 (useblocks/sphinx-test-reports#54)
danwos Dec 21, 2022
51ad3d2
docs using sphinx-needs > 1.1.1
danwos Dec 21, 2022
d9ca802
Updated project to use Useblocks theme
iSOLveIT Jan 13, 2023
5fc6851
Updated project to use Useblocks theme
iSOLveIT Jan 13, 2023
33c7cb2
Updated docs-requirements.txt
iSOLveIT Jan 13, 2023
5b9f238
Updated documentation content and theme
iSOLveIT Jan 13, 2023
4dfae57
Updated CSS & JS for documentation theme
iSOLveIT Jan 13, 2023
c654990
Updated logo and favicon for documentation
iSOLveIT Jan 13, 2023
014c1a8
Tr encoding (useblocks/sphinx-test-reports#62)
danwos Mar 10, 2023
86c322a
Initial JSON Parser implementation (useblocks/sphinx-test-reports#65)
danwos Jul 3, 2023
29178e0
add junit ctest xml tests (useblocks/sphinx-test-reports#72)
kreuzberger Jan 22, 2024
e274fd8
[useblocks/sphinx-test-reports#69] fix deprecation warning (useblocks…
kreuzberger Apr 2, 2024
da0c8bf
Changed import to enable sphinx-needs 4.1 compatibility (useblocks/sp…
MaximilianSoerenPollak Dec 16, 2024
ba8b65a
readthedocs config file (useblocks/sphinx-test-reports#85)
danwos Dec 16, 2024
f088d83
new rtd config (useblocks/sphinx-test-reports#86)
danwos Dec 16, 2024
cf0ed81
typo in docs (useblocks/sphinx-test-reports#87)
gabrielfougeron Jan 1, 2025
5ec3511
new config (useblocks/sphinx-test-reports#88)
danwos Jan 17, 2025
2a3cd7c
Fixing linter settings (useblocks/sphinx-test-reports#89)
danwos Jan 17, 2025
8328825
Using pyproject.toml instead of setup.py (useblocks/sphinx-test-repor…
danwos Jan 17, 2025
57f1e78
Fixing doc deps and deprecations (useblocks/sphinx-test-reports#92)
danwos Jan 17, 2025
b58b40a
Allowing multiple option attributes for `tr_link` function (useblocks…
MaximilianSoerenPollak Jan 17, 2025
0aa7ecc
Use pathlib for file args to support Windows and Linux. (useblocks/sp…
ntouran Jan 17, 2025
1e51a46
Raising version to 1.1.0 (useblocks/sphinx-test-reports#93)
danwos Jan 17, 2025
77d9c49
Adding tr_extra_option to some directives (useblocks/sphinx-test-repo…
MaximilianSoerenPollak Mar 26, 2025
cf032a7
Allows JSON Parser to set additional options (useblocks/sphinx-test-r…
danwos Mar 27, 2025
b3e759e
Adds pre-commit as test-dep
danwos Mar 27, 2025
5301cae
Preparation of release 1.2.0 (useblocks/sphinx-test-reports#101)
danwos Mar 27, 2025
7e056b2
🔧 Add taplo pre-commit (useblocks/sphinx-test-reports#103)
ubmarco Apr 1, 2025
a19a7a8
🔧 Added all_good job (useblocks/sphinx-test-reports#109)
ubmarco Apr 1, 2025
a7504cd
🔧 Add yamlfmt (useblocks/sphinx-test-reports#105)
ubmarco Apr 1, 2025
05b3df4
🔧 Introduce ruff (useblocks/sphinx-test-reports#104)
ubmarco Apr 1, 2025
2e916d5
🔧 Add standard hooks (useblocks/sphinx-test-reports#106)
ubmarco Apr 1, 2025
d398b88
🐛 Fix plantuml on RTD (useblocks/sphinx-test-reports#115)
ubmarco Apr 2, 2025
fc20d21
🔧 Remove baumpfleger (useblocks/sphinx-test-reports#112)
ubmarco Apr 2, 2025
af557d5
🔧 Clean makefile (useblocks/sphinx-test-reports#111)
ubmarco Apr 2, 2025
32a67c4
🔧 Use flit/uv (useblocks/sphinx-test-reports#110)
ubmarco Apr 2, 2025
f7135f1
🔧 Removed py38 from classifiers
ubmarco Apr 2, 2025
d0f8da8
🔧 Activate mypy (useblocks/sphinx-test-reports#113)
ubmarco Jun 16, 2025
7d21662
🔧 Update configuration and tests for UTF-8 support
korbi-web-215 Sep 22, 2025
6cf3afd
fix Codelinks error
korbi-web-215 Sep 22, 2025
0f426ad
fix codelinks
korbi-web-215 Sep 22, 2025
0ba5857
Fix formatting issues from pre-commit
korbi-web-215 Sep 23, 2025
c9fb0da
fix last errors
korbi-web-215 Sep 23, 2025
098432a
Add latest SN version to CI
patdhlk Sep 25, 2025
29f9d06
Add latest sphinx-needs version
patdhlk Sep 28, 2025
d0a0326
Merge pull request useblocks/sphinx-test-reports#119 from useblocks/k…
patdhlk Sep 28, 2025
747d03c
Preparation for 1.3.0 release
patdhlk Sep 28, 2025
3d85464
Update VERSION
patdhlk Sep 28, 2025
206817f
Add to changelog
ubmarco Sep 28, 2025
927ba19
🚀 Release v1.3.0
patdhlk Sep 28, 2025
1bf3bfb
🔧 Add release CI workflow (useblocks/sphinx-test-reports#121)
ubmarco Sep 28, 2025
9e871dd
👌 Handle SN >= 6 schema validation (useblocks/sphinx-test-reports#122)
patdhlk Oct 2, 2025
1502f8d
🚀 Release v1.3.1 (useblocks/sphinx-test-reports#123)
patdhlk Oct 2, 2025
7e669c0
🐛 Fix version increase (useblocks/sphinx-test-reports#124)
patdhlk Oct 2, 2025
a67ffbe
🔧 Add coverage workflow (useblocks/sphinx-test-reports#125)
patdhlk Nov 7, 2025
5bc966a
🔧 Refactor safe_add_file and safe_remove_file to use app.registry for…
iSOLveIT Nov 13, 2025
a63de8d
Merge pull request useblocks/sphinx-test-reports#128 from useblocks/f…
iSOLveIT Nov 13, 2025
52e9cfc
🚀 Release v1.3.2
iSOLveIT Nov 13, 2025
e1b057e
🔧 Test against Sphinx-Needs 6.3.0 (useblocks/sphinx-test-reports#130)
ubmarco Feb 4, 2026
9241df5
🔧 Add sphinx-needs 8.0.0 compatibility (useblocks/sphinx-test-reports…
cpolzer May 8, 2026
5bd4c53
feat: link JUnit XML properties to sphinx-needs fields (useblocks/sph…
cpolzer May 20, 2026
20684df
test: strict schema must ignore unpopulated sphinx-test-reports field…
ubmarco Jun 16, 2026
b2fc009
Handle JUnit <error> result state in parse_testcase() (useblocks/sphi…
patdhlk Jun 16, 2026
5036f28
Clarify Sphinx-Needs type names in docs (useblocks/sphinx-test-report…
Mirochill Jun 16, 2026
b0599bd
docs: note that numeric cases filtering requires Sphinx-Needs >= 6 (u…
ubmarco Jun 16, 2026
da2436d
🚀 Release v1.4.0 (useblocks/sphinx-test-reports#138)
ubmarco Jun 16, 2026
9ea922f
docs: tidy the Sphinx-Needs ecosystem cards (fixes flaky linkcheck) (…
ubmarco Jun 19, 2026
982d0e1
feat: support the googletest XML dialect (useblocks/sphinx-test-repor…
ubmarco Sep 1, 2026
7b9ca30
feat: expose the test-case source location as need fields (useblocks/…
ubmarco Sep 3, 2026
2dd3214
feat: opt-in deterministic test-case need IDs (useblocks/sphinx-test-…
ubmarco Sep 4, 2026
6e594a5
feat: Sphinx-free test-XML to needs.json converter CLI
ubmarco Sep 4, 2026
b489e18
Revert "feat: Sphinx-free test-XML to needs.json converter CLI" (useb…
ubmarco Sep 5, 2026
f090dd3
build: require Python 3.11 (useblocks/sphinx-test-reports#147)
ubmarco Sep 7, 2026
99e21bf
build: require sphinx-needs 6.0.1 and Sphinx 7.4 (useblocks/sphinx-te…
ubmarco Sep 7, 2026
03d0279
feat(config): declarative [test_reports] section in ubproject.toml (u…
ubmarco Sep 7, 2026
6c97b01
build: drop dead `packaging` runtime dependency (useblocks/sphinx-tes…
ubmarco Sep 8, 2026
e1d0a91
ci: test against sphinx-needs 8.5.0 (useblocks/sphinx-test-reports#158)
ubmarco Sep 9, 2026
785066c
feat(cli): `test-reports build needs` — Sphinx-free test-XML to needs…
ubmarco Sep 10, 2026
f0a58b8
feat(pytest): plugin writing the XML shape this extension reads (useb…
ubmarco Sep 10, 2026
c2671c7
build: make Sphinx and sphinx-needs the `sphinx` extra — bare package…
ubmarco Sep 10, 2026
91c9e19
feat(parsers)!: spell a failed result `failed`, not `failure` — one r…
ubmarco Sep 11, 2026
ffdf962
🚀 Release v2.0.0 (useblocks/sphinx-test-reports#160)
ubmarco Sep 11, 2026
918f3cd
🔧 Import sphinx-test-reports into the workspace as packages/sphinx-te…
chrisjsewell Sep 15, 2026
7876097
🔧 Wire sphinx-test-reports into the workspace, and relock
chrisjsewell Sep 15, 2026
d48721b
🔧 Retire sphinx-test-reports' standalone tooling
chrisjsewell Sep 15, 2026
09ef57b
🎨 Adopt the workspace's ruff set and port sphinx-test-reports to ty
chrisjsewell Sep 15, 2026
251f654
🧪 Spawn builds through the interpreter under test, and fence it
chrisjsewell Sep 15, 2026
02e6236
📚 Make the sphinx-test-reports docs build clean in the workspace
chrisjsewell Sep 15, 2026
a9a52ad
🔧 Re-root sphinx-test-reports' Read the Docs config at the repository
chrisjsewell Sep 15, 2026
903a646
🧪 Run sphinx-test-reports in CI, and fix the type gate's canary
chrisjsewell Sep 15, 2026
6c1b260
🔧 Teach the release workflow this member's module name, and its compa…
chrisjsewell Sep 15, 2026
2b37678
📚 Record sphinx-test-reports in the places that list the packages
chrisjsewell Sep 15, 2026
f407503
📚 Changelog: the move, what it costs, and what is NOT fixed
chrisjsewell Sep 15, 2026
d68d10d
🧪 Make two sphinx-test-reports loader tests portable to Windows
chrisjsewell Sep 15, 2026
fa5c3db
🔧 Import sphinx-test-reports into the workspace as packages/sphinx-te…
chrisjsewell Sep 15, 2026
687b38f
🔧 Bump astral-sh/setup-uv from 10.0.1 to 10.1.0 (#1933)
dependabot[bot] Sep 15, 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
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ body:
- sphinx-needs
- sphinx-mounts
- sphinx-codelinks
- sphinx-test-reports
- the repository (workflows, CI, release, docker, tooling)
validations:
required: true
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ body:
- sphinx-needs
- sphinx-mounts
- sphinx-codelinks
- sphinx-test-reports
- the repository (workflows, CI, release, docker, tooling)
validations:
required: true
Expand Down
5 changes: 5 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ updates:
# (`sphinx-needs>=8.5.0,<9`), and that specifier is a floor moved by hand at release
# time by `propagate_floors.py`, not by dependabot
- dependency-name: sphinx-codelinks
# the fourth member, same reason: `sphinx-test-reports` is a real PyPI project as
# well as a directory under `packages/`, and it names the published sphinx-needs by
# name in two extras (`sphinx-needs>=8.5.0,<9`) -- a floor `propagate_floors.py`
# moves at release time, not dependabot
- dependency-name: sphinx-test-reports
# the workspace root itself. Its name is not on PyPI at all, so there is nothing to
# bump to -- this pre-empts the same #14004 noise rather than fixing a live proposal
- dependency-name: sphinx-needs-workspace
Expand Down
12 changes: 7 additions & 5 deletions .github/issue-labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@
# patterns case-insensitive, like the workflow's `contains()` gate, so the two agree.
'pkg: sphinx-needs':
- '/### Package[^#]*\bsphinx-needs\b/i'
# `sphinx-mounts` contains neither `sphinx-needs` nor `sphinx-codelinks` as a
# \b-delimited word, and neither of those contains the others, so no two patterns can
# match one choice. Every pattern has to be present before its option is offered by a
# form, though: the workflow runs with `sync-labels: 1`, so a pattern that is missing when
# its option is picked means the label is synced away rather than merely not added
# No two of `sphinx-needs`, `sphinx-mounts`, `sphinx-codelinks` and `sphinx-test-reports`
# contains another as a \b-delimited word, so no two patterns can match one choice. Every
# pattern has to be present before its option is offered by a form, though: the workflow
# runs with `sync-labels: 1`, so a pattern that is missing when its option is picked means
# the label is synced away rather than merely not added
'pkg: sphinx-mounts':
- '/### Package[^#]*\bsphinx-mounts\b/i'
'pkg: sphinx-codelinks':
- '/### Package[^#]*\bsphinx-codelinks\b/i'
'pkg: sphinx-test-reports':
- '/### Package[^#]*\bsphinx-test-reports\b/i'
'pkg: workspace':
- '/### Package[^#]*\bthe repository\b/i'
3 changes: 3 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
'pkg: sphinx-codelinks':
- changed-files:
- any-glob-to-any-file: 'packages/sphinx-codelinks/**'
'pkg: sphinx-test-reports':
- changed-files:
- any-glob-to-any-file: 'packages/sphinx-test-reports/**'
'pkg: sphinx-needs-testkit':
- changed-files:
- any-glob-to-any-file: 'packages/sphinx-needs-testkit/**'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/benchmark.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: "ubuntu-latest"
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
# 3.12+: on 3.11 the lock resolves sphinx 8.2, and this job wants the newest sphinx
Expand Down
126 changes: 119 additions & 7 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
# the pinned interpreter (root `.python-version`) is not on the runner image, so
Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:
# ONE probe at a time, and one per package: with both planted at once a gate that had
# dropped one package would still go red on the other and look healthy.
run: |
probes="packages/sphinx-needs/src/sphinx_needs/_ty_gate_probe.py packages/sphinx-mounts/src/sphinx_mounts/_ty_gate_probe.py"
probes="packages/sphinx-needs/src/sphinx_needs/_ty_gate_probe.py packages/sphinx-mounts/src/sphinx_mounts/_ty_gate_probe.py packages/sphinx-codelinks/src/sphinx_codelinks/_ty_gate_probe.py packages/sphinx-test-reports/src/sphinxcontrib/test_reports/_ty_gate_probe.py"
# shellcheck disable=SC2064
trap "rm -f $probes" EXIT
for probe in $probes; do
Expand Down Expand Up @@ -254,7 +254,7 @@ jobs:
sphinx-group: "sphinx-9"
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
cache-suffix: ${{ matrix.python-version }}-${{ matrix.sphinx-group }}
Expand Down Expand Up @@ -285,7 +285,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
# 3.12+: on 3.11 the lock resolves sphinx 8.2, and this job wants the newest sphinx
Expand Down Expand Up @@ -383,7 +383,7 @@ jobs:
# history, so the default shallow checkout is enough -- but it does need `.git`,
# so this job must not be given `fetch-depth: 0`-free surprises like a
# `sparse-checkout` that omits it
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
cache-suffix: docs-codelinks
Expand All @@ -408,6 +408,116 @@ jobs:
run: uv run --no-sync sphinx-build -nW --keep-going -b html docs docs/_build/html -T
working-directory: packages/sphinx-codelinks

docs-reports:
name: Docs reports
runs-on: ubuntu-latest
permissions:
contents: read
# sphinx-test-reports' docs went from five warnings to zero in this pull request, and
# without this job nothing holds that: the Read the Docs build is not a required check,
# it is `-W` WITHOUT `-n`, and that project's settings do not point at this repository
# yet. `docs.yaml`'s linkcheck is scoped to sphinx-needs' own docs. sphinx-mounts has no
# docs job either, so this is a deliberate departure from that precedent rather than an
# oversight -- the difference is that these docs RENDER, which is a failure mode a build
# catches and a reviewer does not.
#
# No `paths:` filter and no `if:`: a change to `src/` with no change to `docs/` is
# precisely the change that breaks a docs build.
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
cache-suffix: docs-reports
# no `python-version`, so this runs on the root `.python-version`
cache-python: true
- name: Install graphviz
# 13 `needflow` directives across three pages need `dot`; PlantUML needs a JDK,
# which every Linux runner image already has
run: sudo apt-get install graphviz
- name: Point PLANTUML_JAR at the vendored jar
# the one jar `vendor/plantuml/pin.toml` names, verified against the pin first.
# The capture shape is the workspace's ONE shape and is fenced as such by
# `tools/tests/test_ci_plantuml_steps.py`, on every site including ubuntu-only ones:
# `shell: bash` for pipefail, `tr -d` for Windows' carriage return, and the export on
# the very next line. Uniform so that a step copied anywhere is already right --
# vendor/plantuml/README.md, "The step CI runs", says why each clause matters.
shell: bash
run: |
jar="$(uv run --no-project python tools/src/sn_tools/fetch_plantuml.py --verify | tr -d '\r')"
echo "PLANTUML_JAR=$jar" >> "$GITHUB_ENV"
- name: Install the docs environment
# `docs.yaml`'s idiom -- sync ONE environment, then run the builder in it with
# `--no-sync` -- rather than `uv run --frozen poe docs-reports`, which pays for two
# environments because poe itself lives in the `dev` group. Keep in step with the
# `docs-reports` poe task.
run: uv sync --frozen --no-default-groups --extra docs-reports
- name: Build the docs
# `-nW --keep-going`, from the poe task: a nitpick warning is an error here, which
# is stricter than the Read the Docs build and is the point of the job
run: uv run --no-sync sphinx-build -nW --keep-going -b html docs docs/_build/html -T
working-directory: packages/sphinx-test-reports

toolchain-free:
name: Toolchain-free (sphinx-test-reports)
runs-on: ubuntu-latest
permissions:
contents: read
# sphinx-test-reports' converter (`test-reports`) and its pytest plugin are meant to run
# where the documentation toolchain is NOT installed -- that is why Sphinx and
# sphinx-needs are an EXTRA of that package rather than dependencies. This job is the
# only thing that keeps it true: it installs the package with the dependencies it
# declares, asserts that sphinx, sphinx_needs and docutils are all absent, and runs the
# modules that do not need a build.
#
# It CANNOT be a matrix cell, and that is structural rather than a configuration gap:
# the root's `[project] dependencies` name every member, `[project] dependencies` are
# installed in every environment, and sphinx-needs declares sphinx at runtime -- so
# every environment a `uv sync` at this root can produce has Sphinx in it, whatever
# groups are asked for. The environment is therefore built OUTSIDE the project with
# `uv pip install --no-sources`, exactly as `release.yaml`'s compat cell builds its own.
#
# It replaces the `toolchain_free` session of the noxfile the import retired. That
# noxfile's other lane, `plugin_floor` (the plugin on the oldest pytest of each Python),
# is deliberately NOT here: it belongs with the release that makes the plugin a shipped
# surface of its own.
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
cache-suffix: toolchain-free
cache-python: true
- name: Build an environment with no documentation toolchain in it
run: |
uv venv /tmp/toolchain-free
uv pip install --python /tmp/toolchain-free --no-sources "packages/sphinx-test-reports[pytest]"
- name: Assert the toolchain really is absent
# the fence's fence. Without this the job would still pass with Sphinx installed,
# and would be testing nothing it claims to test.
run: |
/tmp/toolchain-free/bin/python -c "
import importlib.util, sys
present = [m for m in ('sphinx', 'sphinx_needs', 'docutils') if importlib.util.find_spec(m)]
sys.exit(f'toolchain installed: {present}' if present else 0)
"
- name: Run the modules that need no documentation build
# From the REPOSITORY ROOT, so pytest's rootdir is this repository and the root
# `[tool.pytest.ini_options]` applies -- which is where the `toolchain` marker is
# registered, so `-m "not toolchain"` deselects rather than warning.
run: |
/tmp/toolchain-free/bin/python -m pytest -q -m "not toolchain" \
packages/sphinx-test-reports/tests/test_cli_config.py \
packages/sphinx-test-reports/tests/test_cli_convert.py \
packages/sphinx-test-reports/tests/test_identity.py \
packages/sphinx-test-reports/tests/test_junit_parser.py \
packages/sphinx-test-reports/tests/test_junit_parser_gtest.py \
packages/sphinx-test-reports/tests/test_needs_export.py \
packages/sphinx-test-reports/tests/test_project_config.py \
packages/sphinx-test-reports/tests/test_pytest_plugin.py \
packages/sphinx-test-reports/tests/test_result_vocabulary.py \
packages/sphinx-test-reports/tests/test_toolchain.py

bazel:
name: Mounts Bazel integration
runs-on: ubuntu-latest
Expand All @@ -419,7 +529,7 @@ jobs:
- uses: actions/checkout@v7
- name: Install graphviz
run: sudo apt-get install graphviz
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
cache-suffix: bazel
Expand Down Expand Up @@ -460,7 +570,7 @@ jobs:
- uses: actions/checkout@v7
- name: Install graphviz
run: sudo apt-get install graphviz
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
# the declared `requires-python` floor: the throwaway environment the wheel is
Expand All @@ -485,6 +595,8 @@ jobs:
- tests-no-mpl
- tests-extensions
- docs-codelinks
- docs-reports
- toolchain-free
- bazel
- smoke-needs

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v7

- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
# 3.12+: on 3.11 the lock resolves sphinx 8.2, and this job wants the newest sphinx
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
# 3.12+: on 3.11 the lock resolves sphinx 8.2, and this job wants the newest sphinx
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/prek-update.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:

- uses: actions/checkout@v7

- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
# no `python-version` input, so uv reads the root `.python-version`; cache that
Expand Down
31 changes: 23 additions & 8 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
# for the default depth-1 -- 14 seconds on a workflow whose compat cell takes
# minutes, and the alternative is a check that cannot run
fetch-depth: 0
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
# `--no-project`: this fence reads the manifests, so it must not need an environment
# built from them. It is also the only thing between a mistyped tag and an
# unprotected environment, so it runs before anything else is built.
Expand All @@ -73,7 +73,7 @@ jobs:
# skip without `dot`. This mirrors the core test cells in ci.yaml; java, which the
# vendored plantuml jar needs, is already on the ubuntu runner image
run: sudo apt-get install graphviz
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
# no `enable-cache`: setup-uv's own default is `auto`, which caches on
# GitHub-hosted runners EXCEPT for release, tag push and a few other events --
Expand Down Expand Up @@ -155,11 +155,26 @@ jobs:
# FileNotFoundError on a runner or -- worse, locally -- silently use whatever
# `sphinx-build` an activated virtualenv happens to have left on PATH
export PATH="/tmp/compat/bin:$PATH"
# both of these assume the distribution name IS the directory name and, with
# `-`->`_`, the module name. `check_workspace.py` deliberately honours
# `[tool.flit.module] name`, so a second member that sets it needs this step
# taught the same thing
module=${DIST//-/_}
# The distribution name IS the directory name, but it is NOT always the module
# name with `-`->`_`: sphinx-test-reports installs into the `sphinxcontrib`
# PEP 420 namespace and declares `[tool.flit.module] name =
# "sphinxcontrib.test_reports"`, for which the derivation below yields
# `sphinx_test_reports` -- a module that does not exist, so the walk would fail
# with `ModuleNotFoundError` on every release of it. `check_workspace.Member.module`
# has honoured that key from the start and this step now does too, falling back to
# the derivation for every member that declares no such table (all three others).
# The comment this replaces predicted exactly this member.
module=$(/tmp/compat/bin/python - "$DIST" <<'PYEOF'
import pathlib, sys, tomllib

dist = sys.argv[1]
manifest = pathlib.Path("packages", dist, "pyproject.toml")
data = tomllib.loads(manifest.read_text(encoding="utf-8"))
declared = data.get("tool", {}).get("flit", {}).get("module", {}).get("name")
print(declared or dist.replace("-", "_"))
PYEOF
)
echo "walking module: $module"
# Import every module of the wheel BEFORE the suite. A name that is missing from
# a dependency AS PUBLISHED is then reported in seconds, by name, instead of
# somewhere inside a six-minute pytest run -- and `--expect-prefix` subsumes the
Expand Down Expand Up @@ -207,7 +222,7 @@ jobs:
with:
name: dist
path: dist/
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
# `always`, not `automatic`: `automatic` falls back to unauthenticated, and even a
# dry run then exits 0 -- so a missing OIDC token would look like success.
# `--no-attestations` only suppresses uploading attestation FILES that already sit
Expand Down
24 changes: 23 additions & 1 deletion .github/workflows/test-extensions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
contents: read
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
cache-suffix: ${{ inputs.cache-suffix }}
Expand Down Expand Up @@ -143,3 +143,25 @@ jobs:
flags: codelinks
files: ./codelinks.xml
fail_ci_if_error: true
- name: "sphinx-test-reports: pytest"
# `!cancelled()` plus the prologue check, for the reason the step above gives: a
# failure in either suite before it must not hide this one, but a failed
# `prepare-cell` must, or `uv run --no-sync` silently creates an empty environment
# and the step dies on an import error four steps from the cause.
#
# `--cov=sphinxcontrib.test_reports` is the IMPORT name, which is not the
# distribution name with `-`->`_` for this member -- it installs into the
# `sphinxcontrib` PEP 420 namespace. This cell needs no new tool: nothing in this
# suite renders a diagram, so neither the graphviz nor the PlantUML the cell
# already installs for sphinx-mounts is for it.
if: ${{ !cancelled() && steps.prepare.outcome == 'success' }}
run: uv run --no-sync pytest -v packages/sphinx-test-reports/tests --durations=25 --cov=sphinxcontrib.test_reports --cov-report=xml:reports.xml --cov-report=term-missing
- name: "sphinx-test-reports: upload to Codecov"
if: inputs.upload-coverage && github.event.pull_request.head.repo.full_name == github.repository && github.repository == 'useblocks/sphinx-needs' && github.actor != 'dependabot[bot]'
uses: codecov/codecov-action@v7
with:
token: ${{ secrets.CODECOV_TOKEN }}
name: sphinx-test-reports-pytests
flags: reports
files: ./reports.xml
fail_ci_if_error: true
2 changes: 1 addition & 1 deletion .github/workflows/test-package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ jobs:
contents: read
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v10.0.1
- uses: astral-sh/setup-uv@v10.1.0
with:
enable-cache: true
cache-suffix: ${{ inputs.cache-suffix }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ coverage.xml
# coverage report (`--cov-report=xml:<name>.xml`) instead of sharing `coverage.xml`
mounts.xml
codelinks.xml
reports.xml
.ty_cache

# packages/sphinx-codelinks' tests write these at the CWD: `tests/test_cmd.py` writes
Expand Down
Loading
Loading