Skip to main content

Add your description here

Project description

Sandhittiko: self-evident and visible test case management tool.

Overview

Sandhittiko (sndtk) is a Python test case management tool that helps you maintain test coverage by tracking test specifications in JSON files. It analyzes your Python code, identifies functions that need test coverage, and generates test specifications that can be used to guide test implementation.

Features

  • Function Discovery: Automatically parses Python files and extracts function definitions (including nested functions and class methods)
  • Test Specification Management: Maintains test specifications in JSON files (*_spec.json) alongside your source code
  • Coverage Reporting: Reports which functions have test coverage and which scenarios are missing
  • Spec Generation: Automatically creates test specifications for uncovered functions
  • Smart Filtering: Filters out test files, gitignored files, and configurable patterns

Installation

# Using uv (recommended)
uv sync

# Or using pip
pip install -e .

Usage

Basic Usage

Scan the project and report test coverage:

sndtk --root .

Find First Uncovered Function

Find the first function that needs test coverage:

sndtk --root . --first

Create Test Specification

Create a test specification for the first uncovered function:

sndtk --root . --create --first

Target Specific Function

Analyze a specific function:

sndtk --root . --target path/to/file.py::function_name
sndtk --root . --target path/to/file.py::ClassName::method_name

Verbose Output

Get more detailed logging:

sndtk --root . -v    # INFO level
sndtk --root . -vv   # DEBUG level

Project Structure

sndtk/
├── filters/      # File filtering (gitignore, patterns, config)
├── parsers/      # Python code parsing (AST-based)
├── report/       # Test coverage reporting
└── spec/         # Test specification management

Configuration

Configure file exclusions in pyproject.toml:

[tool.sndtk]
exclude = ["*_test.py", "conftest.py"]

How It Works

  1. Parsing: Uses Python's AST to extract all function definitions from .py files
  2. Specification: Test specifications are stored in *_spec.json files containing:
    • Function identifiers
    • Test scenarios with descriptions
    • Test file paths
  3. Reporting: Compares parsed functions against specifications and checks if test functions exist
  4. Filtering: Applies multiple filters to exclude test files and other unwanted files

Test Specification Format

Test specifications are stored in JSON files (e.g., module_spec.json):

{
  "filepath": "path/to/module.py",
  "testpath": "path/to/module_test.py",
  "functions": [
    {
      "identifier": "function_name",
      "scenarios": [
        {
          "testname": "test__function_name__placeholder_scenario0",
          "description": "Placeholder scenario 0..."
        }
      ]
    }
  ]
}

Requirements

  • Python >= 3.11
  • pathspec >= 0.12.1
  • pydantic >= 2.12.4
  • tomli >= 2.0.1

Development

Install development dependencies:

uv sync --dev

Run tests:

pytest

Run type checking:

mypy sndtk
pyright sndtk

Run linting:

ruff check sndtk

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sndtk-0.2.0.tar.gz (50.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sndtk-0.2.0-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file sndtk-0.2.0.tar.gz.

File metadata

  • Download URL: sndtk-0.2.0.tar.gz
  • Upload date:
  • Size: 50.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sndtk-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e761c166b900840b42b3b8516d587111e3e6ca4dd8e1a8c76a5bb788e420c50c
MD5 31163a424381ce9caba8dc7ac70bef44
BLAKE2b-256 2e835e863757717cc89cb89427a1fa16be15b681d7a5778cedf392a5528e42a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for sndtk-0.2.0.tar.gz:

Publisher: publish.yml on ktnyt/sndtk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sndtk-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: sndtk-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sndtk-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8639e1f7a579bcb2f116c07cdf6bc0bc79616e5b9bd1a9d88386b1f590ea4c53
MD5 17b8968ed82447d29af10cdeb2f84815
BLAKE2b-256 4211093112a846b8b2c759e0fc0ec6fc81175bad6ca1d183ee39472c330ae9cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for sndtk-0.2.0-py3-none-any.whl:

Publisher: publish.yml on ktnyt/sndtk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page