MCPcopy
hub / github.com/uber-go/fx / TestModuleTrace

Function TestModuleTrace

app_test.go:773–861  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

771}
772
773func 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

Callers

nothing calls this directly

Calls 9

ModuleFunction · 0.85
getModuleBFunction · 0.85
NewSpiedFunction · 0.85
HelperMethod · 0.80
SelectByTypeNameMethod · 0.80
EventsMethod · 0.80
RunMethod · 0.80
ErrMethod · 0.45
LenMethod · 0.45

Tested by

no test coverage detected