From 430bfdfd84f1af4a11d21f9f834db37f92aae04c Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Tue, 5 Mar 2024 08:19:46 -0500 Subject: [PATCH 1/5] test: test docs --- .github/workflows/test_pr.yml | 1 + acquire-docs | 1 + tests/test_docs.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 160000 acquire-docs create mode 100644 tests/test_docs.py diff --git a/.github/workflows/test_pr.yml b/.github/workflows/test_pr.yml index b13d348..9b428b4 100644 --- a/.github/workflows/test_pr.yml +++ b/.github/workflows/test_pr.yml @@ -59,6 +59,7 @@ jobs: run: | python -m pytest -k test_basic python -m pytest -k test_zarr + python -m pytest -k test_docs dcam: name: Python ${{ matrix.python }} (DCAM) diff --git a/acquire-docs b/acquire-docs new file mode 160000 index 0000000..d260e58 --- /dev/null +++ b/acquire-docs @@ -0,0 +1 @@ +Subproject commit d260e58cdd7707fecdf33a36f0ee0181bd67c133 diff --git a/tests/test_docs.py b/tests/test_docs.py new file mode 100644 index 0000000..b6529dc --- /dev/null +++ b/tests/test_docs.py @@ -0,0 +1,34 @@ +from pathlib import Path +import subprocess +import re +import logging + +logging.getLogger("acquire").setLevel(logging.CRITICAL) + +DOCS_REPO = "https://github.com/acquire-project/acquire-docs" +CODE_BLOCK = re.compile(r"```python\n(.*?)```", re.DOTALL) +SKIP = { + "setup.md", # has invalid syntax + "trigger.md", # has some non-existant paths +} + + +def pytest_generate_tests(metafunc): + """This pytest hook will clone the docs and parametrize tests. + + "tutorial" is a fixture name that will be parametrized with tutorials + """ + if not (docs_path := Path("acquire-docs", "docs")).exists(): + subprocess.check_call(["git", "clone", DOCS_REPO]) + + if "tutorial" in metafunc.fixturenames: + tuts = [docs_path / "get_started.md"] + tuts.extend( + [fn for fn in docs_path.glob("tutorials/*.md") if fn.name not in SKIP] + ) + metafunc.parametrize("tutorial", tuts, ids=lambda p: p.name) + + +def test_tutorials(tutorial: Path): + for code_block in CODE_BLOCK.finditer(tutorial.read_text()): + exec(code_block.group(1)) From 33cc498d7530749630e015171c1f2148dc08d633 Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Tue, 5 Mar 2024 08:31:50 -0500 Subject: [PATCH 2/5] simplify --- .coverage.M3-Macbook.37567.XbVcFOqx | Bin 0 -> 53248 bytes tests/test_docs.py | 20 +++++++------------- 2 files changed, 7 insertions(+), 13 deletions(-) create mode 100644 .coverage.M3-Macbook.37567.XbVcFOqx diff --git a/.coverage.M3-Macbook.37567.XbVcFOqx b/.coverage.M3-Macbook.37567.XbVcFOqx new file mode 100644 index 0000000000000000000000000000000000000000..e18d29f2d73b8dafd8652b0911f5426e36b0cb8a GIT binary patch literal 53248 zcmeI)O>Y}T7zglOyY(X zAoOG`9vF8F(=3;M&rAU$BjQN=Jp+^Tuai9qb<- zh{OF)A03G7nAocc+BzMvFT&tVOjIaF?pO)eAG(f=UH?eL$4aM8A~ocNj*ih%#|gV> ze%|Z5L&_DaBPwDNx}FR##1HDCohHby7OV3(J3xgf_sHiIVlU6$5}_KYQ2CCEvRdr9 z!&a^J{HK~_Z*H2GDs7Vt9r{^cXbl}Gn(}Z&1vx=DK<`*k&}n5#D@jsH~^lpr={R{91E5MdllF=E?KS zBdVMqXx1VlUz#$fb@mf)K;+*i-h?}ca%2~dgJn6F<&A^9v9H`WH}qxE-i7YeUj~gB(i$TJpXgn6dC>=7KTV$O>(L6t9 z?rRJg@<0_zn-1h}+-@G^$T|N=8Yj zCz6*v&lrdAq`oYgR>PtaKfRa#BvZMaT>q;HVsc+dy4vI1r+bKJ*8@;$!U0h8AOpw z%PKEh(TDn|XdcUmXQ8Mm20<`Z($Cfg%JDFwYr2t0>u`Nl`nV_~y5KU7PMc|+^y0$P z{2>iGJ-%qi^Q1q_*DGFzvr=j9=fTO>$tDrXD4H}VBO0Pt%G8DCXL-ib<##7!!lin0 zm<@OCl(`bmj@7l|veoEw8LQa!l;9+3WzxVplaX*jMJH)3Z8gg;3j^-0evhB|Tk;xz zl$-9FmVNJ@IZg7xn9Vc&h!%BE>T2h2OAA4AfCPdoE*!gg~U{5HD+Pi|Qc z4l)IuD*vogYw;I+v+=J%KiD7u0SG_<0uX=z1Rwwb2tWV=5Li8dvRN`M{{CNT{AD!$ zrYCF=fB*y_009U<00Izz00bZa0SLUA0`*e)ZbScx$GZ))ykqBo1n_?Mz3zh=wW`#3 zVKiPe{&_PSh+0Dc0uX=z1Rwwb2tWV=5P$##AfN^6<-4Z-EkLPO-l^ul1W5mZ{~etQ zuMmI$1Rwwb2tWV=5P$##AOHaftfBzl|EK@-4;us^009U<00Izz00bZa0SG_<0xK+l z`~NH4xo8>$AOHafKmY;|fB*y_009Ue}n=AAOHafKmY;|fB*y_009U Date: Tue, 5 Mar 2024 08:32:19 -0500 Subject: [PATCH 3/5] simplify --- tests/test_docs.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_docs.py b/tests/test_docs.py index c2122c2..1df43c5 100644 --- a/tests/test_docs.py +++ b/tests/test_docs.py @@ -13,6 +13,7 @@ "trigger.md", # has some non-existant paths } +# NOTE: this clones the repo on import... not the best practice, could be improved if not (DOCS_PATH := Path("acquire-docs", "docs")).exists(): subprocess.check_call(["git", "clone", DOCS_REPO]) From da46d13f866e0a2a10497e9fb5b0c9d82804bbb7 Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Thu, 7 Mar 2024 10:07:12 -0500 Subject: [PATCH 4/5] skip locally --- tests/test_docs.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_docs.py b/tests/test_docs.py index 1df43c5..88ab605 100644 --- a/tests/test_docs.py +++ b/tests/test_docs.py @@ -3,6 +3,11 @@ import re import logging import pytest +import os + +if not os.getenv("CI") or os.getenv("SKIP_DOCS_TEST", False): + pytest.skip("Skipping docs test", allow_module_level=True) + logging.getLogger("acquire").setLevel(logging.CRITICAL) From 07326a23e65124787e615fdab564b0e40d698e0a Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Tue, 28 May 2024 10:19:47 -0400 Subject: [PATCH 5/5] update --- .coverage.M3-Macbook.37567.XbVcFOqx | Bin 53248 -> 0 bytes acquire-docs | 1 - tests/test_docs.py | 30 ++++++++++++++++++---------- 3 files changed, 19 insertions(+), 12 deletions(-) delete mode 100644 .coverage.M3-Macbook.37567.XbVcFOqx delete mode 160000 acquire-docs diff --git a/.coverage.M3-Macbook.37567.XbVcFOqx b/.coverage.M3-Macbook.37567.XbVcFOqx deleted file mode 100644 index e18d29f2d73b8dafd8652b0911f5426e36b0cb8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 zcmeI)O>Y}T7zglOyY(X zAoOG`9vF8F(=3;M&rAU$BjQN=Jp+^Tuai9qb<- zh{OF)A03G7nAocc+BzMvFT&tVOjIaF?pO)eAG(f=UH?eL$4aM8A~ocNj*ih%#|gV> ze%|Z5L&_DaBPwDNx}FR##1HDCohHby7OV3(J3xgf_sHiIVlU6$5}_KYQ2CCEvRdr9 z!&a^J{HK~_Z*H2GDs7Vt9r{^cXbl}Gn(}Z&1vx=DK<`*k&}n5#D@jsH~^lpr={R{91E5MdllF=E?KS zBdVMqXx1VlUz#$fb@mf)K;+*i-h?}ca%2~dgJn6F<&A^9v9H`WH}qxE-i7YeUj~gB(i$TJpXgn6dC>=7KTV$O>(L6t9 z?rRJg@<0_zn-1h}+-@G^$T|N=8Yj zCz6*v&lrdAq`oYgR>PtaKfRa#BvZMaT>q;HVsc+dy4vI1r+bKJ*8@;$!U0h8AOpw z%PKEh(TDn|XdcUmXQ8Mm20<`Z($Cfg%JDFwYr2t0>u`Nl`nV_~y5KU7PMc|+^y0$P z{2>iGJ-%qi^Q1q_*DGFzvr=j9=fTO>$tDrXD4H}VBO0Pt%G8DCXL-ib<##7!!lin0 zm<@OCl(`bmj@7l|veoEw8LQa!l;9+3WzxVplaX*jMJH)3Z8gg;3j^-0evhB|Tk;xz zl$-9FmVNJ@IZg7xn9Vc&h!%BE>T2h2OAA4AfCPdoE*!gg~U{5HD+Pi|Qc z4l)IuD*vogYw;I+v+=J%KiD7u0SG_<0uX=z1Rwwb2tWV=5Li8dvRN`M{{CNT{AD!$ zrYCF=fB*y_009U<00Izz00bZa0SLUA0`*e)ZbScx$GZ))ykqBo1n_?Mz3zh=wW`#3 zVKiPe{&_PSh+0Dc0uX=z1Rwwb2tWV=5P$##AfN^6<-4Z-EkLPO-l^ul1W5mZ{~etQ zuMmI$1Rwwb2tWV=5P$##AOHaftfBzl|EK@-4;us^009U<00Izz00bZa0SG_<0xK+l z`~NH4xo8>$AOHafKmY;|fB*y_009Ue}n=AAOHafKmY;|fB*y_009U