Skip to main content

hotglue-smoke-test

Smoke-test harness for hotglue taps and targets with colocated __smoke-tests__/ fixtures in connector repos.

Three phases: record HTTP (then scrub) → generate data.singer/state.json → run (replay + compare).

Run from the connector repo root (after installing into that venv). Connector name for logs is derived from the directory (tap-shopify-v2shopify-v2).

Layout (per connector repo)

tap-foo/
  __smoke-tests__/
    record-vcr.py
  __smoke-tests__/some_stream_test/
    config.json
    catalog-selected.json
    fixtures/vcr.yaml
    expected_output/data.singer

Install

uv pip install hotglue-smoke-test
# pin when needed, e.g. uv pip install 'hotglue-smoke-test~=1.0.0'

Dev / unreleased branch:

uv pip install "hotglue-smoke-test @ git+https://github.com/hotgluexyz/hotglue-smoke-test.git@<branch>"

Release (PyPI)

Uses uv build / uv publish with trusted publishing (no PYPI_API_TOKEN).

One-time setup:

  1. GitHub → Settings → Environments → create pypi.
  2. PyPI → project → Publishing → add a trusted publisher matching this repo/workflow/pypi environment.

Then bump version in pyproject.toml, commit, tag, push the tag:

# after merging to main with version bumped
git tag 1.0.0
git push origin 1.0.0

Commands

# 1. Record VCR cassette (live API; discards Singer output), then scrub secrets/PII
hotglue-smoke-test record orders_test

# 2. Replay cassette → write expected_output/
hotglue-smoke-test generate orders_test

# 3. Replay cassette → test_runtime/ → compare (CI uses bare `run` = all cases)
hotglue-smoke-test run
hotglue-smoke-test run orders_test

record scrubs by default after the live HTTP capture (cassette response bodies + connector record-vcr.py rules). Use --no-scrub only for local debug; do not commit unsanitized cassettes.

Add --target for target repos. Add --force on record or generate to overwrite existing artifacts. Override the repo root with --connector-directory only when not running from cwd.

--force semantics

Command Without --force With --force
record Fails if fixtures/vcr.yaml exists Wipes fixtures/, expected_output/, test_runtime/, then live-records + scrub
generate Fails if data.singer/state.json output exists Wipes expected_output/, test_runtime/, then regenerates from cassette

run never mutates committed artifacts.

Typical workflow

hotglue-smoke-test record orders_test            # live → fixtures/vcr.yaml → scrub
hotglue-smoke-test generate orders_test          # replay → expected_output/
hotglue-smoke-test run orders_test               # replay → test_runtime/ → diff

hotglue-smoke-test record --force orders_test    # full re-record + scrub (start over)
hotglue-smoke-test generate orders_test
hotglue-smoke-test run orders_test

hotglue-smoke-test generate --force orders_test  # refresh data.singer/state.json after connector change (HTTP unchanged)
hotglue-smoke-test run orders_test

Connector __smoke-tests__/record-vcr.py:

from hotglue_smoke_test.vcr.tap import VCRTapTestRunner

Override sanitize_cassette() for connector-specific PII rules. Default base scrub only redacts OAuth token keys in response JSON.

Self-check: python -m hotglue_smoke_test.self_check

Download files

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

Source Distribution

hotglue_smoke_test-1.0.0.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

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

hotglue_smoke_test-1.0.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

Details for the file hotglue_smoke_test-1.0.0.tar.gz.

File metadata

  • Download URL: hotglue_smoke_test-1.0.0.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for hotglue_smoke_test-1.0.0.tar.gz
Algorithm Hash digest
SHA256 30720e3e86a7bd81f2e1d73ebf4952e7de9d7ab7cc1d33f5bd52a27c9345d0bd
MD5 fb626e85106608f30b4329b6cb77f639
BLAKE2b-256 19b2e94f3f338fc0a63a0bda8d7ab9bbeacf2726ba68a09c658463f8b7b1e6cc

See more details on using hashes here.

File details

Details for the file hotglue_smoke_test-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for hotglue_smoke_test-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80ff08b02a6133750f55626aa5c9d581dcb811800a2346a8e5dafe4e68ceeb0a
MD5 a42fafaa080c1dfa5823a2f1f58f2804
BLAKE2b-256 e38a5a8a75df639e13d5a5d5bb2a48324def1591648b146aaa5295e24b96ac02

See more details on using hashes here.

Supported by

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