Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add end to end tests to validate the generated JSON schema #1534

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,8 @@ jobs:
run: |
go run main.go bundle schema > schema.json
ajv -s schema.json -d ./bundle/tests/basic/databricks.yml

# Valid configuration should pass schema validation.
for file in ./bundle/tests/jsonschema/allowed/*.yml; do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything under bundle/tests has accompanying Go tests. I'd like to keep it that way so that you know which tests may be affected by changes. If someone reuses these YAML files for tests it introduces coupling.

Could you move this under bundle/schema/testdata?

ajv -s schema.json -d $file
done
2 changes: 1 addition & 1 deletion bundle/config/mutator/resolve_variable_references.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ func (m *resolveVariableReferences) Apply(ctx context.Context, b *bundle.Bundle)
normalized, _ := convert.Normalize(b.Config, root, convert.IncludeMissingFields)

// If the pattern is nil, we resolve references in the entire configuration.
root, err := dyn.MapByPattern(root, m.pattern, func(p dyn.Path, v dyn.Value) (dyn.Value, error) {
root, err := dyn.MapByPattern(root, m.pattern, func(_ dyn.Path, v dyn.Value) (dyn.Value, error) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated.

// Resolve variable references in all values.
return dynvar.Resolve(v, func(path dyn.Path) (dyn.Value, error) {
// Rewrite the shorthand path ${var.foo} into ${variables.foo.value}.
Expand Down
22 changes: 22 additions & 0 deletions bundle/tests/jsonschema/allowed/var-reference-int.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
bundle:
name: variable reference int

variables:
my_var:
description: does not matter
default: 1234

resources:
jobs:
foo:
name: def
tasks:
- task_key: abcd
run_job_task:
job_id: ${var.my_var}

targets:
staging:
default: true
variables:
my_var: 7890
18 changes: 18 additions & 0 deletions bundle/tests/jsonschema/allowed/var-reference.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
bundle:
name: variable reference string

variables:
my_var:
description: does not matter
default: "hello"

resources:
jobs:
foo:
name: ${var.my_var}

targets:
staging:
default: true
variables:
my_var: "world"
Loading