diff --git a/packager/go.mod b/packager/go.mod index e5a0946f..841a781e 100644 --- a/packager/go.mod +++ b/packager/go.mod @@ -1,7 +1,5 @@ module riverqueue.com/riverqueue/packager -go 1.25.0 - -toolchain go1.25.7 +go 1.26.0 require golang.org/x/mod v0.40.0 diff --git a/packager/go_version_test.go b/packager/go_version_test.go new file mode 100644 index 00000000..b00fa031 --- /dev/null +++ b/packager/go_version_test.go @@ -0,0 +1,42 @@ +package main + +import ( + goversion "go/version" + "os" + "path/filepath" + "testing" + + "golang.org/x/mod/modfile" +) + +func TestGoVersionCompatibleWithRiverUI(t *testing.T) { + t.Parallel() + + var ( + packagerGoVersion = goVersionFromModFile(t, "go.mod") + riverUIGoVersion = goVersionFromModFile(t, filepath.Join("..", "go.mod")) + ) + + if goversion.Compare("go"+packagerGoVersion, "go"+riverUIGoVersion) < 0 { + t.Fatalf("packager Go version %s must be at least River UI Go version %s", packagerGoVersion, riverUIGoVersion) + } +} + +func goVersionFromModFile(t *testing.T, path string) string { + t.Helper() + + contents, err := os.ReadFile(path) + if err != nil { + t.Fatalf("error reading %s: %v", path, err) + } + + parsed, err := modfile.Parse(path, contents, nil) + if err != nil { + t.Fatalf("error parsing %s: %v", path, err) + } + if parsed.Go == nil { + t.Fatalf("%s has no Go version", path) + } + + return parsed.Go.Version +}