mirror of https://github.com/databricks/cli.git
more tests
This commit is contained in:
parent
e24725d230
commit
460eeb928d
|
@ -11,383 +11,6 @@ import (
|
||||||
|
|
||||||
// TODO: Add a test that checks the primitive overrides for reference regexs wor.
|
// TODO: Add a test that checks the primitive overrides for reference regexs wor.
|
||||||
|
|
||||||
func TestStructOfStructsSchema(t *testing.T) {
|
|
||||||
type Bar struct {
|
|
||||||
A int `json:"a"`
|
|
||||||
B string `json:"b,string"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Foo struct {
|
|
||||||
Bar Bar `json:"bar"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type MyStruct struct {
|
|
||||||
Foo Foo `json:"foo"`
|
|
||||||
}
|
|
||||||
|
|
||||||
elem := MyStruct{}
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"foo": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"bar": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"a": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"pattern": "\\$\\{([a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)*(\\[[0-9]+\\])*)\\}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"b": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"foo"
|
|
||||||
]
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStructOfMapsSchema(t *testing.T) {
|
|
||||||
type Bar struct {
|
|
||||||
MyMap map[string]int `json:"my_map"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Foo struct {
|
|
||||||
Bar Bar `json:"bar"`
|
|
||||||
}
|
|
||||||
|
|
||||||
elem := Foo{}
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"bar": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"my_map": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"pattern": "\\$\\{([a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)*(\\[[0-9]+\\])*)\\}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"my_map"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStructOfSliceSchema(t *testing.T) {
|
|
||||||
type Bar struct {
|
|
||||||
MySlice []string `json:"my_slice"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Foo struct {
|
|
||||||
Bar Bar `json:"bar"`
|
|
||||||
}
|
|
||||||
|
|
||||||
elem := Foo{}
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"bar": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"my_slice": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"my_slice"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"bar"
|
|
||||||
]
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMapOfStructSchema(t *testing.T) {
|
|
||||||
type Foo struct {
|
|
||||||
MyInt int `json:"my_int"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var elem map[string]Foo
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"my_int": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"pattern": "\\$\\{([a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)*(\\[[0-9]+\\])*)\\}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"my_int"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMapOfMapSchema(t *testing.T) {
|
|
||||||
var elem map[string]map[string]int
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"pattern": "\\$\\{([a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)*(\\[[0-9]+\\])*)\\}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMapOfSliceSchema(t *testing.T) {
|
|
||||||
var elem map[string][]string
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSliceOfSliceSchema(t *testing.T) {
|
|
||||||
var elem [][]string
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSliceOfMapSchema(t *testing.T) {
|
|
||||||
var elem []map[string]int
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"pattern": "\\$\\{([a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)*(\\[[0-9]+\\])*)\\}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSliceOfStructSchema(t *testing.T) {
|
|
||||||
type Foo struct {
|
|
||||||
MyInt int `json:"my_int"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var elem []Foo
|
|
||||||
|
|
||||||
schema, err := New(reflect.TypeOf(elem), nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
jsonSchema, err := json.MarshalIndent(schema, " ", " ")
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
expected :=
|
|
||||||
`{
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"my_int": {
|
|
||||||
"anyOf": [
|
|
||||||
{
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"pattern": "\\$\\{([a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\.[a-zA-Z]+([-_]?[a-zA-Z0-9]+)*(\\[[0-9]+\\])*)*(\\[[0-9]+\\])*)\\}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false,
|
|
||||||
"required": [
|
|
||||||
"my_int"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
t.Log("[DEBUG] actual: ", string(jsonSchema))
|
|
||||||
t.Log("[DEBUG] expected: ", expected)
|
|
||||||
assert.Equal(t, expected, string(jsonSchema))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestErrorWithTrace(t *testing.T) {
|
func TestErrorWithTrace(t *testing.T) {
|
||||||
tracker := newTracker()
|
tracker := newTracker()
|
||||||
dummyType := reflect.TypeOf(struct{}{})
|
dummyType := reflect.TypeOf(struct{}{})
|
||||||
|
|
Loading…
Reference in New Issue