Skip to content

Commit 752d0b2

Browse files
chore: add unit tests (#1821) (#1822)
Signed-off-by: Charles-Edouard Brétéché <[email protected]> Co-authored-by: Charles-Edouard Brétéché <[email protected]>
1 parent 81566dd commit 752d0b2

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

pkg/utils/fs/discover.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,22 @@ import (
1010
"k8s.io/apimachinery/pkg/util/sets"
1111
)
1212

13-
func DiscoverFolders(paths ...string) ([]string, error) {
13+
func discoverFolders(stat func(string) (os.FileInfo, error), walk func(string, filepath.WalkFunc) error, paths ...string) ([]string, error) {
14+
if stat == nil {
15+
stat = os.Stat
16+
}
17+
if walk == nil {
18+
walk = filepath.Walk
19+
}
1420
folders := sets.New[string]()
1521
var errors []error
1622
for _, path := range paths {
17-
_, err := os.Stat(path)
23+
_, err := stat(path)
1824
if err != nil {
1925
errors = append(errors, fmt.Errorf("error checking path %s: %v", path, err))
2026
continue
2127
}
22-
err = filepath.Walk(path, func(file string, info fs.FileInfo, err error) error {
28+
err = walk(path, func(file string, info fs.FileInfo, err error) error {
2329
if err != nil {
2430
return err
2531
}
@@ -37,3 +43,7 @@ func DiscoverFolders(paths ...string) ([]string, error) {
3743
}
3844
return sets.List(folders), nil
3945
}
46+
47+
func DiscoverFolders(paths ...string) ([]string, error) {
48+
return discoverFolders(nil, nil, paths...)
49+
}

pkg/utils/fs/discover_test.go

+37
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fs
22

33
import (
4+
"errors"
45
"os"
56
"path/filepath"
67
"testing"
@@ -35,3 +36,39 @@ func TestDiscoverFoldersWithError(t *testing.T) {
3536
_, err := DiscoverFolders(unreadableDir)
3637
assert.Error(t, err)
3738
}
39+
40+
func Test_discoverFolders(t *testing.T) {
41+
tests := []struct {
42+
name string
43+
stat func(string) (os.FileInfo, error)
44+
walk func(string, filepath.WalkFunc) error
45+
paths []string
46+
want []string
47+
wantErr bool
48+
}{{
49+
name: "stat error",
50+
paths: []string{"foo", "bar"},
51+
stat: func(string) (os.FileInfo, error) {
52+
return nil, errors.New("dummy")
53+
},
54+
wantErr: true,
55+
}, {
56+
name: "walk error",
57+
paths: []string{"foo", "bar"},
58+
walk: func(s string, wf filepath.WalkFunc) error {
59+
return errors.New("dummy")
60+
},
61+
wantErr: true,
62+
}}
63+
for _, tt := range tests {
64+
t.Run(tt.name, func(t *testing.T) {
65+
got, err := discoverFolders(tt.stat, tt.walk, tt.paths...)
66+
if tt.wantErr {
67+
assert.Error(t, err)
68+
} else {
69+
assert.NoError(t, err)
70+
}
71+
assert.Equal(t, tt.want, got)
72+
})
73+
}
74+
}

0 commit comments

Comments
 (0)