@@ -18,6 +18,7 @@ import (
1818 "bytes"
1919 "fmt"
2020 "io"
21+ iofs "io/fs"
2122 "io/ioutil"
2223 "os"
2324 "path/filepath"
@@ -530,22 +531,43 @@ func TestReaddirSimple(t *testing.T) {
530531
531532func TestReaddir (t * testing.T ) {
532533 defer removeAllTestFiles (t )
533- for num := 0 ; num < 6 ; num ++ {
534+ const nums = 6
535+ for num := 0 ; num < nums ; num ++ {
534536 outputs := make ([]string , len (Fss ))
535537 infos := make ([]string , len (Fss ))
536538 for i , fs := range Fss {
537539 testSubDir := setupTestDir (t , fs )
538- //tDir := filepath.Dir(testSubDir)
539540 root , err := fs .Open (testSubDir )
540541 if err != nil {
541542 t .Fatal (err )
542543 }
543- defer root .Close ()
544544
545- for j := 0 ; j < 6 ; j ++ {
545+ infosn := make ([]string , nums )
546+
547+ for j := 0 ; j < nums ; j ++ {
546548 info , err := root .Readdir (num )
547549 outputs [i ] += fmt .Sprintf ("%v Error: %v\n " , myFileInfo (info ), err )
548- infos [i ] += fmt .Sprintln (len (info ), err )
550+ s := fmt .Sprintln (len (info ), err )
551+ infosn [j ] = s
552+ infos [i ] += s
553+ }
554+ root .Close ()
555+
556+ // Also check fs.ReadDirFile interface if implemented
557+ if _ , ok := root .(iofs.ReadDirFile ); ok {
558+ root , err = fs .Open (testSubDir )
559+ if err != nil {
560+ t .Fatal (err )
561+ }
562+ defer root .Close ()
563+
564+ for j := 0 ; j < nums ; j ++ {
565+ dirEntries , err := root .(iofs.ReadDirFile ).ReadDir (num )
566+ s := fmt .Sprintln (len (dirEntries ), err )
567+ if s != infosn [j ] {
568+ t .Fatalf ("%s: %s != %s" , fs .Name (), s , infosn [j ])
569+ }
570+ }
549571 }
550572 }
551573
0 commit comments