diff --git a/.mk/minimal_schema.mk b/.mk/minimal_schema.mk index 13d57e03fd3..91d5ab377cf 100644 --- a/.mk/minimal_schema.mk +++ b/.mk/minimal_schema.mk @@ -1,10 +1,6 @@ -minimal_schema: provider/cmd/pulumi-resource-aws/schema-minimal-embed.json - .PHONY: minimal_schema - -provider/cmd/pulumi-resource-aws/schema-minimal-embed.json: provider/cmd/pulumi-resource-aws/schema.json - echo "Computing minimal schema" - cd provider/cmd/pulumi-resource-aws && PULUMI_AWS_MINIMAL_SCHEMA=true VERSION=$(VERSION_GENERIC) go generate +minimal_schema: + @(cd provider/cmd/pulumi-resource-aws && PULUMI_AWS_MINIMAL_SCHEMA=true VERSION=$(VERSION_GENERIC) go generate) # In build_provider.yml workflow, minimal schema needs to be rebuilt right before the provider binary. bin/linux-amd64/$(PROVIDER): minimal_schema diff --git a/examples/minimal_schema_test.go b/examples/minimal_schema_test.go new file mode 100644 index 00000000000..f312bbe2518 --- /dev/null +++ b/examples/minimal_schema_test.go @@ -0,0 +1,45 @@ +// Copyright 2016-2024, Pulumi Corporation. All rights reserved. +//go:build nodejs || all +// +build nodejs all + +package examples + +import ( + "bytes" + "encoding/json" + "os" + "os/exec" + "path/filepath" + "testing" + + "github.com/pulumi/pulumi/pkg/v3/codegen/schema" + "github.com/pulumi/pulumi/pkg/v3/codegen/testing/utils" + "github.com/stretchr/testify/require" +) + +func TestMinimalSchema(t *testing.T) { + var buf bytes.Buffer + schemaSource := filepath.Join("..", "bin", "pulumi-resource-aws") + t.Logf("pulumi package get-schema %s", schemaSource) + cmd := exec.Command("pulumi", "package", "get-schema", schemaSource) + cmd.Env = append(os.Environ(), "PULUMI_AWS_MINIMAL_SCHEMA=true") + cmd.Stdout = &buf + err := cmd.Run() + cmd.Stderr = os.Stderr + if err != nil { + t.Logf("%s", buf.String()) + require.NoError(t, err) + } + var packageSpec schema.PackageSpec + err = json.Unmarshal(buf.Bytes(), &packageSpec) + require.NoError(t, err) + t.Logf("Parsed minimal schema") + loader := schema.NewPluginLoader(utils.NewHostWithProviders(t.TempDir())) + _, diags, err := schema.BindSpec(packageSpec, loader) + require.NoError(t, err) + for _, d := range diags { + t.Logf("sev=%v summary: %s\n detail: %s", d.Severity, d.Summary, d.Detail) + } + require.False(t, diags.HasErrors()) + t.Logf("Validated minimal schema") +}