mirror of
https://github.com/lukaszraczylo/go-telegram.git
synced 2026-06-05 22:43:59 +00:00
99c906c3c5
regen-from-fixture (used by ci.yml codegen-clean gate) hardcoded testdata/html/snapshot_2026-05-08.html. After regen.yml committed a newer snapshot via PR, the pinned path drifted from committed api/ output and codegen-clean failed on main. Resolving SCRAPE_INPUT via `readlink testdata/html/latest.html` lets each regen automatically advance the fixture pointer without a manual Makefile bump, while preserving the override (`SCRAPE_INPUT=path \ make regen-from-fixture`) for ad-hoc replays of historical snapshots.
110 lines
4.1 KiB
Makefile
110 lines
4.1 KiB
Makefile
.PHONY: test test-race lint vet integration regen snapshot regen-from-fixture test-update-golden clean clean-generated audit audit-drift docs docs-check help
|
|
|
|
GO ?= go
|
|
|
|
help:
|
|
@echo "Targets:"
|
|
@echo " test - run unit tests"
|
|
@echo " test-race - run unit tests with race detector"
|
|
@echo " lint - go vet + staticcheck"
|
|
@echo " integration - run integration suite (requires TELEGRAM_BOT_TOKEN)"
|
|
@echo " snapshot - capture HTML snapshot from live API (Plan 2)"
|
|
@echo " regen - regenerate api/ from latest snapshot (Plan 2)"
|
|
@echo " regen-from-fixture - deterministic regen from pinned fixture (Plan 2)"
|
|
@echo " test-update-golden - refresh golden test fixtures (Plan 2)"
|
|
@echo " audit - report any-typed/bool fallbacks in current IR"
|
|
@echo " audit-drift - audit + compare against HEAD's IR for signature changes"
|
|
@echo " docs - regenerate markdown reference docs into docs/reference/"
|
|
@echo " docs-check - assert docs/reference/ is up to date (CI gate)"
|
|
@echo " clean-generated - delete generated api/*.gen.go and internal/spec/api.json"
|
|
@echo " clean - clean-generated + transient artefacts (binaries, coverage)"
|
|
|
|
test:
|
|
$(GO) test ./...
|
|
|
|
test-race:
|
|
$(GO) test -race ./...
|
|
|
|
vet:
|
|
$(GO) vet ./...
|
|
|
|
lint: vet
|
|
@which staticcheck > /dev/null || (echo "install staticcheck: go install honnef.co/go/tools/cmd/staticcheck@latest" && exit 1)
|
|
staticcheck ./...
|
|
|
|
integration:
|
|
$(GO) test -tags=integration -v ./test/integration/...
|
|
|
|
# Resolve via testdata/html/latest.html symlink so the pinned-fixture target
|
|
# auto-tracks whatever snapshot regen.yml last committed. Override with
|
|
# SCRAPE_INPUT=path/to/snapshot.html for ad-hoc replays.
|
|
SCRAPE_INPUT ?= testdata/html/$(shell readlink testdata/html/latest.html)
|
|
SCRAPE_OUTPUT ?= internal/spec/api.json
|
|
|
|
snapshot:
|
|
./scripts/snapshot.sh
|
|
|
|
regen: clean-generated
|
|
$(GO) run ./cmd/scrape -input testdata/html/latest.html -output $(SCRAPE_OUTPUT)
|
|
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT)
|
|
$(GO) run ./cmd/genapi -input $(SCRAPE_OUTPUT) -outdir api
|
|
$(GO) test ./api/...
|
|
$(MAKE) docs
|
|
|
|
regen-from-fixture: clean-generated
|
|
$(GO) run ./cmd/scrape -input $(SCRAPE_INPUT) -output $(SCRAPE_OUTPUT)
|
|
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT)
|
|
$(GO) run ./cmd/genapi -input $(SCRAPE_OUTPUT) -outdir api
|
|
$(GO) test ./api/...
|
|
$(MAKE) docs
|
|
|
|
audit:
|
|
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT)
|
|
|
|
audit-drift:
|
|
$(GO) run ./cmd/audit -ir $(SCRAPE_OUTPUT) -drift
|
|
|
|
test-update-golden:
|
|
$(GO) test -run TestEmit -update ./cmd/genapi/...
|
|
$(GO) test -run TestScrape -update ./cmd/scrape/...
|
|
|
|
# Regenerate godoc-style markdown reference docs into docs/reference/.
|
|
# Auto-installs gomarkdoc on first run.
|
|
DOC_PACKAGES := \
|
|
./client \
|
|
./transport \
|
|
./dispatch \
|
|
./dispatch/conversation \
|
|
./dispatch/filters/message \
|
|
./dispatch/filters/callback \
|
|
./dispatch/filters/inline \
|
|
./dispatch/filters/chatmember \
|
|
./dispatch/filters/chatjoinrequest \
|
|
./dispatch/filters/precheckoutquery \
|
|
./api
|
|
|
|
docs:
|
|
@which gomarkdoc > /dev/null || (echo "installing gomarkdoc..." && $(GO) install github.com/princjef/gomarkdoc/cmd/gomarkdoc@v1.1.0)
|
|
gomarkdoc \
|
|
--repository.url=https://github.com/lukaszraczylo/go-telegram \
|
|
--repository.default-branch=main \
|
|
--repository.path=/ \
|
|
-o 'docs/reference/{{.Dir}}.md' $(DOC_PACKAGES)
|
|
|
|
docs-check: docs
|
|
@git diff --exit-code docs/reference/ || (echo "docs/reference/ is stale — run 'make docs' and commit" && exit 1)
|
|
|
|
# clean-generated removes ONLY codegen output. Source code (cmd/scrape,
|
|
# cmd/genapi, runtime helpers) is untouched. Run before regen to avoid
|
|
# orphan files lingering when the IR shrinks (renamed/removed methods).
|
|
clean-generated:
|
|
rm -f api/*.gen.go api/*_gen_test.go
|
|
rm -f internal/spec/api.json
|
|
|
|
# clean removes generated output AND transient artefacts (binaries
|
|
# accidentally left at repo root, coverage reports). Source code is
|
|
# never touched.
|
|
clean: clean-generated
|
|
rm -f coverage.out coverage.html
|
|
rm -f echo webhook genapi scrape callback files inline conversation middleware stateful
|