-
Notifications
You must be signed in to change notification settings - Fork 0
/
funcs_test.go
116 lines (108 loc) · 3.36 KB
/
funcs_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package manifest
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
)
func TestMap(t *testing.T) {
type testCase struct {
input []string
want map[Manifest][]string
}
cases := []testCase{
{
want: map[Manifest][]string{},
},
{
input: []string{"unknown.json"},
want: map[Manifest][]string{},
},
{
input: []string{"package.json"},
want: map[Manifest][]string{PackageJSON: {"package.json"}},
},
{
input: []string{"package.JSON"},
want: map[Manifest][]string{PackageJSON: {"package.JSON"}},
},
{
input: []string{"working/dir/package.JSON"},
want: map[Manifest][]string{PackageJSON: {"working/dir/package.JSON"}},
},
// TODO: uncomment when available
// {
// input: []string{"requirements.txt"},
// want: map[Manifest][]string{RequirementsTxt: {"requirements.txt"}},
// },
// {
// input: []string{"somedir/requirements.txt"},
// want: map[Manifest][]string{RequirementsTxt: {"somedir/requirements.txt"}},
// },
// {
// input: []string{"somedir/requirements.txt", "package.json"},
// want: map[Manifest][]string{RequirementsTxt: {"somedir/requirements.txt"}, PackageJSON: {"package.json"}},
// },
}
for _, tc := range cases {
require.Equal(t, tc.want, Map(tc.input))
}
}
func TestExisting(t *testing.T) {
type testCase struct {
input []string
want map[Manifest][]string
wantErr map[Manifest][]error
}
cases := []testCase{
{
want: map[Manifest][]string{},
wantErr: map[Manifest][]error{},
},
{
input: []string{"unknown.json"},
want: map[Manifest][]string{},
wantErr: map[Manifest][]error{},
},
{
input: []string{"package.json"},
want: map[Manifest][]string{},
wantErr: map[Manifest][]error{PackageJSON: {fmt.Errorf("package.json not found")}},
},
{
input: []string{"testdata/package.json", "testdata/package.json"},
want: map[Manifest][]string{PackageJSON: {"testdata/package.json"}},
wantErr: map[Manifest][]error{},
},
{
input: []string{"testdata/1/package.json", "testdata/package.json"},
want: map[Manifest][]string{PackageJSON: {"testdata/1/package.json", "testdata/package.json"}},
wantErr: map[Manifest][]error{},
},
// TODO: uncomment when available
// {
// input: []string{"somedir/requirements.txt"},
// want: map[Manifest][]string{},
// wantErr: map[Manifest][]error{RequirementsTxt: fmt.Errorf("somedir/requirements.txt not found")},
// },
// {
// input: []string{"testdata/poetry.lock", "testdata/package.json"},
// want: map[Manifest][]string{RequirementsTxt: "testdata/poetry.lock", PackageJSON: "testdata/package.json"},
// wantErr: map[Manifest][]error{},
// },
// {
// input: []string{"unk/requirements.txt", "testdata/package.json"},
// want: map[Manifest][]string{PackageJSON: "testdata/package.json"},
// wantErr: map[Manifest][]error{RequirementsTxt: fmt.Errorf("unk/requirements.txt not found")},
// },
// {
// input: []string{"testdata/package.json", "testdata/requirements.txt", "unk/requirements.txt"},
// want: map[Manifest][]string{PackageJSON: "testdata/package.json"},
// wantErr: map[Manifest][]error{RequirementsTxt: fmt.Errorf("unk/requirements.txt not found")},
// },
}
for _, tc := range cases {
gotMap, gotErr := Existing(tc.input)
require.Equal(t, tc.want, gotMap)
require.Equal(t, tc.wantErr, gotErr)
}
}