9
9
"fmt"
10
10
"io"
11
11
"io/fs"
12
+ "math/rand"
12
13
"os"
13
14
"path/filepath"
14
15
"runtime"
@@ -76,7 +77,17 @@ func TestIOFSNativeDirEntryWhenPossible(t *testing.T) {
76
77
t .Fatal (err )
77
78
}
78
79
79
- for i := 1 ; i <= 2 ; i ++ {
80
+ const numFiles = 10
81
+
82
+ var fileNumbers []int
83
+ for i := 0 ; i < numFiles ; i ++ {
84
+ fileNumbers = append (fileNumbers , i )
85
+ }
86
+ rand .Shuffle (len (fileNumbers ), func (i , j int ) {
87
+ fileNumbers [i ], fileNumbers [j ] = fileNumbers [j ], fileNumbers [i ]
88
+ })
89
+
90
+ for _ , i := range fileNumbers {
80
91
f , err := osfs .Create (fmt .Sprintf ("dir1/dir2/test%d.txt" , i ))
81
92
if err != nil {
82
93
t .Fatal (err )
@@ -89,25 +100,34 @@ func TestIOFSNativeDirEntryWhenPossible(t *testing.T) {
89
100
t .Fatal (err )
90
101
}
91
102
92
- assertDirEntries := func (entries []fs.DirEntry ) {
93
- if len (entries ) != 2 {
94
- t .Fatalf ("expected 2 , got %d" , len (entries ))
103
+ assertDirEntries := func (entries []fs.DirEntry , ordered bool ) {
104
+ if len (entries ) != numFiles {
105
+ t .Fatalf ("expected %d , got %d" , numFiles , len (entries ))
95
106
}
96
- for _ , entry := range entries {
107
+ for i , entry := range entries {
97
108
if _ , ok := entry .(dirEntry ); ok {
98
109
t .Fatal ("DirEntry not native" )
99
110
}
111
+ if ordered && entry .Name () != fmt .Sprintf ("test%d.txt" , i ) {
112
+ t .Fatalf ("expected %s, got %s" , fmt .Sprintf ("test%d.txt" , i ), entry .Name ())
113
+ }
100
114
}
101
115
}
102
116
103
117
dirEntries , err := dir2 .(fs.ReadDirFile ).ReadDir (- 1 )
104
118
if err != nil {
105
119
t .Fatal (err )
106
120
}
107
- assertDirEntries (dirEntries )
121
+ assertDirEntries (dirEntries , false )
108
122
109
123
iofs := NewIOFS (osfs )
110
124
125
+ dirEntries , err = iofs .ReadDir ("dir1/dir2" )
126
+ if err != nil {
127
+ t .Fatal (err )
128
+ }
129
+ assertDirEntries (dirEntries , true )
130
+
111
131
fileCount := 0
112
132
err = fs .WalkDir (iofs , "" , func (path string , d fs.DirEntry , err error ) error {
113
133
if err != nil {
@@ -130,8 +150,8 @@ func TestIOFSNativeDirEntryWhenPossible(t *testing.T) {
130
150
t .Fatal (err )
131
151
}
132
152
133
- if fileCount != 2 {
134
- t .Fatalf ("expected 2 , got %d" , fileCount )
153
+ if fileCount != numFiles {
154
+ t .Fatalf ("expected %d , got %d" , numFiles , fileCount )
135
155
}
136
156
137
157
}
0 commit comments