Skip to content

Commit d0707b6

Browse files
committed
Add test
1 parent e19e6f4 commit d0707b6

File tree

1 file changed

+71
-3
lines changed

1 file changed

+71
-3
lines changed

walk_test.go

Lines changed: 71 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package pathlib
22

33
import (
44
"fmt"
5+
"io/ioutil"
56
"reflect"
67
"testing"
78

@@ -29,15 +30,18 @@ type WalkSuiteAll struct {
2930
func (w *WalkSuiteAll) SetupTest() {
3031
var err error
3132

32-
w.Fs = afero.NewMemMapFs()
33-
w.root = NewPathAfero("/", w.Fs)
33+
tmpdir, err := ioutil.TempDir("", "")
34+
require.NoError(w.T(), err)
35+
36+
w.Fs = afero.NewOsFs()
37+
w.root = NewPathAfero(tmpdir, w.Fs)
3438
w.walk, err = NewWalk(w.root)
3539
require.NoError(w.T(), err)
3640
w.walk.Opts.Algorithm = w.algorithm
3741
}
3842

3943
func (w *WalkSuiteAll) TeardownTest() {
40-
44+
require.NoError(w.T(), w.root.RemoveAll())
4145
}
4246

4347
func (w *WalkSuiteAll) TestHello() {
@@ -105,6 +109,70 @@ func (w *WalkSuiteAll) TestWalkFuncErr() {
105109
walkFunc.AssertNumberOfCalls(w.T(), "Execute", 1)
106110
}
107111

112+
func (w *WalkSuiteAll) TestPassesQuerySpecification() {
113+
file := w.root.Join("file.txt")
114+
require.NoError(w.T(), file.WriteFile([]byte("hello"), 0o644))
115+
116+
stat, err := file.Stat()
117+
require.NoError(w.T(), err)
118+
119+
// File tests
120+
w.walk.Opts.VisitFiles = false
121+
passes, err := w.walk.passesQuerySpecification(stat)
122+
require.NoError(w.T(), err)
123+
w.False(passes, "specified to not visit files, but passed anyway")
124+
125+
w.walk.Opts.VisitFiles = true
126+
passes, err = w.walk.passesQuerySpecification(stat)
127+
require.NoError(w.T(), err)
128+
w.True(passes, "specified to visit files, but didn't pass")
129+
130+
w.walk.Opts.MinimumFileSize = 100
131+
passes, err = w.walk.passesQuerySpecification(stat)
132+
require.NoError(w.T(), err)
133+
w.False(passes, "specified large file size, but passed anyway")
134+
135+
w.walk.Opts.MinimumFileSize = 0
136+
passes, err = w.walk.passesQuerySpecification(stat)
137+
require.NoError(w.T(), err)
138+
w.True(passes, "specified smallfile size, but didn't pass")
139+
140+
// Directory tests
141+
dir := w.root.Join("subdir")
142+
require.NoError(w.T(), dir.MkdirAll(0o777))
143+
144+
stat, err = dir.Stat()
145+
require.NoError(w.T(), err)
146+
147+
w.walk.Opts.VisitDirs = false
148+
passes, err = w.walk.passesQuerySpecification(stat)
149+
require.NoError(w.T(), err)
150+
w.False(passes, "specified to not visit directories, but passed anyway")
151+
152+
w.walk.Opts.VisitDirs = true
153+
passes, err = w.walk.passesQuerySpecification(stat)
154+
require.NoError(w.T(), err)
155+
w.True(passes, "specified to visit directories, but didn't pass")
156+
157+
// Symlink tests
158+
symlink := w.root.Join("symlink")
159+
require.NoError(w.T(), symlink.Symlink(file))
160+
161+
stat, lstatCalled, err := symlink.Lstat()
162+
require.NoError(w.T(), err)
163+
require.True(w.T(), lstatCalled)
164+
165+
w.walk.Opts.VisitSymlinks = false
166+
passes, err = w.walk.passesQuerySpecification(stat)
167+
require.NoError(w.T(), err)
168+
w.False(passes, "specified to not visit symlinks, but passed anyway")
169+
170+
w.walk.Opts.VisitSymlinks = true
171+
passes, err = w.walk.passesQuerySpecification(stat)
172+
require.NoError(w.T(), err)
173+
w.True(passes, "specified to visit symlinks, but didn't pass")
174+
}
175+
108176
func TestWalkSuite(t *testing.T) {
109177
for _, algorithm := range []Algorithm{
110178
AlgorithmBasic,

0 commit comments

Comments
 (0)