github.com/IBM/fsgo@v0.0.0-20220920202152-e16fd2119d49/path_test.go (about)

     1  // Copyright 2022 IBM Inc. All rights reserved
     2  // Copyright © 2014 Steve Francia <spf@spf13.com>
     3  //
     4  // SPDX-License-Identifier: Apache2.0
     5  package fsgo
     6  
     7  import (
     8  	"fmt"
     9  	"os"
    10  	"testing"
    11  )
    12  
    13  func TestWalk(t *testing.T) {
    14  	defer removeAllTestFiles(t)
    15  	var testDir string
    16  	for i, fs := range Fss {
    17  		if i == 0 {
    18  			testDir = setupTestDirRoot(t, fs)
    19  		} else {
    20  			setupTestDirReusePath(t, fs, testDir)
    21  		}
    22  	}
    23  
    24  	outputs := make([]string, len(Fss))
    25  	for i, fs := range Fss {
    26  		walkFn := func(path string, info os.FileInfo, err error) error {
    27  			if err != nil {
    28  				t.Error("walkFn err:", err)
    29  			}
    30  			var size int64
    31  			if !info.IsDir() {
    32  				size = info.Size()
    33  			}
    34  			outputs[i] += fmt.Sprintln(path, info.Name(), size, info.IsDir(), err)
    35  			return nil
    36  		}
    37  		err := Walk(fs, testDir, walkFn)
    38  		if err != nil {
    39  			t.Error(err)
    40  		}
    41  	}
    42  	fail := false
    43  	for i, o := range outputs {
    44  		if i == 0 {
    45  			continue
    46  		}
    47  		if o != outputs[i-1] {
    48  			fail = true
    49  			break
    50  		}
    51  	}
    52  	if fail {
    53  		t.Log("Walk outputs not equal!")
    54  		for i, o := range outputs {
    55  			t.Log(Fss[i].Name() + "\n" + o)
    56  		}
    57  		t.Fail()
    58  	}
    59  }