File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed
Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -131,6 +131,13 @@ func (c *Container) setConnections() error {
131131 resType := reflect .TypeOf (node .Val .Resolver )
132132 for i := 0 ; i < resType .NumIn (); i ++ {
133133 dependencyType := resType .In (i )
134+
135+ if node .Val .Type () == dependencyType {
136+ return fmt .Errorf ("circular depndency found: %v" , []* graph.Node [resolver.DependencyResolver [any ]]{
137+ node ,
138+ })
139+ }
140+
134141 dependencyNode , err := c .getNodeFor (dependencyType )
135142 if err != nil {
136143 return err
Original file line number Diff line number Diff line change @@ -43,6 +43,17 @@ func TestDetectCircularDependencies(t *testing.T) {
4343 require .NoError (t , err , "circular dependencies should not be detected" )
4444}
4545
46+ func TestDetectCircularDependencies_SelfReference (t * testing.T ) {
47+ cont := container .New ()
48+
49+ cont .AddDependency (func (s MyService ) MyService {
50+ return MyService {}
51+ })
52+
53+ _ , err := cont .DetectCircularDependencies ()
54+ require .Error (t , err , "should detect self reference" )
55+ }
56+
4657func TestResolve (t * testing.T ) {
4758 cont := container .New ()
4859
@@ -99,3 +110,20 @@ func TestResolveToken(t *testing.T) {
99110 require .NoError (t , err )
100111 require .NotNil (t , buf )
101112}
113+
114+ func TestResolveToken_WithDependencies (t * testing.T ) {
115+ cont := container .New ()
116+
117+ dependantResolver := func (service MyService ) * bytes.Buffer {
118+ return bytes .NewBuffer ([]byte {})
119+ }
120+
121+ err := cont .AddTokenDependency ("buffer" , dependantResolver )
122+ require .NoError (t , err )
123+
124+ cont .AddDependency (NewService )
125+
126+ buf , err := container .ResolveToken [* bytes.Buffer ](cont , "buffer" )
127+ require .NoError (t , err )
128+ require .NotNil (t , buf )
129+ }
You can’t perform that action at this time.
0 commit comments