Metadata-Version: 2.4
Name: provide-testkit
Version: 0.0.1114
Summary: Testing utilities and fixtures for the provide ecosystem.
Author-email: Tim Perkins <code@tim.life>
Maintainer-email: "provide.io" <code@provide.io>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/provide-io/provide-testkit
Project-URL: Repository, https://github.com/provide-io/provide-testkit
Project-URL: Issues, https://github.com/provide-io/provide-testkit/issues
Keywords: testing,fixtures,mocking,pytest,provide
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Testing :: Mocking
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: provide-foundation
Requires-Dist: click>=8.1.7
Requires-Dist: pytest>=8.3.5
Requires-Dist: pytest-asyncio>=0.26.0
Requires-Dist: pytest-cov>=6.3.0
Requires-Dist: pytest-mock>=3.15.0
Requires-Dist: pytest-xdist>=3.8.0
Requires-Dist: mkdocs-material>=9.6.20
Provides-Extra: quality
Requires-Dist: ruff>=0.11.8; extra == "quality"
Requires-Dist: mypy>=1.17.1; extra == "quality"
Requires-Dist: bandit>=1.8.3; extra == "quality"
Requires-Dist: coverage[toml]>=7.0.0; extra == "quality"
Requires-Dist: radon>=6.0.0; extra == "quality"
Requires-Dist: interrogate>=1.5.0; extra == "quality"
Requires-Dist: mutmut>=3.3.1; extra == "quality"
Provides-Extra: typecheck
Requires-Dist: mypy>=1.17.1; extra == "typecheck"
Requires-Dist: pyright>=1.1.401; extra == "typecheck"
Requires-Dist: pyre-check>=0.9.23; extra == "typecheck"
Requires-Dist: pyre-extensions>=0.0.32; extra == "typecheck"
Requires-Dist: pyrefly>=0.18.1; extra == "typecheck"
Requires-Dist: ty>=0.0.1a6; extra == "typecheck"
Requires-Dist: types-cryptography>=3.3.23.2; extra == "typecheck"
Requires-Dist: types-grpcio>=1.0.0.20250603; extra == "typecheck"
Requires-Dist: types-toml>=0.10.8.20240310; extra == "typecheck"
Requires-Dist: types-protobuf>=6.30.2.20250516; extra == "typecheck"
Requires-Dist: types-click>=7.1.8; extra == "typecheck"
Requires-Dist: types-pyyaml>=6.0.12.20250915; extra == "typecheck"
Requires-Dist: types-psutil>=7.0.0.20250822; extra == "typecheck"
Provides-Extra: advanced-testing
Requires-Dist: hypothesis>=6.131.28; extra == "advanced-testing"
Requires-Dist: freezegun>=1.5.1; extra == "advanced-testing"
Requires-Dist: behave>=1.2.6; extra == "advanced-testing"
Requires-Dist: pytest-benchmark>=5.1.0; extra == "advanced-testing"
Requires-Dist: pytest-testmon>=2.1.3; extra == "advanced-testing"
Requires-Dist: pytest-json-report>=1.5.0; extra == "advanced-testing"
Provides-Extra: profiling
Requires-Dist: memray>=1.17.2; extra == "profiling"
Requires-Dist: viztracer>=1.0.2; extra == "profiling"
Provides-Extra: transport
Requires-Dist: httpx>=0.27.0; extra == "transport"
Requires-Dist: pytest-httpx>=0.35.0; extra == "transport"
Requires-Dist: h2>=4.3.0; extra == "transport"
Provides-Extra: crypto
Requires-Dist: cryptography>=45.0.7; extra == "crypto"
Requires-Dist: types-cryptography>=3.3.23.2; extra == "crypto"
Provides-Extra: process
Requires-Dist: psutil>=7.0.0; extra == "process"
Provides-Extra: grpc
Requires-Dist: grpc-stubs>=1.53.0.6; extra == "grpc"
Requires-Dist: grpcio>=1.73.0; extra == "grpc"
Requires-Dist: grpcio-tools>=1.73.0; extra == "grpc"
Requires-Dist: grpcio-health-checking>=1.73.0; extra == "grpc"
Provides-Extra: build
Requires-Dist: hatch>=1.14.1; extra == "build"
Requires-Dist: twine>=6.1.0; extra == "build"
Requires-Dist: uv>=0.6.5; extra == "build"
Requires-Dist: pre-commit>=3.5.0; extra == "build"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6.0; extra == "docs"
Requires-Dist: mkdocs-material>=9.6.0; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.26.0; extra == "docs"
Requires-Dist: mkdocs-autorefs>=1.4.0; extra == "docs"
Requires-Dist: mike>=2.1.0; extra == "docs"
Requires-Dist: mkdocs-gen-files>=0.5.0; extra == "docs"
Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == "docs"
Requires-Dist: mkdocs-section-index>=0.3.0; extra == "docs"
Requires-Dist: markdown-callouts>=0.4; extra == "docs"
Requires-Dist: markdown-exec>=1.8; extra == "docs"
Requires-Dist: markdown-include>=0.8.0; extra == "docs"
Requires-Dist: pymdown-extensions>=10.16.0; extra == "docs"
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "docs"
Requires-Dist: mkdocs-macros-plugin>=1.0.0; extra == "docs"
Requires-Dist: mkdocs-include-markdown-plugin>=7.0.0; extra == "docs"
Requires-Dist: mkdocs-coverage>=1.0; extra == "docs"
Requires-Dist: mkdocs-llmstxt>=0.2; extra == "docs"
Requires-Dist: mkdocs-minify-plugin>=0.8; extra == "docs"
Requires-Dist: mkdocs-redirects>=1.2; extra == "docs"
Requires-Dist: linkchecker; extra == "docs"
Requires-Dist: pygments>=2.19.0; extra == "docs"
Requires-Dist: griffe>=1.14.0; extra == "docs"
Requires-Dist: watchdog>=3.0.0; extra == "docs"
Requires-Dist: pyyaml>=6.0.0; extra == "docs"
Provides-Extra: utils
Requires-Dist: pyyaml>=6.0.2; extra == "utils"
Requires-Dist: reuse>=1.1.0; extra == "utils"
Requires-Dist: tabulate>=0.9.0; extra == "utils"
Requires-Dist: sapp>=0.4; extra == "utils"
Provides-Extra: fuzzing
Requires-Dist: pynguin>=0.40.0; extra == "fuzzing"
Provides-Extra: security
Requires-Dist: bandit>=1.8.3; extra == "security"
Requires-Dist: safety>=3.0.0; extra == "security"
Requires-Dist: pip-audit>=2.7.0; extra == "security"
Requires-Dist: semgrep>=1.50.0; extra == "security"
Provides-Extra: standard
Requires-Dist: provide-testkit[crypto,process,quality,transport]; extra == "standard"
Provides-Extra: grpc-dev
Requires-Dist: provide-testkit[grpc,standard,typecheck]; extra == "grpc-dev"
Provides-Extra: pyvider-dev
Requires-Dist: provide-testkit[advanced-testing,build,grpc,profiling,security,standard,typecheck]; extra == "pyvider-dev"
Provides-Extra: all
Requires-Dist: provide-testkit[advanced-testing,build,crypto,docs,fuzzing,grpc,process,profiling,quality,security,transport,typecheck,utils]; extra == "all"
Provides-Extra: dev
Requires-Dist: provide-testkit[advanced-testing,quality]; extra == "dev"
Provides-Extra: docs-standalone
Requires-Dist: provide-testkit[docs]; extra == "docs-standalone"
Dynamic: license-file

# Provide TestKit

[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![uv](https://img.shields.io/badge/uv-package_manager-FF6B35.svg)](https://github.com/astral-sh/uv)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![CI](https://github.com/provide-io/provide-testkit/actions/workflows/ci.yml/badge.svg)](https://github.com/provide-io/provide-testkit/actions)

**Comprehensive testing utilities and fixtures for the [provide ecosystem](https://github.com/provide-io)**

TestKit provides a unified testing framework designed specifically for applications built with `provide-foundation`. It offers intelligent context detection, extensive fixture libraries, and seamless integration with popular testing frameworks.

## ✨ Key Features

- 🔍 **Smart Context Detection** - Automatically detects testing environments
- 🏗️ **Foundation Integration** - Native support for provide-foundation components
- 🧪 **Comprehensive Fixtures** - Pre-built fixtures for common testing scenarios
- 🚀 **CLI Testing Support** - Advanced utilities for testing Click-based applications
- 🔐 **Crypto Testing** - Certificate and key generation utilities
- 🌐 **Transport Mocking** - HTTP, WebSocket, and network testing tools
- 📁 **File System Utilities** - Temporary files, directories, and archive testing
- ⚡ **Async Support** - Full async/await testing capabilities
- 🧵 **Thread Safety Testing** - Multi-threading test utilities

## Development

### Quick Start

```bash
# Set up environment
uv sync

# Run common tasks
we test           # Run tests
we lint           # Check code
we format         # Format code
we tasks          # See all available commands
```

### Available Commands

This project uses `wrknv` for task automation. Run `we tasks` to see all available commands.

**Common tasks:**
- `we test` - Run all tests
- `we test coverage` - Run tests with coverage
- `we test parallel` - Run tests in parallel
- `we lint` - Check code quality
- `we lint fix` - Auto-fix linting issues
- `we format` - Format code
- `we typecheck` - Run type checker

See [CLAUDE.md](CLAUDE.md) for detailed development instructions and architecture information.
