Capture and analyze SQL queries made during a run your app's test suite
Project description
sql-critic
Capture and analyze SQL queries made during a run your app's test suite.
Receive feedback about dubious queries in a PR comment.
How it works
Phase 1: Query collection
This phase hooks into your test suite and records any database queries captured by OpenTelementry instrumentation.
NOTE: This step only has Python language support at the moment! However, it's a simple wrapper around OpenTelemetry which could be ported to any other language in theory.
Example using pytest
:
from sqlcritic.collector import Collector
collector = Collector()
def pytest_sessionstart(session):
# only necessary if your app is not already instrumented
# SQLite here is just an example - there is auto instrumentation for lots
# of different database adapters
from opentelemetry.instrumentation.sqlite3 import SQLite3Instrumentor
SQLite3Instrumentor().instrument()
def pytest_runtest_call(item):
path, line, name = item.reportinfo()
with collector.trace_test(path, line, name):
item.runtest()
def pytest_sessionfinish(session, exitstatus):
collector.save_results("results.json")
Phase 2: Analysis
The analysis of queries collected during your test suite happens in a GitHub action. Make sure to run this step after your test suite has run and outputted the queries results (i.e. in results.json
for example).
- uses: scttnlsn/sql-critic@main
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
data-path: "results.json"
The results will be posted as a PR comment in the repo utilizing this action.
Development
Setup
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e ".[dev]"
Testing
python -m pytest
Dependencies
When dependencies are updated in pyproject.toml
then we need to regenerate requirements.txt
(which is used for the GitHub action):
pip-compile -o requirements.txt pyproject.toml
Releasing
pip install build twine
python -m build
twine check dist/*
twine upload dist/*
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
Built Distribution
File details
Details for the file sqlcritic-0.1.0.tar.gz
.
File metadata
- Download URL: sqlcritic-0.1.0.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00add2501fe1afd0fbf0e98d04ba29c4302bc48aa3398b1d4019722046af37c1 |
|
MD5 | 7fc21a699e1daff3804834eddf3d5874 |
|
BLAKE2b-256 | 1e522e2ab31a090bde8631fd360c548531cdc79dbbc48040e31cdfc5aed7d398 |
File details
Details for the file sqlcritic-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: sqlcritic-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24ebcf2264bbfc5c7f5b9196b9160ee69a56cfc9781f7b38b137021332b41054 |
|
MD5 | 00b6122053c8859e3703a69a8aa12869 |
|
BLAKE2b-256 | 89fc6ca6e699bfdf7eb873d9e3e34f658a7c4bca5b86e539a6add361d1d29bf0 |