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.1.1.tar.gz (48.6 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.1.1-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sndtk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4ad21ae7d4d50822aa7259a5591aac92611e9ac0fa54d9c22a4dd9fb0384dbc3
MD5 63a4b14fe319c265cfcad342889714f6
BLAKE2b-256 6569cdb2f737e827cce2242e077dc19c022c68e9fd4507f75e8b43f60d0917e7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: sndtk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 37.5 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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eed81887634dc3215cef54ddd3f9898a2db16b3ec07b12046a118526d60e7399
MD5 22a7cbb4cae3125fc5285108377efa13
BLAKE2b-256 044187828ba0053b9b32e3c6d6a4d74ceb988ee86eb0ea2cfd480307ea9816d6

See more details on using hashes here.

Provenance

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