Skip to content
This repository was archived by the owner on Oct 3, 2023. It is now read-only.

Commit e94f902

Browse files
committed
Added unit tests
1 parent 16901cb commit e94f902

File tree

17 files changed

+475
-15
lines changed

17 files changed

+475
-15
lines changed

make/go.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ bin/docker-setup: bin/docker-setup-linux-$(ALT_ARCH)
1313

1414
bin/docker-setup-linux-$(ALT_ARCH):bin/docker-setup-linux-%: make/go.mk $(GO_SOURCES) ; $(info $(M) Building docker-setup version $(GO_VERSION) for $(ALT_ARCH)...)
1515
@\
16+
go test github.com/nicholasdille/docker-setup/pkg/... github.com/nicholasdille/docker-setup/cmd/docker-setup; \
1617
export GOOS=linux; \
1718
export GOARCH=$*; \
1819
CGO_ENABLED=0 \

pkg/tool/load.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package tool
22

33
import (
4+
"encoding/json"
45
"fmt"
56
"os"
6-
7-
"gopkg.in/yaml.v3"
87
)
98

109
func LoadFromFile(filename string) (Tools, error) {
@@ -24,7 +23,7 @@ func LoadFromFile(filename string) (Tools, error) {
2423
func LoadFromBytes(data []byte) (Tools, error) {
2524
var tools Tools
2625

27-
err := yaml.Unmarshal(data, &tools)
26+
err := json.Unmarshal(data, &tools)
2827
if err != nil {
2928
return Tools{}, err
3029
}

pkg/tool/load_test.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package tool
2+
3+
import (
4+
"testing"
5+
)
6+
7+
var testLoadToolsString = `{
8+
"tools": [
9+
{
10+
"name":"foo",
11+
"version":"1.0.0",
12+
"runtime_dependencies": [
13+
"bar"
14+
],
15+
"tags": [
16+
"baz",
17+
"blarg"
18+
],
19+
"homepage": "https://foo.bar",
20+
"description": "Foo"
21+
},
22+
{
23+
"name":"bar",
24+
"version":"2.0.0",
25+
"tags": [
26+
"baz",
27+
"blubb"
28+
]
29+
}
30+
]
31+
}`
32+
33+
func TestLoadFromBytes(t *testing.T) {
34+
tools, err := LoadFromBytes([]byte(testLoadToolsString))
35+
if err != nil {
36+
t.Errorf("Error loading data: %s\n", err)
37+
}
38+
39+
if len(tools.Tools) != 2 {
40+
t.Errorf("Expected 2 tools, got %d", len(tools.Tools))
41+
}
42+
43+
foo, err := tools.GetByName("foo")
44+
if err != nil {
45+
t.Errorf("Error getting tool foo: %s\n", err)
46+
}
47+
48+
foo.Print()
49+
50+
if foo.Name != "foo" {
51+
t.Errorf("Expected foo, got %s", foo.Name)
52+
}
53+
if foo.Version != "1.0.0" {
54+
t.Errorf("Expected 1.0.0, got %s", foo.Version)
55+
}
56+
if len(foo.RuntimeDependencies) != 1 {
57+
t.Errorf("Expected 1 dependency, got %d", len(foo.RuntimeDependencies))
58+
}
59+
if foo.RuntimeDependencies[0] != "bar" {
60+
t.Errorf("Expected bar, got %s", foo.RuntimeDependencies[0])
61+
}
62+
}

pkg/tool/search.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,4 @@ func (tools *Tools) ResolveDependencies(queue *Tools, toolName string) error {
146146
queue.AddIfMissing(tool)
147147

148148
return nil
149-
}
149+
}

pkg/tool/search_test.go

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
package tool
2+
3+
import (
4+
"strings"
5+
"testing"
6+
)
7+
8+
var testSearchToolsString = `{
9+
"tools": [
10+
{
11+
"name":"foo",
12+
"version":"1.0.0",
13+
"runtime_dependencies": [
14+
"bar"
15+
],
16+
"tags": [
17+
"baz",
18+
"blarg"
19+
]
20+
},
21+
{
22+
"name":"bar",
23+
"version":"2.0.0",
24+
"tags": [
25+
"baz",
26+
"blubb"
27+
]
28+
}
29+
]
30+
}`
31+
32+
func TestSearchContains(t *testing.T) {
33+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
34+
if err != nil {
35+
t.Errorf("Error loading data: %s\n", err)
36+
}
37+
38+
if !tools.Contains("foo") {
39+
t.Errorf("Tools should contain foo")
40+
}
41+
42+
if !tools.Contains("bar") {
43+
t.Errorf("Tools should contain bar")
44+
}
45+
}
46+
47+
func TestSearchGetByName(t *testing.T) {
48+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
49+
if err != nil {
50+
t.Errorf("Error loading data: %s\n", err)
51+
}
52+
53+
foo, err := tools.GetByName("foo")
54+
if err != nil {
55+
t.Errorf("Error getting tool foo: %s\n", err)
56+
}
57+
if foo.Name != "foo" {
58+
t.Errorf("Expected foo, got %s", foo.Name)
59+
}
60+
61+
bar, err := tools.GetByName("bar")
62+
if err != nil {
63+
t.Errorf("Error getting tool bar: %s\n", err)
64+
}
65+
if bar.Name != "bar" {
66+
t.Errorf("Expected bar, got %s", bar.Name)
67+
}
68+
}
69+
70+
func TestSearchGetByTag(t *testing.T) {
71+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
72+
if err != nil {
73+
t.Errorf("Error loading data: %s\n", err)
74+
}
75+
76+
toolList := tools.GetByTag("blarg")
77+
if len(toolList.Tools) != 1 {
78+
t.Errorf("Expected 1 tool, got %d", len(toolList.Tools))
79+
}
80+
81+
toolList = tools.GetByTag("baz")
82+
if len(toolList.Tools) != 2 {
83+
t.Errorf("Expected 2 tools, got %d", len(toolList.Tools))
84+
}
85+
}
86+
87+
func TestSearchGetByNames(t *testing.T) {
88+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
89+
if err != nil {
90+
t.Errorf("Error loading data: %s\n", err)
91+
}
92+
93+
toolList := tools.GetByNames([]string{"foo", "bar"})
94+
if len(toolList.Tools) != 2 {
95+
t.Errorf("Expected 2 tools, got %d", len(toolList.Tools))
96+
}
97+
}
98+
99+
func TestSearchGetByTags(t *testing.T) {
100+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
101+
if err != nil {
102+
t.Errorf("Error loading data: %s\n", err)
103+
}
104+
105+
toolList := tools.GetByTags([]string{"blarg", "blubb"})
106+
if len(toolList.Tools) != 2 {
107+
t.Errorf("Expected 2 tools, got %d", len(toolList.Tools))
108+
}
109+
}
110+
111+
func TestFind(t *testing.T) {
112+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
113+
if err != nil {
114+
t.Errorf("Error loading data: %s\n", err)
115+
}
116+
117+
toolList := tools.Find("foo", true, false, false)
118+
if len(toolList.Tools) != 1 {
119+
t.Errorf("Expected 1 tool, got %d", len(toolList.Tools))
120+
}
121+
if toolList.Tools[0].Name != "foo" {
122+
t.Errorf("Expected tool foo, got %s", toolList.Tools[0].Name)
123+
}
124+
toolList.Tools[0].Print()
125+
126+
toolList = tools.Find("baz", false, true, false)
127+
if len(toolList.Tools) != 2 {
128+
t.Errorf("Expected 2 tools, got %d", len(toolList.Tools))
129+
}
130+
if toolList.Tools[0].Name != "foo" {
131+
t.Errorf("Expected tool foo, got %s", toolList.Tools[0].Name)
132+
}
133+
if toolList.Tools[1].Name != "bar" {
134+
t.Errorf("Expected tool bar, got %s", toolList.Tools[1].Name)
135+
}
136+
137+
toolList = tools.Find("blubb", false, true, false)
138+
if len(toolList.Tools) != 1 {
139+
t.Errorf("Expected 1 tool, got %d", len(toolList.Tools))
140+
}
141+
if toolList.Tools[0].Name != "bar" {
142+
t.Errorf("Expected tool bar, got %s", toolList.Tools[0].Name)
143+
}
144+
145+
toolList = tools.Find("bar", false, false, true)
146+
toolList.List()
147+
if len(toolList.Tools) != 1 {
148+
t.Errorf("Expected 1 tool, got %d", len(toolList.Tools))
149+
}
150+
if toolList.Tools[0].Name != "foo" {
151+
t.Errorf("Expected tool foo, got %s", toolList.Tools[0].Name)
152+
}
153+
}
154+
155+
func TestGetNames(t *testing.T) {
156+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
157+
if err != nil {
158+
t.Errorf("Error loading data: %s\n", err)
159+
}
160+
161+
names := tools.GetNames()
162+
if len(names) != 2 {
163+
t.Errorf("Expected 2 names, got %d", len(names))
164+
}
165+
166+
if names[0] != "foo" {
167+
t.Errorf("Expected foo, got %s", names[0])
168+
}
169+
170+
if names[1] != "bar" {
171+
t.Errorf("Expected bar, got %s", names[1])
172+
}
173+
}
174+
175+
func TestAddIfMissing(t *testing.T) {
176+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
177+
if err != nil {
178+
t.Errorf("Error loading data: %s\n", err)
179+
}
180+
181+
tools.AddIfMissing(&Tool{Name: "baz"})
182+
if len(tools.Tools) != 3 {
183+
t.Errorf("Expected 3 tools, got %d", len(tools.Tools))
184+
}
185+
}
186+
187+
func TestResolveDependencies(t *testing.T) {
188+
tools, err := LoadFromBytes([]byte(testSearchToolsString))
189+
if err != nil {
190+
t.Errorf("Error loading data: %s\n", err)
191+
}
192+
193+
var plannedTools Tools
194+
tools.ResolveDependencies(&plannedTools, "foo")
195+
if len(plannedTools.Tools) != 2 {
196+
t.Errorf("Expected 2 tools, got %d: %s", len(plannedTools.Tools), strings.Join(plannedTools.GetNames(), ","))
197+
}
198+
}

0 commit comments

Comments
 (0)