forked from tilt-dev/tilt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnames_test.go
121 lines (103 loc) · 3.69 KB
/
names_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
117
118
119
120
121
package k8s
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"github.com/tilt-dev/tilt/internal/k8s/testyaml"
)
type workload struct {
name string
kind string
namespace string
group string
expectedResourceName string
}
func TestUniqueResourceNames(t *testing.T) {
testCases := []struct {
testName string
workloads []workload
}{
{"one workload, just name", []workload{
{"foo", "Deployment", "default", "", "foo"},
}},
{"one workload, same name", []workload{
{"foo", "Deployment", "default", "", "foo:deployment:default:core:0"},
{"foo", "Deployment", "default", "", "foo:deployment:default:core:1"},
}},
{"one workload, by name", []workload{
{"foo", "Deployment", "default", "", "foo"},
{"bar", "Deployment", "default", "", "bar"},
}},
{"two workloads, by kind", []workload{
{"foo", "Deployment", "default", "", "foo:deployment"},
{"foo", "CronJob", "default", "", "foo:cronjob"},
}},
{"two workloads, by namespace", []workload{
{"foo", "Deployment", "default", "", "foo:deployment:default"},
{"foo", "Deployment", "fission", "", "foo:deployment:fission"},
}},
{"two workloads, by group", []workload{
{"foo", "Deployment", "default", "a", "foo:deployment:default:a"},
{"foo", "Deployment", "default", "b", "foo:deployment:default:b"},
}},
{"three workloads, one by kind, two by namespace", []workload{
{"foo", "Deployment", "default", "a", "foo:deployment:default"},
{"foo", "Deployment", "fission", "b", "foo:deployment:fission"},
{"foo", "CronJob", "default", "b", "foo:cronjob"},
}},
}
for _, test := range testCases {
t.Run(test.testName, func(t *testing.T) {
var entities []K8sEntity
var expectedNames []string
for _, w := range test.workloads {
obj := unstructured.Unstructured{}
obj.SetName(w.name)
obj.SetNamespace(w.namespace)
obj.SetKind(w.kind)
obj.SetAPIVersion(fmt.Sprintf("%s/1.0", w.group))
entities = append(entities, NewK8sEntity(&obj))
expectedNames = append(expectedNames, w.expectedResourceName)
}
actualNames := UniqueNames(entities, 1)
require.Equal(t, expectedNames, actualNames)
})
}
}
func TestFragmentsToEntities(t *testing.T) {
entities, err := ParseYAMLFromString(testyaml.BlorgBackendYAML)
if err != nil {
t.Fatal(err)
}
actual := FragmentsToEntities(entities)
expected := map[string][]K8sEntity{
"devel-nick-lb-blorg-be": {entities[0]},
"devel-nick-lb-blorg-be:service": {entities[0]},
"devel-nick-lb-blorg-be:service:default": {entities[0]},
"devel-nick-lb-blorg-be:service:default:core": {entities[0]},
"devel-nick-blorg-be": {entities[1]},
"devel-nick-blorg-be:deployment": {entities[1]},
"devel-nick-blorg-be:deployment:default": {entities[1]},
"devel-nick-blorg-be:deployment:default:extensions": {entities[1]},
}
assert.Equal(t, expected, actual)
}
func TestFragmentsToEntitiesAmbiguous(t *testing.T) {
entities, err := ParseYAMLFromString(testyaml.BlorgBackendAmbiguousYAML)
if err != nil {
t.Fatal(err)
}
actual := FragmentsToEntities(entities)
expected := map[string][]K8sEntity{
"blorg": {entities[0], entities[1]},
"blorg:service": {entities[0]},
"blorg:service:default": {entities[0]},
"blorg:service:default:core": {entities[0]},
"blorg:deployment": {entities[1]},
"blorg:deployment:default": {entities[1]},
"blorg:deployment:default:extensions": {entities[1]},
}
assert.Equal(t, expected, actual)
}