(t *testing.T)
| 771 | } |
| 772 | |
| 773 | func TestModuleTrace(t *testing.T) { |
| 774 | t.Parallel() |
| 775 | |
| 776 | moduleC := Module( |
| 777 | "ModuleC", |
| 778 | getModuleB(), |
| 779 | ) |
| 780 | |
| 781 | app, spy := NewSpied(moduleC) |
| 782 | require.NoError(t, app.Err()) |
| 783 | |
| 784 | wantTrace, err := regexp.Compile( |
| 785 | // Provide/decorate itself, initialized via init. |
| 786 | "^go.uber.org/fx_test.init \\(.*fx/app_test.go:.*\\)\n" + |
| 787 | // ModuleA initialized via init. |
| 788 | "go.uber.org/fx_test.init \\(.*fx/app_test.go:.*\\) \\(ModuleA\\)\n" + |
| 789 | // ModuleB from getModuleB. |
| 790 | "go.uber.org/fx_test.getModuleB \\(.*fx/app_test.go:.*\\) \\(ModuleB\\)\n" + |
| 791 | // ModuleC above. |
| 792 | "go.uber.org/fx_test.TestModuleTrace \\(.*fx/app_test.go:.*\\) \\(ModuleC\\)\n" + |
| 793 | // Top-level app & corresponding module created by NewSpied. |
| 794 | "go.uber.org/fx_test.NewSpied \\(.*fx/app_test.go:.*\\)$", |
| 795 | ) |
| 796 | require.NoError(t, err, "test regexp compilation error") |
| 797 | |
| 798 | for _, tt := range []struct { |
| 799 | desc string |
| 800 | getTrace func(t *testing.T) []string |
| 801 | }{ |
| 802 | { |
| 803 | desc: "Provide", |
| 804 | getTrace: func(t *testing.T) []string { |
| 805 | t.Helper() |
| 806 | var event *fxevent.Provided |
| 807 | for _, e := range spy.Events().SelectByTypeName("Provided") { |
| 808 | pe, ok := e.(*fxevent.Provided) |
| 809 | if !ok { |
| 810 | continue |
| 811 | } |
| 812 | |
| 813 | if strings.HasSuffix(pe.ConstructorName, "getInt()") { |
| 814 | event = pe |
| 815 | break |
| 816 | } |
| 817 | } |
| 818 | require.NotNil(t, event, "could not find provide event for getInt()") |
| 819 | return event.ModuleTrace |
| 820 | }, |
| 821 | }, |
| 822 | { |
| 823 | desc: "Decorate", |
| 824 | getTrace: func(t *testing.T) []string { |
| 825 | t.Helper() |
| 826 | events := spy.Events().SelectByTypeName("Decorated") |
| 827 | require.Len(t, events, 1) |
| 828 | event, ok := events[0].(*fxevent.Decorated) |
| 829 | require.True(t, ok) |
| 830 | return event.ModuleTrace |
nothing calls this directly
no test coverage detected