...
1
2
3
4 package pathutil
5
6 import (
7 "os"
8 "path/filepath"
9 "testing"
10
11 "github.com/stretchr/testify/assert"
12 )
13
14 func TestSubDirsWithFile(t *testing.T) {
15 var tests = []struct {
16 name string
17 fileName string
18 recurse bool
19 outFilesCount int
20 }{
21 {
22 name: "dirs-with-file-recurse",
23 fileName: "Krmfile",
24 outFilesCount: 3,
25 recurse: true,
26 },
27 {
28 name: "dirs-with-non-existent-file-recurse",
29 fileName: "non-existent-file.txt",
30 outFilesCount: 0,
31 recurse: true,
32 },
33 {
34 name: "dir-with-file-no-recurse",
35 fileName: "Krmfile",
36 outFilesCount: 1,
37 recurse: false,
38 },
39 }
40
41 dir := t.TempDir()
42 err := createTestDirStructure(dir)
43 if !assert.NoError(t, err) {
44 t.FailNow()
45 }
46
47 for i := range tests {
48 test := tests[i]
49 t.Run(test.name, func(t *testing.T) {
50 res, err := DirsWithFile(dir, test.fileName, test.recurse)
51 if !assert.NoError(t, err) {
52 t.FailNow()
53 }
54 if !assert.Equal(t, test.outFilesCount, len(res)) {
55 t.FailNow()
56 }
57 })
58 }
59 }
60
61 func createTestDirStructure(dir string) error {
62
72 err := os.MkdirAll(filepath.Join(dir, "subpkg1/subdir1"), 0777|os.ModeDir)
73 if err != nil {
74 return err
75 }
76 err = os.MkdirAll(filepath.Join(dir, "subpkg2"), 0777|os.ModeDir)
77 if err != nil {
78 return err
79 }
80 err = os.WriteFile(filepath.Join(dir, "subpkg1", "Krmfile"), []byte(""), 0644)
81 if err != nil {
82 return err
83 }
84 err = os.WriteFile(filepath.Join(dir, "subpkg2", "Krmfile"), []byte(""), 0644)
85 if err != nil {
86 return err
87 }
88 err = os.WriteFile(filepath.Join(dir, "Krmfile"), []byte(""), 0644)
89 if err != nil {
90 return err
91 }
92 return nil
93 }
94
View as plain text