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.1.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.1-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sndtk-0.2.1.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.1.tar.gz
Algorithm Hash digest
SHA256 5f4d454d73b8d6cea167e1932c9ee33937c79b69d940fe76a5e36d42dbd5b1ee
MD5 a7e1b5ab942b27b8edaedb8d2ec44801
BLAKE2b-256 b20b21711ca51fe2443028c1efaf7100f1a9bc3fb51c225923a50b83ae9bbb71

See more details on using hashes here.

Provenance

The following attestation bundles were made for sndtk-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: sndtk-0.2.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 33b4833a145c049f7343cc94d70fd5b10628e2e54362a725393d9e4636119925
MD5 ccc15b0dfb7a1f42cf2cb732f6622d09
BLAKE2b-256 4803488532dee46df09eabb454a828d74d270a41dc85c842cf24819cb9f03e69

See more details on using hashes here.

Provenance

The following attestation bundles were made for sndtk-0.2.1-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