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

Function TestReparseSourceModelCollision

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

Source from the content-addressed store, hash-verified

599}
600
601func TestReparseSourceModelCollision(t *testing.T) {
602 // Create project with model m1
603 ctx := context.Background()
604 repo := makeRepo(t, map[string]string{
605 `rill.yaml`: ``,
606 `models/m1.sql`: `
607SELECT 10
608 `,
609 })
610 m1 := &Resource{
611 Name: ResourceName{Kind: ResourceKindModel, Name: "m1"},
612 Paths: []string{"/models/m1.sql"},
613 ModelSpec: &runtimev1.ModelSpec{
614 RefreshSchedule: &runtimev1.Schedule{RefUpdate: true},
615 InputConnector: "duckdb",
616 InputProperties: must(structpb.NewStruct(map[string]any{"sql": "SELECT 10"})),
617 OutputConnector: "duckdb",
618 ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET,
619 },
620 }
621 p, err := Parse(ctx, repo, "", "", "duckdb", true)
622 require.NoError(t, err)
623 requireResourcesAndErrors(t, p, []*Resource{m1}, nil)
624
625 // Add colliding source m1
626 putRepo(t, repo, map[string]string{
627 `sources/m1.yaml`: `
628connector: s3
629path: hello
630`,
631 })
632 s1 := &Resource{
633 Name: ResourceName{Kind: ResourceKindSource, Name: "m1"},
634 Paths: []string{"/sources/m1.yaml"},
635 }
636 diff, err := p.Reparse(ctx, s1.Paths)
637 require.NoError(t, err)
638 requireResourcesAndErrors(t, p, []*Resource{m1}, []*runtimev1.ParseError{
639 {
640 Message: "name collision",
641 FilePath: "/sources/m1.yaml",
642 },
643 })
644 require.Equal(t, &Diff{
645 Added: nil,
646 Deleted: nil,
647 }, diff)
648
649 // Remove colliding source, verify model is restored
650 deleteRepo(t, repo, "/sources/m1.yaml")
651 diff, err = p.Reparse(ctx, s1.Paths)
652 require.NoError(t, err)
653 requireResourcesAndErrors(t, p, []*Resource{m1}, nil)
654 require.Equal(t, &Diff{
655 Added: nil,
656 Deleted: nil,
657 }, diff)
658}

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