(t *testing.T)
| 658 | } |
| 659 | |
| 660 | func TestReparseNameCollision(t *testing.T) { |
| 661 | // Create project with model m1 |
| 662 | ctx := context.Background() |
| 663 | repo := makeRepo(t, map[string]string{ |
| 664 | `rill.yaml`: ``, |
| 665 | `models/m1.sql`: ` |
| 666 | SELECT 10 |
| 667 | `, |
| 668 | `models/nested/m1.sql`: ` |
| 669 | SELECT 20 |
| 670 | `, |
| 671 | `models/m2.sql`: ` |
| 672 | SELECT * FROM m1 |
| 673 | `, |
| 674 | }) |
| 675 | m1 := &Resource{ |
| 676 | Name: ResourceName{Kind: ResourceKindModel, Name: "m1"}, |
| 677 | Paths: []string{"/models/m1.sql"}, |
| 678 | ModelSpec: &runtimev1.ModelSpec{ |
| 679 | RefreshSchedule: &runtimev1.Schedule{RefUpdate: true}, |
| 680 | InputConnector: "duckdb", |
| 681 | InputProperties: must(structpb.NewStruct(map[string]any{"sql": "SELECT 10"})), |
| 682 | OutputConnector: "duckdb", |
| 683 | ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET, |
| 684 | }, |
| 685 | } |
| 686 | m1Nested := &Resource{ |
| 687 | Name: ResourceName{Kind: ResourceKindModel, Name: "m1"}, |
| 688 | Paths: []string{"/models/nested/m1.sql"}, |
| 689 | ModelSpec: &runtimev1.ModelSpec{ |
| 690 | RefreshSchedule: &runtimev1.Schedule{RefUpdate: true}, |
| 691 | InputConnector: "duckdb", |
| 692 | InputProperties: must(structpb.NewStruct(map[string]any{"sql": "SELECT 20"})), |
| 693 | OutputConnector: "duckdb", |
| 694 | ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET, |
| 695 | }, |
| 696 | } |
| 697 | m2 := &Resource{ |
| 698 | Name: ResourceName{Kind: ResourceKindModel, Name: "m2"}, |
| 699 | Paths: []string{"/models/m2.sql"}, |
| 700 | Refs: []ResourceName{{Kind: ResourceKindModel, Name: "m1"}}, |
| 701 | ModelSpec: &runtimev1.ModelSpec{ |
| 702 | RefreshSchedule: &runtimev1.Schedule{RefUpdate: true}, |
| 703 | InputConnector: "duckdb", |
| 704 | InputProperties: must(structpb.NewStruct(map[string]any{"sql": "SELECT * FROM m1"})), |
| 705 | OutputConnector: "duckdb", |
| 706 | ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET, |
| 707 | }, |
| 708 | } |
| 709 | p, err := Parse(ctx, repo, "", "", "duckdb", true) |
| 710 | require.NoError(t, err) |
| 711 | requireResourcesAndErrors(t, p, []*Resource{m1, m2}, []*runtimev1.ParseError{ |
| 712 | { |
| 713 | Message: "name collision", |
| 714 | FilePath: "/models/nested/m1.sql", |
| 715 | External: true, |
| 716 | }, |
| 717 | }) |
nothing calls this directly
no test coverage detected