MCPcopy Index your code
hub / github.com/rilldata/rill / TestReparseRillYAML

Function TestReparseRillYAML

runtime/parser/parser_test.go:729–790  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

727}
728
729func TestReparseRillYAML(t *testing.T) {
730 ctx := context.Background()
731 repo := makeRepo(t, map[string]string{})
732
733 mdl := &Resource{
734 Name: ResourceName{Kind: ResourceKindModel, Name: "m1"},
735 Paths: []string{"/models/m1.sql"},
736 ModelSpec: &runtimev1.ModelSpec{
737 RefreshSchedule: &runtimev1.Schedule{RefUpdate: true},
738 InputConnector: "duckdb",
739 InputProperties: must(structpb.NewStruct(map[string]any{"sql": "SELECT 10"})),
740 OutputConnector: "duckdb",
741 ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET,
742 },
743 }
744 perr := &runtimev1.ParseError{
745 Message: "rill.yaml not found",
746 FilePath: "/rill.yaml",
747 }
748
749 // Parse empty project. Expect rill.yaml error.
750 p, err := Parse(ctx, repo, "", "", "duckdb", true)
751 require.NoError(t, err)
752 require.Nil(t, p.RillYAML)
753 requireResourcesAndErrors(t, p, nil, []*runtimev1.ParseError{perr})
754
755 // Add rill.yaml. Expect success.
756 putRepo(t, repo, map[string]string{
757 `rill.yaml`: ``,
758 })
759 diff, err := p.Reparse(ctx, []string{"/rill.yaml"})
760 require.NoError(t, err)
761 require.True(t, diff.Reloaded)
762 require.NotNil(t, p.RillYAML)
763 requireResourcesAndErrors(t, p, nil, nil)
764
765 // Remove rill.yaml and add a model. Expect reloaded.
766 deleteRepo(t, repo, "/rill.yaml")
767 putRepo(t, repo, map[string]string{"/models/m1.sql": "SELECT 10"})
768 diff, err = p.Reparse(ctx, []string{"/rill.yaml", "/models/m1.sql"})
769 require.NoError(t, err)
770 require.True(t, diff.Reloaded)
771 require.Nil(t, p.RillYAML)
772 requireResourcesAndErrors(t, p, []*Resource{mdl}, []*runtimev1.ParseError{perr})
773
774 // Edit model. Expect nothing to happen because rill.yaml is still broken.
775 putRepo(t, repo, map[string]string{"/models/m1.sql": "SELECT 20"})
776 diff, err = p.Reparse(ctx, []string{"/models/m1.sql"})
777 require.NoError(t, err)
778 require.Equal(t, &Diff{Skipped: true}, diff)
779 require.Nil(t, p.RillYAML)
780 requireResourcesAndErrors(t, p, []*Resource{mdl}, []*runtimev1.ParseError{perr})
781
782 // Fix rill.yaml. Expect reloaded.
783 mdl.ModelSpec.InputProperties = must(structpb.NewStruct(map[string]any{"sql": "SELECT 20"}))
784 putRepo(t, repo, map[string]string{"/rill.yaml": ""})
785 diff, err = p.Reparse(ctx, []string{"/rill.yaml"})
786 require.NoError(t, err)

Callers

nothing calls this directly

Calls 7

makeRepoFunction · 0.85
putRepoFunction · 0.85
deleteRepoFunction · 0.85
ReparseMethod · 0.80
mustFunction · 0.70
ParseFunction · 0.70

Tested by

no test coverage detected