@@ -104,3 +104,33 @@ func TestMergedOpen(t *testing.T) {
104104
105105 require .NoError (t , file .Close ())
106106}
107+
108+ func TestReadDirIsSorted (t * testing.T ) {
109+ fs1 := fstest.MapFS {
110+ "dir" : & fstest.MapFile {Mode : fs .ModeDir },
111+ "dir/b" : & fstest.MapFile {Mode : fs .ModeDir },
112+ "dir/a" : & fstest.MapFile {Mode : fs .ModeDir },
113+ }
114+ fs2 := fstest.MapFS {
115+ "dir" : & fstest.MapFile {Mode : fs .ModeDir },
116+ "dir/d" : & fstest.MapFile {Mode : fs .ModeDir },
117+ "dir/c" : & fstest.MapFile {Mode : fs .ModeDir },
118+ }
119+ fs3 := fstest.MapFS {
120+ "dir" : & fstest.MapFile {Mode : fs .ModeDir },
121+ "dir/3" : & fstest.MapFile {Mode : fs .ModeDir },
122+ "dir/2" : & fstest.MapFile {Mode : fs .ModeDir },
123+ "dir/1" : & fstest.MapFile {Mode : fs .ModeDir },
124+ }
125+
126+ mfs := mergefs .Merge (fs1 , fs2 , fs3 )
127+ entries , err := fs .ReadDir (mfs , "dir" )
128+ require .NoError (t , err )
129+
130+ names := make ([]string , len (entries ))
131+ for i , e := range entries {
132+ names [i ] = e .Name ()
133+ }
134+
135+ require .Equal (t , []string {"1" , "2" , "3" , "a" , "b" , "c" , "d" }, names )
136+ }
0 commit comments