Skip to content

Commit bd2d2e3

Browse files
committed
Add Unit Testing
1 parent 42406c7 commit bd2d2e3

File tree

10 files changed

+699
-0
lines changed

10 files changed

+699
-0
lines changed

.github/workflows/ci.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,27 @@ on:
88

99
jobs:
1010
build:
11+
if: endsWith(github.head_ref || github.ref_name, '.changes') == false
1112
runs-on: ubuntu-latest
1213
strategy:
1314
matrix:
1415
python: ['3.7', '3.8', '3.9', '3.10', '3.11']
1516
fail-fast: false
1617

18+
permissions:
19+
contents: write
20+
1721
steps:
1822
- uses: actions/checkout@v3
1923

2024
- uses: actions/setup-python@v4
2125
with:
2226
python-version: ${{ matrix.python }}
2327

28+
- name: Install tools
29+
run: |
30+
sudo apt -y install libxml2-utils
31+
2432
- name: Install dependencies
2533
run: |
2634
python -m pip install --upgrade pip
@@ -42,3 +50,28 @@ jobs:
4250
- name: Build Test with toc show_parents=all
4351
run: |
4452
cd test/must-build && make html SPHINXOPTS='-W -D toc_object_entries_show_parents=all'
53+
54+
- name: Run Unit Testing
55+
run: |
56+
cd test/unit
57+
find . -name '*.html' -exec rm {} \;
58+
make html SPHINXOPTS='-W'
59+
(cd _build/html && find . -name '*.html' -exec sh -c 'xmllint {} --xpath '"'"'//div[@role="main"]'"'"' | xmllint --format - > ../../{}' \;)
60+
rm genindex.html index.html search.html php-modindex.html
61+
62+
- name: Diff Unit Outputs
63+
run: |
64+
cd test/unit
65+
rm -r _build
66+
git add . -N && git diff --exit-code
67+
68+
- name: Push Unit Changes
69+
uses: stefanzweifel/git-auto-commit-action@v4
70+
with:
71+
branch: ${{ github.head_ref || github.ref_name }}.changes
72+
create_branch: true
73+
push_options: '--force'
74+
commit_message: Unit Changes
75+
commit_user_name: Bot
76+
commit_user_email: bot@example.com
77+
commit_author: Bot <bot@example.com>

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ dist/
22
build/
33
doc/_build
44
test/must-build/_build
5+
test/unit/_build
56
*.pyc
67
*.egg-info
78
.DS_Store

test/unit/Makefile

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# Makefile for Sphinx documentation
2+
#
3+
4+
# You can set these variables from the command line.
5+
SPHINXOPTS =
6+
SPHINXBUILD = sphinx-build
7+
PAPER =
8+
BUILDDIR = _build
9+
10+
# Internal variables.
11+
PAPEROPT_a4 = -D latex_paper_size=a4
12+
PAPEROPT_letter = -D latex_paper_size=letter
13+
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
14+
15+
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
16+
17+
help:
18+
@echo "Please use \`make <target>' where <target> is one of"
19+
@echo " html to make standalone HTML files"
20+
@echo " dirhtml to make HTML files named index.html in directories"
21+
@echo " singlehtml to make a single large HTML file"
22+
@echo " pickle to make pickle files"
23+
@echo " json to make JSON files"
24+
@echo " htmlhelp to make HTML files and a HTML help project"
25+
@echo " qthelp to make HTML files and a qthelp project"
26+
@echo " devhelp to make HTML files and a Devhelp project"
27+
@echo " epub to make an epub"
28+
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
29+
@echo " latexpdf to make LaTeX files and run them through pdflatex"
30+
@echo " text to make text files"
31+
@echo " man to make manual pages"
32+
@echo " changes to make an overview of all changed/added/deprecated items"
33+
@echo " linkcheck to check all external links for integrity"
34+
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
35+
36+
clean:
37+
-rm -rf $(BUILDDIR)/*
38+
39+
html:
40+
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
41+
@echo
42+
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
43+
44+
dirhtml:
45+
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
46+
@echo
47+
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
48+
49+
singlehtml:
50+
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
51+
@echo
52+
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
53+
54+
pickle:
55+
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
56+
@echo
57+
@echo "Build finished; now you can process the pickle files."
58+
59+
json:
60+
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
61+
@echo
62+
@echo "Build finished; now you can process the JSON files."
63+
64+
htmlhelp:
65+
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
66+
@echo
67+
@echo "Build finished; now you can run HTML Help Workshop with the" \
68+
".hhp project file in $(BUILDDIR)/htmlhelp."
69+
70+
qthelp:
71+
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
72+
@echo
73+
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
74+
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
75+
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/sphinxcontrib-rubydomain-acceptancetest.qhcp"
76+
@echo "To view the help file:"
77+
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/sphinxcontrib-rubydomain-acceptancetest.qhc"
78+
79+
devhelp:
80+
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
81+
@echo
82+
@echo "Build finished."
83+
@echo "To view the help file:"
84+
@echo "# mkdir -p $$HOME/.local/share/devhelp/sphinxcontrib-rubydomain-acceptancetest"
85+
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/sphinxcontrib-rubydomain-acceptancetest"
86+
@echo "# devhelp"
87+
88+
epub:
89+
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
90+
@echo
91+
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
92+
93+
latex:
94+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
95+
@echo
96+
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
97+
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
98+
"run these through (pdf)latex."
99+
100+
latexpdf: latex
101+
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
102+
@echo "Running LaTeX files through pdflatex..."
103+
make -C $(BUILDDIR)/latex all-pdf
104+
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
105+
106+
text:
107+
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
108+
@echo
109+
@echo "Build finished. The text files are in $(BUILDDIR)/text."
110+
111+
man:
112+
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
113+
@echo
114+
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
115+
116+
changes:
117+
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
118+
@echo
119+
@echo "The overview file is in $(BUILDDIR)/changes."
120+
121+
linkcheck:
122+
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
123+
@echo
124+
@echo "Link check complete; look for any errors in the above output " \
125+
"or in $(BUILDDIR)/linkcheck/output.txt."
126+
127+
doctest:
128+
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
129+
@echo "Testing of doctests in the sources finished, look at the " \
130+
"results in $(BUILDDIR)/doctest/output.txt."

test/unit/conf.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import sys, os
2+
3+
sys.path.append(os.path.abspath('..'))
4+
5+
extensions = [
6+
'sphinxcontrib.phpdomain',
7+
]
8+
9+
source_suffix = '.rst'
10+
11+
master_doc = 'index'
12+
13+
exclude_patterns = ['_build']
14+
15+
pygments_style = 'sphinx'
16+
17+
html_theme = 'default'

test/unit/index.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Test: Build all files
2+
=====================
3+
4+
.. toctree::
5+
:glob:
6+
7+
**

test/unit/make.bat

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
@ECHO OFF
2+
3+
REM Command file for Sphinx documentation
4+
5+
if "%SPHINXBUILD%" == "" (
6+
set SPHINXBUILD=sphinx-build
7+
)
8+
set BUILDDIR=_build
9+
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
10+
if NOT "%PAPER%" == "" (
11+
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
12+
)
13+
14+
if "%1" == "" goto help
15+
16+
if "%1" == "help" (
17+
:help
18+
echo.Please use `make ^<target^>` where ^<target^> is one of
19+
echo. html to make standalone HTML files
20+
echo. dirhtml to make HTML files named index.html in directories
21+
echo. singlehtml to make a single large HTML file
22+
echo. pickle to make pickle files
23+
echo. json to make JSON files
24+
echo. htmlhelp to make HTML files and a HTML help project
25+
echo. qthelp to make HTML files and a qthelp project
26+
echo. devhelp to make HTML files and a Devhelp project
27+
echo. epub to make an epub
28+
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
29+
echo. text to make text files
30+
echo. man to make manual pages
31+
echo. changes to make an overview over all changed/added/deprecated items
32+
echo. linkcheck to check all external links for integrity
33+
echo. doctest to run all doctests embedded in the documentation if enabled
34+
goto end
35+
)
36+
37+
if "%1" == "clean" (
38+
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
39+
del /q /s %BUILDDIR%\*
40+
goto end
41+
)
42+
43+
if "%1" == "html" (
44+
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
45+
echo.
46+
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
47+
goto end
48+
)
49+
50+
if "%1" == "dirhtml" (
51+
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
52+
echo.
53+
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
54+
goto end
55+
)
56+
57+
if "%1" == "singlehtml" (
58+
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
59+
echo.
60+
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
61+
goto end
62+
)
63+
64+
if "%1" == "pickle" (
65+
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
66+
echo.
67+
echo.Build finished; now you can process the pickle files.
68+
goto end
69+
)
70+
71+
if "%1" == "json" (
72+
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
73+
echo.
74+
echo.Build finished; now you can process the JSON files.
75+
goto end
76+
)
77+
78+
if "%1" == "htmlhelp" (
79+
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
80+
echo.
81+
echo.Build finished; now you can run HTML Help Workshop with the ^
82+
.hhp project file in %BUILDDIR%/htmlhelp.
83+
goto end
84+
)
85+
86+
if "%1" == "qthelp" (
87+
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
88+
echo.
89+
echo.Build finished; now you can run "qcollectiongenerator" with the ^
90+
.qhcp project file in %BUILDDIR%/qthelp, like this:
91+
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\sphinxcontrib-rubydomain-acceptancetest.qhcp
92+
echo.To view the help file:
93+
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\sphinxcontrib-rubydomain-acceptancetest.ghc
94+
goto end
95+
)
96+
97+
if "%1" == "devhelp" (
98+
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
99+
echo.
100+
echo.Build finished.
101+
goto end
102+
)
103+
104+
if "%1" == "epub" (
105+
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
106+
echo.
107+
echo.Build finished. The epub file is in %BUILDDIR%/epub.
108+
goto end
109+
)
110+
111+
if "%1" == "latex" (
112+
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
113+
echo.
114+
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
115+
goto end
116+
)
117+
118+
if "%1" == "text" (
119+
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
120+
echo.
121+
echo.Build finished. The text files are in %BUILDDIR%/text.
122+
goto end
123+
)
124+
125+
if "%1" == "man" (
126+
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
127+
echo.
128+
echo.Build finished. The manual pages are in %BUILDDIR%/man.
129+
goto end
130+
)
131+
132+
if "%1" == "changes" (
133+
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
134+
echo.
135+
echo.The overview file is in %BUILDDIR%/changes.
136+
goto end
137+
)
138+
139+
if "%1" == "linkcheck" (
140+
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
141+
echo.
142+
echo.Link check complete; look for any errors in the above output ^
143+
or in %BUILDDIR%/linkcheck/output.txt.
144+
goto end
145+
)
146+
147+
if "%1" == "doctest" (
148+
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
149+
echo.
150+
echo.Testing of doctests in the sources finished, look at the ^
151+
results in %BUILDDIR%/doctest/output.txt.
152+
goto end
153+
)
154+
155+
:end

0 commit comments

Comments
 (0)