@@ -68,3 +68,37 @@ func TestReadfile_NoAccess(t *testing.T) {
68
68
assert .True (t , result .IsError )
69
69
assert .Contains (t , fmt .Sprint (result .Content [0 ]), "access denied - path outside allowed directories" )
70
70
}
71
+
72
+ func TestSearchFiles_SameFilename (t * testing.T ) {
73
+ dir := t .TempDir ()
74
+
75
+ handler , err := NewFilesystemHandler ([]string {dir })
76
+ require .NoError (t , err )
77
+
78
+ err = os .MkdirAll (filepath .Join (dir , "sub1" , "sub2" ), 0755 )
79
+ assert .NoError (t , err )
80
+
81
+ file1 := filepath .Join (dir , "sub1" , "test.h" )
82
+ err = os .WriteFile (file1 , []byte ("foo" ), 0644 )
83
+ require .NoError (t , err )
84
+
85
+ file2 := filepath .Join (dir , "sub1" , "test.h" )
86
+ err = os .WriteFile (file2 , []byte ("foo" ), 0644 )
87
+ require .NoError (t , err )
88
+
89
+ request := mcp.CallToolRequest {}
90
+ request .Params .Name = "search_files"
91
+ request .Params .Arguments = map [string ]any {
92
+ "path" : dir ,
93
+ "pattern" : "test.h" ,
94
+ }
95
+
96
+ result , err := handler .handleSearchFiles (context .Background (), request )
97
+ require .NoError (t , err )
98
+ assert .False (t , result .IsError )
99
+ assert .Len (t , result .Content , 1 )
100
+
101
+ assert .Contains (t , result .Content [0 ].(mcp.TextContent ).Text , file1 )
102
+ assert .Contains (t , result .Content [0 ].(mcp.TextContent ).Text , file2 )
103
+
104
+ }
0 commit comments