test: derive pluginsdk anchor version dynamically in plugin scaffolds

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Alex Dunmow 2026-07-07 17:49:23 +08:00
parent 4f3636d66d
commit 338c41c3c8

View File

@ -11,10 +11,7 @@ import (
func TestCheckSafetySkipsRPCCheckForPluginWithoutRPCs(t *testing.T) {
pluginRoot := t.TempDir()
sdkVersion, err := currentCMSCoreSDKVersion()
if err != nil {
t.Fatalf("currentCMSCoreSDKVersion: %v", err)
}
sdkVersion := scaffoldPluginSDKVersion(t)
writeTestFile(t, filepath.Join(pluginRoot, "plugin.mod"), "[plugin]\nname = \"example\"\nversion = \"1.0.0\"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "go.mod"), "module example.com/plugin\n\ngo 1.26.2\n\nrequire git.dev.alexdunmow.com/block/pluginsdk "+sdkVersion+"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "main.go"), "package example\n", 0644)
@ -43,10 +40,7 @@ func TestCheckSafetySkipsRPCCheckForPluginWithoutRPCs(t *testing.T) {
func TestCheckSafetyTypechecksExternalPluginFrontendWithWorkspaceDeps(t *testing.T) {
pluginRoot := t.TempDir()
pluginWebDir := filepath.Join(pluginRoot, "web")
sdkVersion, err := currentCMSCoreSDKVersion()
if err != nil {
t.Fatalf("currentCMSCoreSDKVersion: %v", err)
}
sdkVersion := scaffoldPluginSDKVersion(t)
realRepoRoot := blockNinjaRepoRoot()
relESLintConfig, err := filepath.Rel(pluginWebDir, filepath.Join(realRepoRoot, "web", "eslint.config.js"))
if err != nil {
@ -117,10 +111,7 @@ func Example() string {
func TestCheckSafetyFailsStandalonePluginReplaceDirective(t *testing.T) {
pluginRoot := t.TempDir()
sdkVersion, err := currentCMSCoreSDKVersion()
if err != nil {
t.Fatalf("currentCMSCoreSDKVersion: %v", err)
}
sdkVersion := scaffoldPluginSDKVersion(t)
writeTestFile(t, filepath.Join(pluginRoot, "plugin.mod"), "[plugin]\nname = \"example\"\nversion = \"1.0.0\"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "go.mod"), "module example.com/plugin\n\ngo 1.26.2\n\nrequire git.dev.alexdunmow.com/block/pluginsdk "+sdkVersion+"\n\nreplace git.dev.alexdunmow.com/block/pluginsdk => ../block-pluginsdk\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "main.go"), "package example\n", 0644)
@ -145,10 +136,7 @@ func TestCheckSafetyFailsStandalonePluginReplaceDirective(t *testing.T) {
func TestCheckSafetyFailsStandalonePluginSQLCUUIDStringOverrides(t *testing.T) {
pluginRoot := t.TempDir()
sdkVersion, err := currentCMSCoreSDKVersion()
if err != nil {
t.Fatalf("currentCMSCoreSDKVersion: %v", err)
}
sdkVersion := scaffoldPluginSDKVersion(t)
writeTestFile(t, filepath.Join(pluginRoot, "plugin.mod"), "[plugin]\nname = \"example\"\nversion = \"1.0.0\"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "go.mod"), "module example.com/plugin\n\ngo 1.26.2\n\nrequire git.dev.alexdunmow.com/block/pluginsdk "+sdkVersion+"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "main.go"), "package example\n", 0644)
@ -193,10 +181,7 @@ sql:
func TestCheckSafetyWarnsOnStandalonePluginGoAnyUsage(t *testing.T) {
pluginRoot := t.TempDir()
sdkVersion, err := currentCMSCoreSDKVersion()
if err != nil {
t.Fatalf("currentCMSCoreSDKVersion: %v", err)
}
sdkVersion := scaffoldPluginSDKVersion(t)
writeTestFile(t, filepath.Join(pluginRoot, "plugin.mod"), "[plugin]\nname = \"example\"\nversion = \"1.0.0\"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "go.mod"), "module example.com/plugin\n\ngo 1.26.2\n\nrequire git.dev.alexdunmow.com/block/pluginsdk "+sdkVersion+"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "main.go"), `package example
@ -231,10 +216,7 @@ type Payload struct {
func TestCheckSafetyFailsStandalonePluginSQLCCompile(t *testing.T) {
pluginRoot := t.TempDir()
sdkVersion, err := currentCMSCoreSDKVersion()
if err != nil {
t.Fatalf("currentCMSCoreSDKVersion: %v", err)
}
sdkVersion := scaffoldPluginSDKVersion(t)
writeTestFile(t, filepath.Join(pluginRoot, "plugin.mod"), "[plugin]\nname = \"example\"\nversion = \"1.0.0\"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "go.mod"), "module example.com/plugin\n\ngo 1.26.2\n\nrequire git.dev.alexdunmow.com/block/pluginsdk "+sdkVersion+"\n", 0644)
writeTestFile(t, filepath.Join(pluginRoot, "main.go"), "package example\n", 0644)
@ -695,6 +677,21 @@ func writeExecutableFile(t *testing.T, path string, content string) string {
return path
}
// scaffoldPluginSDKVersion resolves the pluginsdk pin the same way check 2c's
// version anchor does (currentCMSPluginSDKVersion), so scaffolded go.mod fixtures
// track the CMS backend's pin instead of drifting against a hardcoded number.
func scaffoldPluginSDKVersion(t *testing.T) string {
t.Helper()
v, err := currentCMSPluginSDKVersion()
if err != nil {
t.Fatalf("currentCMSPluginSDKVersion: %v", err)
}
if v == "" {
return "v0.0.0"
}
return v
}
func writeTestFile(t *testing.T, path string, content string, mode os.FileMode) {
t.Helper()
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {