docs: Makefile: Add a testdocs target for the documentation unit tests
Subsystems (2)
PATCH 1/1 docs: Makefile: Add a testdocs target for the documentation unit tests
tools/unittests/run.py discovers and runs the unit tests there (which are primarily documentation tools), but nothing in the build calls it, so the tests are only run by whoever remembers that the script is there.
Give it a target, next to the other checks that need no Sphinx. The name ends in "docs", so it matches the "%docs" pattern already in no-dot-config-targets and runs without a configured tree, and it sets PYTHONPYCACHEPREFIX as the other Python targets here do, to keep __pycache__ directories out of the source tree.
$ make testdocs ... Ran 121 tests
with "make dochelp" listing it between refcheckdocs and cleandocs.
Tested with GNU Make 4.4.1 and Python 3.14.7, on a tree with no .config, where it ran 121 tests and left no __pycache__ behind.
---
I debated the naming here, since "tools/unittests/" is such a general directory location, but figured I'd start with a target that made the most logical sense given what is actually being tested there? I dunno. Maybe "make testtools"? But that reads weird.
--- Makefile | 2 +- Documentation/Makefile | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-)
Makefile +1 -1
@@ -2002,7 +2002,7 @@ $(help-board-dirs): help-%: # --------------------------------------------------------------------------- DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \ linkcheckdocs dochelp refcheckdocs texinfodocs infodocs mandocs \ - htmldocs-redirects + htmldocs-redirects testdocs PHONY += $(DOC_TARGETS) $(DOC_TARGETS):
Documentation/Makefile +5 -0
@@ -74,6 +74,10 @@ htmldocs-redirects: $(srctree)/Documentation/.renames.txt refcheckdocs: $(Q)cd $(srctree); tools/docs/documentation-file-ref-check +testdocs: + $(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \ + $(PYTHON3) $(srctree)/tools/unittests/run.py + cleandocs: $(Q)rm -rf $(BUILDDIR)
@@ -95,6 +99,7 @@ dochelp: @echo ' (will connect to external hosts)' @echo ' refcheckdocs - check for references to non-existing files under' @echo ' Documentation' + @echo ' testdocs - run the unit tests of the documentation tools' @echo ' cleandocs - clean all generated files' @echo @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2'
Signature · 1 line
2.34.1
Quoted 3 lines · Kees Cook
tools/unittests/run.pydiscovers and runs the unit tests there (which are primarily documentation tools), but nothing in the build calls it, so the tests are only run by whoever remembers that the script is there.
Now if we can just remember that this target is present/available ;)
Quoted 15 lines
Give it a target, next to the other checks that need no Sphinx. The name ends in "docs", so it matches the "%docs" pattern already in no-dot-config-targets and runs without a configured tree, and it sets PYTHONPYCACHEPREFIX as the other Python targets here do, to keep
__pycache__directories out of the source tree.$ make testdocs ... Ran 121 testswith "make dochelp" listing it between refcheckdocs and cleandocs.
Tested with GNU Make 4.4.1 and Python 3.14.7, on a tree with no .config, where it ran 121 tests and left no
__pycache__behind.
Quoted 7 lines
Assisted-by LLMSigned-off-by Kees Cook <[email protected]>---
I debated the naming here, since "tools/unittests/" is such a general directory location, but figured I'd start with a target that made the most logical sense given what is actually being tested there? I dunno. Maybe "make testtools"? But that reads weird.
I'm happy with "make testdocs".
Ran 122 tests in 0.241s
Quoted 34 lines
--- Makefile | 2 +- Documentation/Makefile | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-)Makefile +1
-1@@ -2002,7 +2002,7 @@ $(help-board-dirs): help-%: # --------------------------------------------------------------------------- DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \ linkcheckdocs dochelp refcheckdocs texinfodocs infodocs mandocs \ - htmldocs-redirects + htmldocs-redirects testdocs PHONY += $(DOC_TARGETS) $(DOC_TARGETS):Documentation/Makefile +4
-0@@ -74,6 +74,10 @@ htmldocs-redirects: $(srctree)/Documentation/.renames.txt refcheckdocs: $(Q)cd $(srctree); tools/docs/documentation-file-ref-check +testdocs: + $(Q)PYTHONPYCACHEPREFIX="$(PYTHONPYCACHEPREFIX)" \ + $(PYTHON3) $(srctree)/tools/unittests/run.py + cleandocs: $(Q)rm -rf $(BUILDDIR)
Documentation/Makefile dochelp: · line 105
Quoted 7 lines
Documentation/Makefile +1
-0@@ -95,6 +99,7 @@ dochelp: @echo ' (will connect to external hosts)' @echo ' refcheckdocs - check for references to non-existing files under' @echo ' Documentation' + @echo ' testdocs - run the unit tests of the documentation tools' @echo ' cleandocs - clean all generated files' @echo @echo ' make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2'
thanks.
Signature · 1 line
~Randy
Quoted 26 lines · Kees Cook
tools/unittests/run.pydiscovers and runs the unit tests there (which are primarily documentation tools), but nothing in the build calls it, so the tests are only run by whoever remembers that the script is there.Give it a target, next to the other checks that need no Sphinx. The name ends in "docs", so it matches the "%docs" pattern already in no-dot-config-targets and runs without a configured tree, and it sets PYTHONPYCACHEPREFIX as the other Python targets here do, to keep
__pycache__directories out of the source tree.$ make testdocs ... Ran 121 testswith "make dochelp" listing it between refcheckdocs and cleandocs.
Tested with GNU Make 4.4.1 and Python 3.14.7, on a tree with no .config, where it ran 121 tests and left no
__pycache__behind.Assisted-by LLMSigned-off-by Kees Cook <[email protected]>---
I debated the naming here, since "tools/unittests/" is such a general directory location, but figured I'd start with a target that made the most logical sense given what is actually being tested there? I dunno. Maybe "make testtools"? But that reads weird.
Quoted 5 lines
--- Makefile | 2 +- Documentation/Makefile | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-)
I agree with Randy, 'testdocs' sounds good to me, too.
Signature · 1 line
Nicolas
Quoted 10 lines · Kees Cook
tools/unittests/run.pydiscovers and runs the unit tests there (which are primarily documentation tools), but nothing in the build calls it, so the tests are only run by whoever remembers that the script is there.Give it a target, next to the other checks that need no Sphinx. The name ends in "docs", so it matches the "%docs" pattern already in no-dot-config-targets and runs without a configured tree, and it sets PYTHONPYCACHEPREFIX as the other Python targets here do, to keep
__pycache__directories out of the source tree.
Quoted 3 lines
$ make testdocs ... Ran 121 tests
Very nice! Thanks!
Quoted 7 lines
with "make dochelp" listing it between refcheckdocs and cleandocs.
Tested with GNU Make 4.4.1 and Python 3.14.7, on a tree with no .config, where it ran 121 tests and left no
__pycache__behind.Assisted-by LLMSigned-off-by Kees Cook <[email protected]>
Quoted 26 lines · Kees Cook
tools/unittests/run.pydiscovers and runs the unit tests there (which are primarily documentation tools), but nothing in the build calls it, so the tests are only run by whoever remembers that the script is there.Give it a target, next to the other checks that need no Sphinx. The name ends in "docs", so it matches the "%docs" pattern already in no-dot-config-targets and runs without a configured tree, and it sets PYTHONPYCACHEPREFIX as the other Python targets here do, to keep
__pycache__directories out of the source tree.$ make testdocs ... Ran 121 testswith "make dochelp" listing it between refcheckdocs and cleandocs.
Tested with GNU Make 4.4.1 and Python 3.14.7, on a tree with no .config, where it ran 121 tests and left no
__pycache__behind.Assisted-by LLMSigned-off-by Kees Cook <[email protected]>---
I debated the naming here, since "tools/unittests/" is such a general directory location, but figured I'd start with a target that made the most logical sense given what is actually being tested there? I dunno. Maybe "make testtools"? But that reads weird.
Quoted 4 lines
--- Makefile | 2 +- Documentation/Makefile | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-)
Applied, thanks.
jon