Pre-release
This release is a pre-release and may not be stable for production use.
= AsciiDoctest: Python Doctest Runner for AsciiDoc
:toc: left
:idprefix:
:idseparator: -
image:https://github.com/webmaven/asciidoctest/actions/workflows/ci.yml/badge.svg[CI Status, link=https://github.com/webmaven/asciidoctest/actions/workflows/ci.yml]
image:https://img.shields.io/pypi/v/asciidoctest.svg[PyPI Version, link=https://pypi.org/project/asciidoctest/]
image:https://img.shields.io/badge/python-3.14-blue.svg[Python Version]
image:https://img.shields.io/badge/coverage-97%25-green.svg[Test Coverage]
image:https://img.shields.io/badge/License-Apache_2.0-blue.svg[License, link=https://opensource.org/licenses/Apache-2.0]
AsciiDoctest is a Python doctest runner designed to parse, collect, and execute tests from AsciiDoc (`.adoc`) files and Python docstrings.
It integrates AST-based parsing using `asciidoctrine` and `asciidocstring` to provide accurate and standard-compliant testing of documentation.
== Features
* **AST-Based Parsing**: Structural parsing using `asciidoctrine` (AsciiDoc parser) and `asciidocstring` (AsciiDoc docstring parser).
* **Execution Modes**:
- `explicit` (default): Only executes blocks with the `test` attribute or role (e.g., `[source,python,test]` or `[.test]\n[source,python]`).
- `eager`: Executes all `[source,python]` code blocks across the document.
* **Shared State**: Within a single AsciiDoc document, subsequent blocks share execution state sequentially top-to-bottom. Execution state is completely isolated between separate files.
* **Pytest Integration**: Automatic discovery and execution of `.adoc` files and Python docstrings via registered pytest collectors.
* **Unittest Compatibility**: Suite wrappers (`DocTestSuite` and `DocFileSuite`) designed to integrate with the standard library `unittest` runner.
== Installation
[source,bash]
----
pip install asciidoctest
----
== Pytest Integration
AsciiDoctest automatically registers as a `pytest` plugin. Simply execute `pytest` in your project directory:
[source,bash]
----
pytest
----
=== Configuration
You can configure collection behavior in your `pyproject.toml` or `pytest.ini`:
[source,ini]
----
[pytest]
asciidoctest_mode = eager
----
Alternatively, you can supply the `--asciidoctest-mode` flag:
[source,bash]
----
pytest --asciidoctest-mode=eager
----
== Unittest Integration
To use the standard library `unittest` package, load tests using `DocFileSuite` or `DocTestSuite`:
[source,python]
----
import unittest
from asciidoctest import DocFileSuite
def suite():
return DocFileSuite("README.adoc")
if __name__ == "__main__":
unittest.main(defaultTest="suite")
----
== Examples
Below are standard test blocks demonstrating interactive and script-based execution.
=== Interactive Session
We can run interactive Python sessions with expected outputs:
[source,python,test]
----
>>> x = "asciidoctest"
>>> x.upper()
'ASCIIDOCTEST'
----
=== Sequential Script Block
We can run script-based test blocks with standard Python assertions. Because they share execution state sequentially, variables defined in previous blocks are accessible:
[source,python,test]
----
assert x == "asciidoctest"
y = len(x)
assert y == 12
----
=== Directives Support
Standard `doctest` directives such as `ELLIPSIS` are supported:
[source,python,test]
----
>>> print("Hello ... World")
Hello ... World
----
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
asciidoctest-0.1.0a3.tar.gz
(17.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file asciidoctest-0.1.0a3.tar.gz.
File metadata
- Download URL: asciidoctest-0.1.0a3.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cc9f7cd8c0f3666999212b120aa434f9afe9c0b52d441cc662489269315dc63
|
|
| MD5 |
aeecd48b0a8159d0cde3d4f004f5e5a8
|
|
| BLAKE2b-256 |
d9b91c3e58ac2ef56545822b9e543adaa30be6300332faf957304fdadea3ac9f
|
File details
Details for the file asciidoctest-0.1.0a3-py3-none-any.whl.
File metadata
- Download URL: asciidoctest-0.1.0a3-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e44983668f3db5dcabfaf268572beb68f960fb80f1c286bb3e9b3ad73aea84eb
|
|
| MD5 |
601585524add5be3cde9c351e4d98cc8
|
|
| BLAKE2b-256 |
d307113b9937ed4165e139a193595d898a649f391bd545d13873061541539c2b
|