From dd4cf1235cb99a429e18f612d694f04a1389eb81 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Tue, 20 Oct 2026 22:19:29 -0400 Subject: [PATCH] test: pin scan_extractor_version at the start of ev-sensitive tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The extractor/force-rescan tests assert manifest stamps against the default version (1), but the setting lives in the SHARED dev DB — any prior run (or a manual admin-UI bump) can leave it at 2, failing every stamp assertion through no fault of the code. Each ev-sensitive test now pins the setting to 1 at start and restores 1 on cleanup; proven against a deliberately bumped setting (tests pass, row restored). --- cmd/server/tests/extractor_version_test.go | 2 ++ cmd/server/tests/phase13_test.go | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/cmd/server/tests/extractor_version_test.go b/cmd/server/tests/extractor_version_test.go index 9816a0c3..61864615 100644 --- a/cmd/server/tests/extractor_version_test.go +++ b/cmd/server/tests/extractor_version_test.go @@ -74,6 +74,7 @@ func TestExtractorVersionReextract(t *testing.T) { ctx := context.Background() admin, _ := moveTestAdminID(t, setup) + pinExtractorVersionOne(t, setup) libID, folder := createTypedTestLibrary(t, setup, fmt.Sprintf("Test EV Library %d", time.Now().UnixNano()), "ebooks") t.Cleanup(func() { deleteLibraries(t, setup, libID) }) @@ -142,6 +143,7 @@ func TestExtractorVersionMultifile(t *testing.T) { t.Cleanup(func() { _ = setup.Close() }) admin, _ := moveTestAdminID(t, setup) + pinExtractorVersionOne(t, setup) libID, folder := audioTestLibrary(t, setup, fmt.Sprintf("Test EV Audio %d", time.Now().UnixNano())) t.Cleanup(func() { deleteLibraries(t, setup, libID) }) diff --git a/cmd/server/tests/phase13_test.go b/cmd/server/tests/phase13_test.go index 0e7442ed..6ddce7d5 100644 --- a/cmd/server/tests/phase13_test.go +++ b/cmd/server/tests/phase13_test.go @@ -28,6 +28,17 @@ import ( "github.com/stretchr/testify/require" ) +// pinExtractorVersionOne pins the SHARED dev DB's extractor version to +// the default 1 for the test's duration. Prior interrupted runs can +// leave it bumped (an early test failure aborts before its restore +// cleanup registers), and every stamp assertion in these tests assumes +// the default. The cleanup restores 1 — the repo's steady state. +func pinExtractorVersionOne(t *testing.T, setup *TestServerSetup) { + t.Helper() + setExtractorVersion(t, setup, 1) + t.Cleanup(func() { setExtractorVersion(t, setup, 1) }) +} + // forceScanTestFolder runs a FORCE scan over one folder. func forceScanTestFolder(t *testing.T, setup *TestServerSetup, adminID pgtype.UUID, folder string) { t.Helper() @@ -45,6 +56,7 @@ func TestForceRescanMultifileSidecarApply(t *testing.T) { ctx := context.Background() admin, _ := moveTestAdminID(t, setup) + pinExtractorVersionOne(t, setup) libID, folder := audioTestLibrary(t, setup, fmt.Sprintf("Test Force Rescan %d", time.Now().UnixNano())) t.Cleanup(func() { deleteLibraries(t, setup, libID) }) @@ -82,6 +94,7 @@ func TestForceRescanSingleFileSidecarReapply(t *testing.T) { t.Cleanup(func() { _ = setup.Close() }) admin, _ := moveTestAdminID(t, setup) + pinExtractorVersionOne(t, setup) libID, folder := createTypedTestLibrary(t, setup, fmt.Sprintf("Test Force Single %d", time.Now().UnixNano()), "ebooks") t.Cleanup(func() { deleteLibraries(t, setup, libID) })