From 72b8383c1022a993b66c6cd8b4f739bdee062246 Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Wed, 21 Oct 2026 19:48:58 +0200 Subject: [PATCH] test(19.8): gate stages for hello, docs, plugins, apps, landing and docker - hello: vet, every test and the console tests by name - docs: the charm decision note, TestDocsTree, docs:build --check, no application names, examples on every summer command - plugins: 15 swept repositories (vet, short, TestCommandsDocumented, GOWORK=off build) and the additive check on each sweep commit - apps: go build, summer build leaves main.go unchanged, list and help - landing: nuxt generate and its TAP suite, terminal and roadmap tests, sync-roadmap --check against origin/master - docker: serve lifecycle, migration checklist flags, token JSON - self-test: TAP detector, additive and NOT SWEPT rules on planted repos - go stage: the new surf, conga, lagoon, flare, dev and summer names --- scripts/check-phase19.8.sh | 514 ++++++++++++++++++++++++++++++++++--- 1 file changed, 482 insertions(+), 32 deletions(-) diff --git a/scripts/check-phase19.8.sh b/scripts/check-phase19.8.sh index f25f4c3a..57f0cc42 100755 --- a/scripts/check-phase19.8.sh +++ b/scripts/check-phase19.8.sh @@ -6,27 +6,50 @@ # landing site and the Docker-backed paths. # # Stages: -# self-test the go test -json detector on planted output (pass, fail, -# skip, a subtest-only pass, zero tests, "no tests to run", -# a missing required name), the docker NOT RUN rule on a faked -# PATH, and that every mode is wired. +# self-test the go test -json and node --test (TAP) detectors on planted +# output (pass, fail, skip, a subtest-only pass, zero tests, "no +# tests to run", a missing required name), the additive check +# and the NOT SWEPT rule on planted git repositories, the docker +# NOT RUN rule on a faked PATH, and that every mode is wired. # go go vet ./... and go test -short ./... here, the required # smoke and unit tests by name per package, then go test -race -# -short of diary and bonfire. -# hello the example application (its own module in the workspace). -# docs the decision note, TestDocsTree, summer docs:build --check, -# no consuming application named in the console and logging -# sources and pages, and every command in summer's JSON listing -# has examples. -# plugins each swept shared plugin: vet, short tests, its warn-only -# TestCommandsDocumented by name, a build without the -# workspace, and the additive check against the commit before -# its sweep commit. -# apps each application: go build ./..., the generated main.go -# unchanged by summer build, bin/ list and help migrate. -# landing the landing site's tests and the roadmap deck's tests. +# -short of diary, sunscreen, bonfire and docsite. +# hello the example application (its own module in the workspace): +# vet, every test, and its console tests by name. +# docs the console decision note names the six charm modules, +# TestDocsTree, summer docs:build --check, no consuming +# application named in the console and logging sources and +# pages, and every command in summer's JSON listing has +# examples. +# plugins each swept shared plugin (PLUGINS_ROOT, and the user, golem +# and feedback checkouts under FONOTEKA): vet, short tests, its +# warn-only TestCommandsDocumented by name, a build without the +# workspace (GOWORK=off), and the additive check: in the diff of +# its sweep commit (found by subject) against its parent no +# removed line declares an exported func, method or type, and +# no removed Name: "" literal (a command, flag or argument +# name) is missing from the added lines. A repository listed in +# SWEEP_OPTIONAL without a sweep commit prints NOT SWEPT; any +# other one without it fails. Only the short suites run here: +# the Docker suites of sitemap, faq, menu and the user plugin's +# updates package fail before the sweep too (deferred-items.md) +# and are not part of this gate. +# apps each application: go build ./... (binaries into a temporary +# directory), summer build (this checkout's summer) leaves the +# committed main.go and plugins.gen.go unchanged, and +# bin/ list and help migrate exit 0. +# landing the landing site: nuxt generate, then its node --test suite +# (TAP: every test passes, none skipped or todo); the +# application's terminal Go tests by name (the end-to-end +# TestTerminalCommands only with SUMMERCMS_TERMINAL_CHECK=1, +# NOT RUN otherwise); the demo +# application's roadmap tests by name and +# scripts/sync-roadmap.sh --check against ROADMAP_REF (default +# origin/master: local master carries other sessions' unpushed +# planning commits). # docker Docker host only: the testcontainers tests by name without -# -short. +# -short (serve's lifecycle, the migration checklist flags, the +# admin token JSON). # # A Go stage exits non-zero on a failing command, or on a go test -json run # that fails, skips a test (a subtest included), matches zero tests, prints @@ -41,7 +64,7 @@ # repository): PHASE198_ROOT (this repository), PLUGINS_ROOT (the directory # holding the sm-*-plugin checkouts), FONOTEKA (the application workspace # that carries the user, golem and feedback plugin checkouts), DEMO_APP, -# BM_APP, GRZYBY_APP, SUMMERCMSIO_APP, PHASE198_REQUIRE_DOCKER. +# BM_APP, GRZYBY_APP, SUMMERCMSIO_APP, ROADMAP_REF, PHASE198_REQUIRE_DOCKER. set -euo pipefail unset FORCE_COLOR @@ -106,22 +129,111 @@ CONGA_TESTS=( TestRiverLoggerUsesDiarySmoke # Plan 04 (D-09). TestRiverLoggerComponent TestRiverLoggerPublishedOverride + # Plan 04: worker counters and queue:clear's production question + # (D-28, D-29). + TestWorkerStats TestQueueClearConfirm ) LAGOON_TESTS=( # Plan 01. TestGormLoggerUsesDiarySmoke # Plan 04 (D-09). TestGormLoggerLevels + # Plan 04: the production question and key:generate (D-21, D-25, D-28). + TestConfirmProductionNonTTYProceeds TestConfirmProductionInteractiveNo + TestForceSkipsConfirm TestKeyGenerateJSON TestKeyGenerateQuiet ) SURF_TESTS=( # Plan 03. TestServeSummarySmoke TestShutdownReportSmoke TestAccessLogSmoke + # Plan 04: summary, records, report, graceful stop, route:list --json + # (D-04, D-25, D-29). + TestServeSummaryLines TestServeRecords TestShutdownReportAborted + TestServeGracefulNil TestRouteListJSON + # Plan 04: the request log (D-23). + TestAccessLogRequestIDCap TestAccessLogDefaultOn TestAccessLogDisabled + TestAccessLogNeverLogsPath TestAccessLogComponentHTTP +) +FLARE_TESTS=( + # Plan 04: Reported failures (D-18). + TestFlareReported +) +DEV_TESTS=( + # Plan 04: summer dev runs serve (D-29). + TestStartBinServe TestDevReport TestDevGracefulNil ) SUMMER_TESTS=( # Plan 03. TestCommandsDocumented TestDocsTree + # Plan 04: the delegates' help (D-17). + TestDelegateExamples ) +# hello stage. +HELLO_TESTS=( + TestBuiltBinaryListsCommands TestGreeterDocumented TestHelpListsServe + TestBuiltBinaryUnknownCommandExitsNonZero TestMigrateWithoutDSNFailsLoudly +) + +# docker stage: testcontainers suites (Postgres). +DOCKER_SURF_TESTS=(TestServeLifecycle) +DOCKER_LAGOON_TESTS=( + TestPendingMigrations TestMigratePretend TestRollbackPretend + TestDeferredPurgePretend TestMigrateStatusJSON +) +DOCKER_CABANA_TESTS=(TestTokenCreateJSON TestTokenListJSON TestTokenCreateQuietKeepsToken) + +# plugins stage: the swept repositories (19.8-03-SUMMARY.md, D-20), as +# "