Remove DNS mocking from tests; use live DNS everywhere
All checks were successful
check / check (push) Successful in 50s
All checks were successful
check / check (push) Successful in 50s
DNS is never mocked in this repository: tests exercise live DNS, and robustness comes from handling real-world DNS behavior with tolerant assertions and sensible timeouts, not from mocks. watcher: drop mockResolver and wire the real iterative resolver into the tests, querying stable public names (example.com, www.example.com). Change detection is exercised by seeding the state store with a synthetic previous observation that live DNS cannot match (reserved .invalid nameserver names and RFC 5737 documentation addresses); DNS stays live in every run. The port checker, TLS checker, and notifier remain test doubles since they are not DNS, keeping notification and state assertions deterministic against whatever addresses live DNS returns. resolver: drop the timeoutClient fake DNSClient and the NewFromLoggerWithClient mock constructor. The timeout test is replaced by a live query against an RFC 5737 documentation address where no nameserver can exist, asserting a classified non-OK response with no records. TESTING.md: extend the live-DNS policy to every package and remove the carve-out that permitted DNS mocks in packages that consume the resolver. TODO.md: update stale references to hermetic mocked-DNS work to reflect the no-mocking policy and the current state of feature/resolver. Intentionally dropped coverage: the exact StatusTimeout classification (previously forced by the fake client) is no longer asserted, because a genuinely unreachable server may fail fast instead of timing out depending on the network path; the live test tolerantly accepts any failure classification.
This commit is contained in:
24
TODO.md
24
TODO.md
@@ -14,7 +14,10 @@ pre-1.0. No git tags. Core resolver work in flight on feature/resolver
|
||||
(dirty: internal/resolver/resolver_test.go). Local checkout has diverged
|
||||
from origin: origin/main is 8 commits ahead (watcher orchestrator,
|
||||
unified TARGETS) and origin/feature/resolver already contains the full
|
||||
iterative resolver implementation with hermetic mocked tests.
|
||||
iterative resolver implementation. DNS mocking is banned in this repo
|
||||
(see `TESTING.md`): all tests use live DNS only. The hermetic mocked
|
||||
tests previously noted on `feature/resolver` are gone from its current
|
||||
tip, which carries a live-DNS suite against `*.dns.sneak.cloud`.
|
||||
|
||||
# Next Step
|
||||
|
||||
@@ -25,10 +28,15 @@ confirm make check still passes.
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-08-07: DNS mocking removed from the entire test suite; watcher
|
||||
tests now drive the real iterative resolver against live DNS and
|
||||
`TESTING.md` bans DNS mocks in every package (`remove-dns-mocking`
|
||||
branch)
|
||||
- 2026-07-07 Adopted scripts-to-rule-them-all: `script/` entrypoints,
|
||||
Makefile shims, README Entrypoints section
|
||||
- 2026-02-20: iterative DNS resolver implemented; tests made hermetic
|
||||
with mocked DNS (origin/feature/resolver, unmerged)
|
||||
with mocked DNS (origin/feature/resolver, unmerged; superseded — DNS
|
||||
mocking is banned, see `TESTING.md`)
|
||||
- 2026-02-20: CI actions and go install refs pinned to commit SHAs;
|
||||
Gitea Actions workflow for make check (origin/ci/make-check, unmerged)
|
||||
- 2026-02-20: watcher monitoring orchestrator merged to main (#8)
|
||||
@@ -55,8 +63,9 @@ Branch reconciliation:
|
||||
- Sync local checkout with origin: local main is 8 commits behind
|
||||
origin/main; local feature/resolver has diverged from
|
||||
origin/feature/resolver, which already implements the resolver
|
||||
- Merge in-flight branches to main once green: feature/resolver,
|
||||
ci/make-check, feature/portcheck-implementation,
|
||||
- Merge in-flight branches to main once green: feature/resolver
|
||||
(confirm its tests remain live-DNS — DNS mocking is banned, see
|
||||
`TESTING.md`), ci/make-check, feature/portcheck-implementation,
|
||||
feature/tlscheck-implementation
|
||||
|
||||
Resolver (plan from untracked TODO.md; largely implemented on
|
||||
@@ -140,6 +149,7 @@ Infrastructure notes (from untracked TODO.md):
|
||||
- Module path sneak.berlin/go/dnswatcher differs from the git.eeqj.de
|
||||
remote intentionally; do not "fix" it
|
||||
- Dependencies: github.com/miekg/dns, golang.org/x/net/publicsuffix
|
||||
- Resolver tests originally used live DNS against *.dns.sneak.cloud
|
||||
(required records documented in the test file header); origin now has
|
||||
mocked hermetic tests, keep them hermetic
|
||||
- Resolver tests originally used live DNS against `*.dns.sneak.cloud`
|
||||
(required records documented in the test file header); `main` now
|
||||
tests against live public DNS. DNS mocking is banned (see
|
||||
`TESTING.md`); never reintroduce hermetic mocked DNS tests
|
||||
|
||||
Reference in New Issue
Block a user