encoding/openapi: implement structural schema
See https://kubernetes.io/blog/2019/06/20/crd-structural-schema/
This is needed to make generated schema compliant with CRDs.
Structural schema are momentarily enabled by requesting to
expand references. Even when not expanding, the generator
will strive to normalize the schema somewhat, however.
Change-Id: I36fc8bc0d0e41d1b47b8bed55462ab9d07cfc26f
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2803
Reviewed-by: Jason Wang <jasonwzm@google.com>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/encoding/openapi/openapi_test.go b/encoding/openapi/openapi_test.go
index 1459527..ea634ac 100644
--- a/encoding/openapi/openapi_test.go
+++ b/encoding/openapi/openapi_test.go
@@ -39,6 +39,10 @@
in, out string
config *Config
}{{
+ "structural.cue",
+ "structural.json",
+ resolveRefs,
+ }, {
"simple.cue",
"simple.json",
resolveRefs,
@@ -138,3 +142,27 @@
})
}
}
+
+// This is for debugging purposes. Do not remove.
+func TestX(t *testing.T) {
+ t.Skip()
+
+ var r cue.Runtime
+ inst, err := r.Compile("test", `
+ AnyField: "any value"
+ `)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ b, err := Gen(inst, &Config{
+ ExpandReferences: true,
+ })
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var out = &bytes.Buffer{}
+ _ = json.Indent(out, b, "", " ")
+ t.Error(out.String())
+}