Skip to main content

hotglue-smoke-test

Smoke-test harness for hotglue taps and targets with colocated __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/
  __tests__/
    record-vcr.py
  __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~=0.1.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 0.1.0
git push origin 0.1.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 __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-0.1.0.tar.gz (24.0 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-0.1.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for hotglue_smoke_test-0.1.0.tar.gz
Algorithm Hash digest
SHA256 01b5ab99072b4aad39dfb763b05bb7060d905df4e74ec544e4e9e54127abf2ec
MD5 90d18f2e741e859123b27c0b8582978d
BLAKE2b-256 2352c1d5711d0b6130e67ec1d037a9414ae096e49a8b637bc18552d8944b10bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for hotglue_smoke_test-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 457c2c0bde1ed962d99e55233dd1e434d98e23d37ae41162a74334943da3992e
MD5 ee412361b42ca489e28b11b74dfbeb63
BLAKE2b-256 e1b85e14032fa3d2f33691c1e7734d9b267c8672277341315dc35793a1a65411

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