Skip to main content

Baygon

GitHub issues GitHub last commit Build and Deploy Python PyPI version PyPI - Downloads License codecov

Kills Bugs Dead!

This package is a minimalist functional test suite for binaries. It relies on a description of tests usually in test.yml or test.json.

The documentation is available here.

Test file format

It can be either a .yml or a .json file.

version: 1
tests:
  - name: Arguments check
    tests:
      - name: No errors if two arguments
        args: [1, 2]
        exit: 0
      - name: Error if less than two arguments
        args: [1]
        exit: 1
  - name: Stdout is the sum of arguments
    args: [1, 2]
    stdout: []
  - name: Version on stderr
    args: ['--version']
    stderr:
      - regex: '\b\d\.\d\.\d\b'
      - contains: 'Version'

Usage

$ info-test -v ./a.out
Test 1: Arguments check
    Test 1.1: No errors if two arguments................ PASSED
    Test 1.2: Error if less than two arguments.......... PASSED
Test 2: Stdout is the sum of arguments.................. PASSED
Test 3: Version on stderr............................... PASSED

Ran 4 tests in 0.0s.

ok.

CLI highlights:

  • Use --pretty to render rich panels for failing tests, including captured command telemetry.
  • Pass -T/--table to display an aggregated summary table once the run completes.
  • Provide a custom test definition with -c/--config. The legacy -t flag is still recognised but deprecated.

Programmatic usage

Baygon now exposes the same building blocks used by the CLI so you can embed the runner directly in your tooling:

from baygon.config import load_config
from baygon.runtime import BaygonRunner

suite = load_config("tests/smoke.yml")
runner = BaygonRunner(suite, base_dir=Path("tests"))
report = runner.run()

for case in report.cases:
    print(f"{case.case.name}: {case.status}")

You can also extend Baygon by registering custom filters or matchers:

from baygon.filters import Filter, register_filter

@register_filter("strip-digits")
class FilterStripDigits(Filter):
    def apply(self, value: str) -> str:
        return "".join(c for c in value if not c.isdigit())

How to install?

pip3 install baygon

Build documentation

The site is powered by MkDocs Material. From the repository root:

uv sync --group docs
uv run --group docs mkdocs serve --strict

To create a production build:

uv run --group docs mkdocs build --strict

Contributing ?

git clone https://github.com/heig-tin-info/baygon.git
cd baygon
uv sync --group dev

Tests

Install pyenv then install all required version of Python:

pyenv install 3.9.9
pyenv install 3.10.4
pyenv install 3.11.0
pyenv install 3.12.0
pyenv install 3.13.0
pyenv global 3.9.9 3.10.4 3.11.0 3.12.0 3.13.0

Then sync your uv environment:

uv sync --group dev

Run the automated checks:

uv run --group dev nox -s lint tests

Baygon can even test itself against all supported Python versions:

uv run baygon .venv/bin/baygon

Metadata

Release files for baygon 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for baygon 0.7.0
File Size Uploaded
baygon-0.7.0.tar.gz 67.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for baygon 0.7.0
File Interpreter ABI Platform
baygon-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 101.1 kB

Release files / baygon-0.7.0.tar.gz

Download URL baygon-0.7.0.tar.gz
Size 67.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7bcb7e8a969713ac46eab6e5fcd477c1cd5a0acbe5d2ef963ed1faa3c8203e94
BLAKE2b-256 checksum
How to use checksums
7613265cd15c9d164705582f651baaa332873bda8708297d72bca841ef3c419d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 2, 2026.

Transparency log

Release files / baygon-0.7.0-py3-none-any.whl

Download URL baygon-0.7.0-py3-none-any.whl
Size 33.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d592cbe6a4ec5289c2cdc1beed9ecc9380fd1e14eb36976fc9feaf7dc76f97e
BLAKE2b-256 checksum
How to use checksums
7df909f90278a2c01a1d496a82faf556a004373c048c387cf75b2506b223e491
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

1 release file

0.5.0

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.1.8

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page