-
Notifications
You must be signed in to change notification settings - Fork 762
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (62 loc) · 3.24 KB
/
Makefile
File metadata and controls
79 lines (62 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
.PHONY: all pre-commit ty unit-test unit-test-junit unit-test-cov-html unit-test-cov-xml diff-cover unit-test-diff-cover
CMD:=uv run -m
PYMODULE:=pyrit
TESTS:=tests
UNIT_TESTS:=tests/unit
INTEGRATION_TESTS:=tests/integration
PARTNER_INTEGRATION_TESTS:=tests/partner_integration
END_TO_END_TESTS:=tests/end_to_end
all: pre-commit
pre-commit:
$(CMD) isort --multi-line 3 --recursive $(PYMODULE) $(TESTS)
pre-commit run --all-files
ty:
$(CMD) ty check $(PYMODULE) $(UNIT_TESTS)
# Build the full documentation site:
# 1. Generate API reference JSON from Python source (griffe)
# 2. Convert API JSON to MyST markdown pages
# 3. Build the Jupyter Book site (HTML only — fast, no LaTeX needed)
# 4. Generate RSS feed
docs-build:
uv run python build_scripts/pydoc2json.py pyrit --submodules -o doc/_api/pyrit_all.json
uv run python build_scripts/gen_api_md.py
# --strict validates URLs and cross-refs; skips are configured in doc/myst.yml under error_rules
cd doc && uv run jupyter-book build --all --html --strict
uv run ./build_scripts/generate_rss.py
# Build the full documentation site including the PDF export.
# Mirrors the ReadTheDocs build (.readthedocs.yaml) so CI catches PDF-only issues
# such as missing images that the HTML-only build silently ignores.
# Requires xelatex / latexmk on PATH (texlive-xetex + texlive-fonts-recommended +
# texlive-plain-generic + latexmk on Ubuntu).
docs-build-all:
uv run python build_scripts/pydoc2json.py pyrit --submodules -o doc/_api/pyrit_all.json
uv run python build_scripts/gen_api_md.py
# --strict validates URLs and cross-refs; skips are configured in doc/myst.yml under error_rules
cd doc && uv run jupyter-book build --all --html --pdf --strict
uv run ./build_scripts/generate_rss.py
# Regenerate only the API reference pages (without building the full site)
docs-api:
uv run python build_scripts/pydoc2json.py pyrit --submodules -o doc/_api/pyrit_all.json
uv run python build_scripts/gen_api_md.py
# Because of import time, "auto" seemed to actually go slower than just using 4 processes
unit-test:
$(CMD) pytest -n 4 --dist=loadfile $(UNIT_TESTS)
unit-test-junit:
$(CMD) pytest -n 4 --dist=loadfile $(UNIT_TESTS) --junitxml=junit/test-results.xml
unit-test-cov-html:
$(CMD) pytest -n 4 --dist=loadfile --cov=$(PYMODULE) --cov-fail-under=78 $(UNIT_TESTS) --cov-report html
unit-test-cov-xml:
$(CMD) pytest -n 4 --dist=loadfile --cov=$(PYMODULE) --cov-fail-under=78 $(UNIT_TESTS) --cov-report xml --cov-report term
diff-cover:
$(CMD) pytest -n 4 --dist=loadfile --cov=$(PYMODULE) --cov-fail-under=78 $(UNIT_TESTS) --cov-report xml
uv run python -m diff_cover.diff_cover_tool coverage.xml --compare-branch=origin/main --diff-range-notation=.. --fail-under=90
unit-test-diff-cover:
uv run python -m diff_cover.diff_cover_tool coverage.xml --compare-branch=origin/main --diff-range-notation=.. --fail-under=90
integration-test:
$(CMD) pytest $(INTEGRATION_TESTS) --cov=$(PYMODULE) $(INTEGRATION_TESTS) --cov-report xml --junitxml=junit/test-results.xml --doctest-modules
end-to-end-test:
$(CMD) pytest $(END_TO_END_TESTS) -v --junitxml=junit/test-results.xml
partner-integration-test:
$(CMD) pytest $(PARTNER_INTEGRATION_TESTS) -v --junitxml=junit/partner-test-results.xml
#clean:
# git clean -Xdf # Delete all files in .gitignore