11.PHONY : help
2- .PHONY : test test-parallel test-serial test-benchmark test-watch test-coverage test-profile record-tests check-record-test-env warm-fastembed-cache
2+ .PHONY : test test-parallel test-serial test-benchmark test-watch test-coverage test-profile record-cassettes rewrite-cassettes replay-cassettes snapshot-cassettes check-record-test-env warm-fastembed-cache
33.PHONY : docs-fern docs-fern-strict docs-fern-live docs-fern-preview-watch docs-fern-generate-sdk docs-fern-fix-empty-links docs-check-redirects docs-fern-publish-staging docs-fern-publish-public
44.PHONY : pre-commit
55
@@ -14,6 +14,8 @@ DIST ?= worksteal
1414
1515PYTEST ?= poetry run pytest
1616RECORDED_TESTS ?= tests/recorded
17+ RECORDED_RECORD_MODE ?= once
18+ RECORDED_SNAPSHOT_MODE ?= create
1719RECORDED_REQUIRED_KEYS ?= OPENAI_API_KEY NVIDIA_API_KEY
1820RECORDED_REPLAY_ENV ?= env -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY -u http_proxy -u https_proxy -u all_proxy
1921# These targets assume a Unix-like shell for env -u; use bash, Git Bash, or WSL on Windows.
@@ -46,11 +48,20 @@ test-coverage:
4648test-profile :
4749 $(PYTEST ) -vv --profile-svg $(ARGS ) $(TEST )
4850
49- record-tests : check-record-test-env
50- $(PYTEST ) $(RECORDED_TESTS ) --record-mode=all -m " not fake_cassette"
51- $(RECORDED_REPLAY_ENV ) $(PYTEST ) $(RECORDED_TESTS ) --block-network --inline-snapshot=create
51+ record-cassettes : check-record-test-env
52+ $(PYTEST ) $(RECORDED_TESTS ) --record-mode=$( RECORDED_RECORD_MODE ) -m " not fake_cassette"
53+ $(RECORDED_REPLAY_ENV ) $(PYTEST ) $(RECORDED_TESTS ) --block-network --inline-snapshot=$( RECORDED_SNAPSHOT_MODE )
5254 $(RECORDED_REPLAY_ENV ) $(PYTEST ) $(RECORDED_TESTS ) --block-network
5355
56+ rewrite-cassettes :
57+ $(MAKE ) record-cassettes RECORDED_RECORD_MODE=rewrite RECORDED_SNAPSHOT_MODE=fix
58+
59+ replay-cassettes :
60+ $(RECORDED_REPLAY_ENV ) $(PYTEST ) $(RECORDED_TESTS ) --block-network
61+
62+ snapshot-cassettes :
63+ $(RECORDED_REPLAY_ENV ) $(PYTEST ) $(RECORDED_TESTS ) --block-network --inline-snapshot=fix
64+
5465check-record-test-env :
5566 @missing=" " ; \
5667 for key in $( RECORDED_REQUIRED_KEYS) ; do \
@@ -60,7 +71,7 @@ check-record-test-env:
6071 done ; \
6172 if [ -n " $$ missing" ]; then \
6273 printf ' %s\n' " Missing required env var(s):$$ missing" \
63- " Set them before make record-tests , or override RECORDED_REQUIRED_KEYS for a focused refresh." ; \
74+ " Set them before make record-cassettes , or override RECORDED_REQUIRED_KEYS for a focused refresh." ; \
6475 exit 2; \
6576 fi
6677
@@ -107,7 +118,10 @@ help:
107118 ' make test-benchmark [ARGS="-q"]' \
108119 ' make test-parallel [TEST=path] [WORKERS=auto] [ARGS="-q --tb=short"]' \
109120 ' make test-watch [TEST=path]' \
110- ' make record-tests [RECORDED_TESTS=tests/recorded] [RECORDED_REQUIRED_KEYS="OPENAI_API_KEY NVIDIA_API_KEY"]' \
121+ ' make record-cassettes [RECORDED_TESTS=tests/recorded] [RECORDED_RECORD_MODE=once] [RECORDED_SNAPSHOT_MODE=create] [RECORDED_REQUIRED_KEYS="OPENAI_API_KEY NVIDIA_API_KEY"]' \
122+ ' make rewrite-cassettes [RECORDED_TESTS=tests/recorded] [RECORDED_REQUIRED_KEYS="OPENAI_API_KEY NVIDIA_API_KEY"]' \
123+ ' make replay-cassettes [RECORDED_TESTS=tests/recorded]' \
124+ ' make snapshot-cassettes [RECORDED_TESTS=tests/recorded]' \
111125 ' ' \
112126 ' Tests:' \
113127 ' test Run pytest.ini testpaths with pytest-xdist' \
@@ -117,7 +131,10 @@ help:
117131 ' test-watch Run pytest in watch mode' \
118132 ' test-coverage Run pytest with coverage' \
119133 ' test-profile Run pytest with profiling' \
120- ' record-tests Refresh cassettes with required provider keys, fill snapshots, and verify replay' \
134+ ' record-cassettes Record missing or selected cassettes, fill snapshots, and verify replay' \
135+ ' rewrite-cassettes Rewrite selected cassettes, fill snapshots, and verify replay' \
136+ ' replay-cassettes Verify selected cassettes offline without recording' \
137+ ' snapshot-cassettes Update inline snapshots from existing cassettes offline' \
121138 ' warm-fastembed-cache Prime the repo-local FastEmbed cache' \
122139 ' ' \
123140 ' Docs:' \
0 commit comments