Skip to content

Commit 5a57733

Browse files
authored
Merge pull request #10 from arduino/add_ci_runner
Added CI workflow / Fixed IsDirCheck and ExistCheck methods
2 parents 0430fee + 4b51e48 commit 5a57733

File tree

3 files changed

+105
-59
lines changed

3 files changed

+105
-59
lines changed

.github/workflows/test.yaml

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: test
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
test-matrix:
9+
strategy:
10+
matrix:
11+
operating-system:
12+
[
13+
ubuntu-latest,
14+
ubuntu-18.04,
15+
windows-latest,
16+
windows-2016,
17+
macos-latest,
18+
]
19+
20+
runs-on: ${{ matrix.operating-system }}
21+
22+
steps:
23+
- name: Disable EOL conversions
24+
run: git config --global core.autocrlf false
25+
26+
- name: Checkout
27+
uses: actions/checkout@v2
28+
29+
- name: Install Go
30+
uses: actions/setup-go@v2
31+
with:
32+
go-version: "1.16"
33+
34+
- name: Run unit tests
35+
run: go test -v ./... -coverprofile=coverage_unit.txt
36+
37+
- name: Send unit tests coverage to Codecov
38+
uses: codecov/codecov-action@v1
39+
with:
40+
file: ./coverage_unit.txt
41+
flags: unit

paths.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"os"
3737
"path/filepath"
3838
"strings"
39+
"syscall"
3940
"time"
4041

4142
"github.com/pkg/errors"
@@ -274,6 +275,9 @@ func (p *Path) ExistCheck() (bool, error) {
274275
if os.IsNotExist(err) {
275276
return false, nil
276277
}
278+
if err.(*os.PathError).Err == syscall.ENOTDIR {
279+
return false, nil
280+
}
277281
return false, err
278282
}
279283

@@ -299,9 +303,6 @@ func (p *Path) IsDirCheck() (bool, error) {
299303
if err == nil {
300304
return info.IsDir(), nil
301305
}
302-
if os.IsNotExist(err) {
303-
return false, nil
304-
}
305306
return false, err
306307
}
307308

paths_test.go

+60-56
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ import (
3838
"github.com/stretchr/testify/require"
3939
)
4040

41+
func pathEqualsTo(t *testing.T, expected string, actual *Path) {
42+
require.Equal(t, expected, filepath.ToSlash(actual.String()))
43+
}
44+
4145
func TestPathNew(t *testing.T) {
4246
test1 := New("path")
4347
require.Equal(t, "path", test1.String())
@@ -54,7 +58,7 @@ func TestPathNew(t *testing.T) {
5458

5559
func TestPath(t *testing.T) {
5660
testPath := New("_testdata")
57-
require.Equal(t, "_testdata", testPath.String())
61+
pathEqualsTo(t, "_testdata", testPath)
5862
isDir, err := testPath.IsDirCheck()
5963
require.True(t, isDir)
6064
require.NoError(t, err)
@@ -67,7 +71,7 @@ func TestPath(t *testing.T) {
6771
require.False(t, testPath.NotExist())
6872

6973
folderPath := testPath.Join("folder")
70-
require.Equal(t, "_testdata/folder", folderPath.String())
74+
pathEqualsTo(t, "_testdata/folder", folderPath)
7175
isDir, err = folderPath.IsDirCheck()
7276
require.True(t, isDir)
7377
require.NoError(t, err)
@@ -81,7 +85,7 @@ func TestPath(t *testing.T) {
8185
require.False(t, folderPath.NotExist())
8286

8387
filePath := testPath.Join("file")
84-
require.Equal(t, "_testdata/file", filePath.String())
88+
pathEqualsTo(t, "_testdata/file", filePath)
8589
isDir, err = filePath.IsDirCheck()
8690
require.False(t, isDir)
8791
require.NoError(t, err)
@@ -94,43 +98,43 @@ func TestPath(t *testing.T) {
9498
require.False(t, filePath.NotExist())
9599

96100
anotherFilePath := filePath.Join("notexistent")
97-
require.Equal(t, "_testdata/file/notexistent", anotherFilePath.String())
101+
pathEqualsTo(t, "_testdata/file/notexistent", anotherFilePath)
98102
isDir, err = anotherFilePath.IsDirCheck()
99103
require.False(t, isDir)
100104
require.Error(t, err)
101105
require.False(t, anotherFilePath.IsDir())
102106
require.False(t, anotherFilePath.IsNotDir())
103107
exist, err = anotherFilePath.ExistCheck()
104108
require.False(t, exist)
105-
require.Error(t, err)
109+
require.NoError(t, err)
106110
require.False(t, anotherFilePath.Exist())
107-
require.False(t, anotherFilePath.NotExist())
111+
require.True(t, anotherFilePath.NotExist())
108112

109113
list, err := folderPath.ReadDir()
110114
require.NoError(t, err)
111115
require.Len(t, list, 4)
112-
require.Equal(t, "_testdata/folder/.hidden", list[0].String())
113-
require.Equal(t, "_testdata/folder/file2", list[1].String())
114-
require.Equal(t, "_testdata/folder/file3", list[2].String())
115-
require.Equal(t, "_testdata/folder/subfolder", list[3].String())
116+
pathEqualsTo(t, "_testdata/folder/.hidden", list[0])
117+
pathEqualsTo(t, "_testdata/folder/file2", list[1])
118+
pathEqualsTo(t, "_testdata/folder/file3", list[2])
119+
pathEqualsTo(t, "_testdata/folder/subfolder", list[3])
116120

117121
list2 := list.Clone()
118122
list2.FilterDirs()
119123
require.Len(t, list2, 1)
120-
require.Equal(t, "_testdata/folder/subfolder", list2[0].String())
124+
pathEqualsTo(t, "_testdata/folder/subfolder", list2[0])
121125

122126
list2 = list.Clone()
123127
list2.FilterOutHiddenFiles()
124128
require.Len(t, list2, 3)
125-
require.Equal(t, "_testdata/folder/file2", list2[0].String())
126-
require.Equal(t, "_testdata/folder/file3", list2[1].String())
127-
require.Equal(t, "_testdata/folder/subfolder", list2[2].String())
129+
pathEqualsTo(t, "_testdata/folder/file2", list2[0])
130+
pathEqualsTo(t, "_testdata/folder/file3", list2[1])
131+
pathEqualsTo(t, "_testdata/folder/subfolder", list2[2])
128132

129133
list2 = list.Clone()
130134
list2.FilterOutPrefix("file")
131135
require.Len(t, list2, 2)
132-
require.Equal(t, "_testdata/folder/.hidden", list2[0].String())
133-
require.Equal(t, "_testdata/folder/subfolder", list2[1].String())
136+
pathEqualsTo(t, "_testdata/folder/.hidden", list2[0])
137+
pathEqualsTo(t, "_testdata/folder/subfolder", list2[1])
134138
}
135139

136140
func TestResetStatCacheWhenFollowingSymlink(t *testing.T) {
@@ -231,19 +235,19 @@ func TestCopyDir(t *testing.T) {
231235
func TestParents(t *testing.T) {
232236
parents := New("/a/very/long/path").Parents()
233237
require.Len(t, parents, 5)
234-
require.Equal(t, "/a/very/long/path", parents[0].String())
235-
require.Equal(t, "/a/very/long", parents[1].String())
236-
require.Equal(t, "/a/very", parents[2].String())
237-
require.Equal(t, "/a", parents[3].String())
238-
require.Equal(t, "/", parents[4].String())
238+
pathEqualsTo(t, "/a/very/long/path", parents[0])
239+
pathEqualsTo(t, "/a/very/long", parents[1])
240+
pathEqualsTo(t, "/a/very", parents[2])
241+
pathEqualsTo(t, "/a", parents[3])
242+
pathEqualsTo(t, "/", parents[4])
239243

240244
parents2 := New("a/very/relative/path").Parents()
241245
require.Len(t, parents, 5)
242-
require.Equal(t, "a/very/relative/path", parents2[0].String())
243-
require.Equal(t, "a/very/relative", parents2[1].String())
244-
require.Equal(t, "a/very", parents2[2].String())
245-
require.Equal(t, "a", parents2[3].String())
246-
require.Equal(t, ".", parents2[4].String())
246+
pathEqualsTo(t, "a/very/relative/path", parents2[0])
247+
pathEqualsTo(t, "a/very/relative", parents2[1])
248+
pathEqualsTo(t, "a/very", parents2[2])
249+
pathEqualsTo(t, "a", parents2[3])
250+
pathEqualsTo(t, ".", parents2[4])
247251
}
248252

249253
func TestReadDirRecursive(t *testing.T) {
@@ -253,20 +257,20 @@ func TestReadDirRecursive(t *testing.T) {
253257
require.NoError(t, err)
254258
require.Len(t, list, 14)
255259

256-
require.Equal(t, "_testdata/anotherFile", list[0].String())
257-
require.Equal(t, "_testdata/file", list[1].String())
258-
require.Equal(t, "_testdata/folder", list[2].String())
259-
require.Equal(t, "_testdata/folder/.hidden", list[3].String())
260-
require.Equal(t, "_testdata/folder/file2", list[4].String())
261-
require.Equal(t, "_testdata/folder/file3", list[5].String())
262-
require.Equal(t, "_testdata/folder/subfolder", list[6].String())
263-
require.Equal(t, "_testdata/folder/subfolder/file4", list[7].String())
264-
require.Equal(t, "_testdata/symlinktofolder", list[8].String())
265-
require.Equal(t, "_testdata/symlinktofolder/.hidden", list[9].String())
266-
require.Equal(t, "_testdata/symlinktofolder/file2", list[10].String())
267-
require.Equal(t, "_testdata/symlinktofolder/file3", list[11].String())
268-
require.Equal(t, "_testdata/symlinktofolder/subfolder", list[12].String())
269-
require.Equal(t, "_testdata/symlinktofolder/subfolder/file4", list[13].String())
260+
pathEqualsTo(t, "_testdata/anotherFile", list[0])
261+
pathEqualsTo(t, "_testdata/file", list[1])
262+
pathEqualsTo(t, "_testdata/folder", list[2])
263+
pathEqualsTo(t, "_testdata/folder/.hidden", list[3])
264+
pathEqualsTo(t, "_testdata/folder/file2", list[4])
265+
pathEqualsTo(t, "_testdata/folder/file3", list[5])
266+
pathEqualsTo(t, "_testdata/folder/subfolder", list[6])
267+
pathEqualsTo(t, "_testdata/folder/subfolder/file4", list[7])
268+
pathEqualsTo(t, "_testdata/symlinktofolder", list[8])
269+
pathEqualsTo(t, "_testdata/symlinktofolder/.hidden", list[9])
270+
pathEqualsTo(t, "_testdata/symlinktofolder/file2", list[10])
271+
pathEqualsTo(t, "_testdata/symlinktofolder/file3", list[11])
272+
pathEqualsTo(t, "_testdata/symlinktofolder/subfolder", list[12])
273+
pathEqualsTo(t, "_testdata/symlinktofolder/subfolder/file4", list[13])
270274
}
271275

272276
func TestFilterDirs(t *testing.T) {
@@ -276,15 +280,15 @@ func TestFilterDirs(t *testing.T) {
276280
require.NoError(t, err)
277281
require.Len(t, list, 4)
278282

279-
require.Equal(t, "_testdata/anotherFile", list[0].String())
280-
require.Equal(t, "_testdata/file", list[1].String())
281-
require.Equal(t, "_testdata/folder", list[2].String())
282-
require.Equal(t, "_testdata/symlinktofolder", list[3].String())
283+
pathEqualsTo(t, "_testdata/anotherFile", list[0])
284+
pathEqualsTo(t, "_testdata/file", list[1])
285+
pathEqualsTo(t, "_testdata/folder", list[2])
286+
pathEqualsTo(t, "_testdata/symlinktofolder", list[3])
283287

284288
list.FilterDirs()
285289
require.Len(t, list, 2)
286-
require.Equal(t, "_testdata/folder", list[0].String())
287-
require.Equal(t, "_testdata/symlinktofolder", list[1].String())
290+
pathEqualsTo(t, "_testdata/folder", list[0])
291+
pathEqualsTo(t, "_testdata/symlinktofolder", list[1])
288292
}
289293

290294
func TestFilterOutDirs(t *testing.T) {
@@ -294,15 +298,15 @@ func TestFilterOutDirs(t *testing.T) {
294298
require.NoError(t, err)
295299
require.Len(t, list, 4)
296300

297-
require.Equal(t, "_testdata/anotherFile", list[0].String())
298-
require.Equal(t, "_testdata/file", list[1].String())
299-
require.Equal(t, "_testdata/folder", list[2].String())
300-
require.Equal(t, "_testdata/symlinktofolder", list[3].String())
301+
pathEqualsTo(t, "_testdata/anotherFile", list[0])
302+
pathEqualsTo(t, "_testdata/file", list[1])
303+
pathEqualsTo(t, "_testdata/folder", list[2])
304+
pathEqualsTo(t, "_testdata/symlinktofolder", list[3])
301305

302306
list.FilterOutDirs()
303307
require.Len(t, list, 2)
304-
require.Equal(t, "_testdata/anotherFile", list[0].String())
305-
require.Equal(t, "_testdata/file", list[1].String())
308+
pathEqualsTo(t, "_testdata/anotherFile", list[0])
309+
pathEqualsTo(t, "_testdata/file", list[1])
306310
}
307311

308312
func TestEquivalentPaths(t *testing.T) {
@@ -343,23 +347,23 @@ func TestCanonicalize(t *testing.T) {
343347
func TestRelativeTo(t *testing.T) {
344348
res, err := New("/my/abs/path/123/456").RelTo(New("/my/abs/path"))
345349
require.NoError(t, err)
346-
require.Equal(t, "../..", res.String())
350+
pathEqualsTo(t, "../..", res)
347351

348352
res, err = New("/my/abs/path").RelTo(New("/my/abs/path/123/456"))
349353
require.NoError(t, err)
350-
require.Equal(t, "123/456", res.String())
354+
pathEqualsTo(t, "123/456", res)
351355

352356
res, err = New("my/path").RelTo(New("/other/path"))
353357
require.Error(t, err)
354358
require.Nil(t, res)
355359

356360
res, err = New("/my/abs/path/123/456").RelFrom(New("/my/abs/path"))
357-
require.Equal(t, "123/456", res.String())
361+
pathEqualsTo(t, "123/456", res)
358362
require.NoError(t, err)
359363

360364
res, err = New("/my/abs/path").RelFrom(New("/my/abs/path/123/456"))
361365
require.NoError(t, err)
362-
require.Equal(t, "../..", res.String())
366+
pathEqualsTo(t, "../..", res)
363367

364368
res, err = New("my/path").RelFrom(New("/other/path"))
365369
require.Error(t, err)

0 commit comments

Comments
 (0)