Skip to content

Commit 33e92e5

Browse files
committed
refactor: use two spaces to separate columns
1 parent 7379ca4 commit 33e92e5

File tree

5 files changed

+90
-140
lines changed

5 files changed

+90
-140
lines changed

get/all_test.go

Lines changed: 37 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"context"
66
"os"
7+
"regexp"
78
"testing"
89

910
apps "github.com/ninech/apis/apps/v1alpha1"
@@ -15,8 +16,8 @@ import (
1516
"github.com/stretchr/testify/assert"
1617
"github.com/stretchr/testify/require"
1718
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
18-
"sigs.k8s.io/controller-runtime/pkg/client"
19-
"sigs.k8s.io/controller-runtime/pkg/client/fake"
19+
sigs "sigs.k8s.io/controller-runtime/pkg/client"
20+
fake "sigs.k8s.io/controller-runtime/pkg/client/fake"
2021
)
2122

2223
func TestAllContent(t *testing.T) {
@@ -25,45 +26,41 @@ func TestAllContent(t *testing.T) {
2526
organization := "evilcorp"
2627

2728
for name, testCase := range map[string]struct {
28-
projects []client.Object
29-
objects []client.Object
29+
projects []sigs.Object
30+
objects []sigs.Object
3031
projectName string
3132
outputFormat outputFormat
3233
allProjects bool
3334
includeNineResources bool
3435
kinds []string
3536
output string
3637
errorExpected bool
38+
expectRegexp *regexp.Regexp
3739
}{
3840
"all resources from one project, full format": {
3941
projects: test.Projects(organization, "dev", "staging", "prod"),
40-
objects: []client.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
42+
objects: []sigs.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
4143
outputFormat: full,
4244
projectName: "dev",
43-
output: `PROJECT NAME KIND GROUP
44-
dev banana Application apps.nine.ch
45-
dev pear Release apps.nine.ch
46-
`,
45+
expectRegexp: regexp.MustCompile(`PROJECT\s+NAME\s+KIND\s+GROUP\ndev\s+banana\s+Application\s+apps.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\n`),
4746
},
4847
"all resources from one project, no header": {
4948
projects: test.Projects(organization, "dev", "staging", "prod"),
50-
objects: []client.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
49+
objects: []sigs.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
5150
outputFormat: noHeader,
5251
projectName: "dev",
53-
output: `dev banana Application apps.nine.ch
54-
dev pear Release apps.nine.ch
55-
`,
52+
expectRegexp: regexp.MustCompile(`dev\s+banana\s+Application\s+apps.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\n`),
5653
},
5754
"all resources from one project, yaml format": {
5855
projects: test.Projects(organization, "dev", "staging", "prod"),
59-
objects: []client.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
56+
objects: []sigs.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
6057
outputFormat: yamlOut,
6158
projectName: "dev",
6259
output: "apiVersion: apps.nine.ch/v1alpha1\nkind: Application\nmetadata:\n creationTimestamp: null\n name: banana\n namespace: dev\nspec:\n forProvider:\n buildEnv: null\n config:\n env: null\n port: null\n replicas: null\n size: \"\"\n dockerfileBuild:\n enabled: false\n git:\n revision: \"\"\n subPath: \"\"\n url: \"\"\n paused: false\nstatus:\n atProvider:\n defaultURLs: null\n---\napiVersion: apps.nine.ch/v1alpha1\ncreationTimestampNano: 0\nkind: Release\nmetadata:\n creationTimestamp: null\n name: pear\n namespace: dev\nspec:\n forProvider:\n build:\n name: \"\"\n configuration:\n size:\n origin: \"\"\n value: \"\"\n defaultHosts: null\n healthProbeConfiguration: null\n image: {}\n paused: false\nstatus:\n atProvider:\n owning: false\n",
6360
},
6461
"all resources from one project, json format": {
6562
projects: test.Projects(organization, "dev", "staging", "prod"),
66-
objects: []client.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
63+
objects: []sigs.Object{testApplication("banana", "dev"), testRelease("pear", "dev")},
6764
outputFormat: jsonOut,
6865
projectName: "dev",
6966
output: `[
@@ -138,54 +135,43 @@ dev pear Release apps.nine.ch
138135
},
139136
"all projects, full format": {
140137
projects: test.Projects(organization, "dev", "staging", "prod"),
141-
objects: []client.Object{
138+
objects: []sigs.Object{
142139
testApplication("banana", "dev"), testRelease("pear", "dev"),
143140
testApplication("apple", "staging"), testRelease("melon", "staging"),
144141
testCluster("orange", "prod"),
145142
},
146143
outputFormat: full,
147144
allProjects: true,
148-
output: `PROJECT NAME KIND GROUP
149-
dev banana Application apps.nine.ch
150-
dev pear Release apps.nine.ch
151-
prod orange KubernetesCluster infrastructure.nine.ch
152-
staging apple Application apps.nine.ch
153-
staging melon Release apps.nine.ch
154-
`,
145+
expectRegexp: regexp.MustCompile(`PROJECT\s+NAME\s+KIND\s+GROUP\ndev\s+banana\s+Application\s+apps.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\nprod\s+orange\s+KubernetesCluster\s+infrastructure.nine.ch\nstaging\s+apple\s+Application\s+apps.nine.ch\nstaging\s+melon\s+Release\s+apps.nine.ch\n`),
155146
},
156147
"all projects, no headers format": {
157148
projects: test.Projects(organization, "dev", "staging", "prod"),
158-
objects: []client.Object{
149+
objects: []sigs.Object{
159150
testApplication("banana", "dev"), testRelease("pear", "dev"),
160151
testApplication("apple", "staging"), testRelease("melon", "staging"),
161152
testCluster("orange", "prod"),
162153
},
163154
outputFormat: noHeader,
164155
allProjects: true,
165-
output: `dev banana Application apps.nine.ch
166-
dev pear Release apps.nine.ch
167-
prod orange KubernetesCluster infrastructure.nine.ch
168-
staging apple Application apps.nine.ch
169-
staging melon Release apps.nine.ch
170-
`,
156+
expectRegexp: regexp.MustCompile(`dev\s+banana\s+Application\s+apps.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\nprod\s+orange\s+KubernetesCluster\s+infrastructure.nine.ch\nstaging\s+apple\s+Application\s+apps.nine.ch\nstaging\s+melon\s+Release\s+apps.nine.ch\n`),
171157
},
172158
"empty resources of a specific project, full format": {
173159
projects: test.Projects(organization, "dev"),
174-
objects: []client.Object{},
160+
objects: []sigs.Object{},
175161
outputFormat: full,
176162
projectName: "dev",
177163
output: "no Resources found in project dev\n",
178164
},
179165
"empty resources of all projects, full format": {
180166
projects: test.Projects(organization, "dev", "staging"),
181-
objects: []client.Object{},
167+
objects: []sigs.Object{},
182168
outputFormat: full,
183169
allProjects: true,
184170
output: "no Resources found in any project\n",
185171
},
186172
"filter nine resources, no headers format": {
187173
projects: test.Projects(organization, "dev", "staging", "prod"),
188-
objects: []client.Object{
174+
objects: []sigs.Object{
189175
testApplication("banana", "dev"), testRelease("pear", "dev"),
190176
testApplication("apple", "staging"), testRelease("melon", "staging"), testRelease("cherry", "staging"),
191177
testCluster("orange", "prod"),
@@ -199,17 +185,11 @@ staging melon Release apps.nine.ch
199185
},
200186
outputFormat: noHeader,
201187
allProjects: true,
202-
output: `dev banana Application apps.nine.ch
203-
dev pear Release apps.nine.ch
204-
prod orange KubernetesCluster infrastructure.nine.ch
205-
staging apple Application apps.nine.ch
206-
staging cherry Release apps.nine.ch
207-
staging melon Release apps.nine.ch
208-
`,
188+
expectRegexp: regexp.MustCompile(`dev\s+banana\s+Application\s+apps.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\nprod\s+orange\s+KubernetesCluster\s+infrastructure.nine.ch\nstaging\s+apple\s+Application\s+apps.nine.ch\nstaging\s+cherry\s+Release\s+apps.nine.ch\nstaging\s+melon\s+Release\s+apps.nine.ch\n`),
209189
},
210190
"include nine resources, no headers format": {
211191
projects: test.Projects(organization, "dev", "staging", "prod"),
212-
objects: []client.Object{
192+
objects: []sigs.Object{
213193
testApplication("banana", "dev"), testRelease("pear", "dev"),
214194
testApplication("apple", "staging"), testRelease("melon", "staging"), testRelease("cherry", "staging"),
215195
testCluster("orange", "prod"),
@@ -224,33 +204,23 @@ staging melon Release apps.nine.ch
224204
outputFormat: noHeader,
225205
allProjects: true,
226206
includeNineResources: true,
227-
output: `dev banana Application apps.nine.ch
228-
dev kiwi Application apps.nine.ch
229-
dev pear Release apps.nine.ch
230-
prod orange KubernetesCluster infrastructure.nine.ch
231-
staging apple Application apps.nine.ch
232-
staging cherry Release apps.nine.ch
233-
staging melon Release apps.nine.ch
234-
`,
207+
expectRegexp: regexp.MustCompile(`dev\s+banana\s+Application\s+apps.nine.ch\ndev\s+kiwi\s+Application\s+apps.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\nprod\s+orange\s+KubernetesCluster\s+infrastructure.nine.ch\nstaging\s+apple\s+Application\s+apps.nine.ch\nstaging\s+cherry\s+Release\s+apps.nine.ch\nstaging\s+melon\s+Release\s+apps.nine.ch\n`),
235208
},
236209
"only certain kind": {
237210
projects: test.Projects(organization, "dev", "staging", "prod"),
238-
objects: []client.Object{
211+
objects: []sigs.Object{
239212
testApplication("banana", "dev"), testRelease("pear", "dev"),
240213
testApplication("apple", "staging"), testRelease("melon", "staging"), testRelease("cherry", "staging"),
241214
testCluster("orange", "prod"),
242215
},
243216
outputFormat: full,
244217
allProjects: true,
245218
kinds: []string{"application"},
246-
output: `PROJECT NAME KIND GROUP
247-
dev banana Application apps.nine.ch
248-
staging apple Application apps.nine.ch
249-
`,
219+
expectRegexp: regexp.MustCompile(`PROJECT\s+NAME\s+KIND\s+GROUP\ndev\s+banana\s+Application\s+apps.nine.ch\nstaging\s+apple\s+Application\s+apps.nine.ch\n`),
250220
},
251221
"multiple certain kinds, no header format": {
252222
projects: test.Projects(organization, "dev", "staging", "prod"),
253-
objects: []client.Object{
223+
objects: []sigs.Object{
254224
testApplication("banana", "dev"), testRelease("pear", "dev"),
255225
testApplication("apple", "staging"), testRelease("melon", "staging"), testRelease("cherry", "staging"),
256226
testCluster("orange", "prod"),
@@ -259,33 +229,25 @@ staging apple Application apps.nine.ch
259229
outputFormat: noHeader,
260230
allProjects: true,
261231
kinds: []string{"release", "kubernetescluster"},
262-
output: `dev dragonfruit KubernetesCluster infrastructure.nine.ch
263-
dev pear Release apps.nine.ch
264-
prod orange KubernetesCluster infrastructure.nine.ch
265-
staging cherry Release apps.nine.ch
266-
staging melon Release apps.nine.ch
267-
`,
232+
expectRegexp: regexp.MustCompile(`dev\s+dragonfruit\s+KubernetesCluster\s+infrastructure.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\nprod\s+orange\s+KubernetesCluster\s+infrastructure.nine.ch\nstaging\s+cherry\s+Release\s+apps.nine.ch\nstaging\s+melon\s+Release\s+apps.nine.ch\n`),
268233
},
269234
"not known kind leads to an error": {
270235
projects: test.Projects(organization, "dev", "staging", "prod"),
271-
objects: []client.Object{},
236+
objects: []sigs.Object{},
272237
outputFormat: noHeader,
273238
allProjects: true,
274239
kinds: []string{"jackofalltrades"},
275240
errorExpected: true,
276241
},
277242
"excluded list kinds are not shown": {
278243
projects: test.Projects(organization, "dev"),
279-
objects: []client.Object{
244+
objects: []sigs.Object{
280245
testApplication("banana", "dev"), testRelease("pear", "dev"),
281246
testClusterData(),
282247
},
283248
outputFormat: full,
284249
allProjects: true,
285-
output: `PROJECT NAME KIND GROUP
286-
dev banana Application apps.nine.ch
287-
dev pear Release apps.nine.ch
288-
`,
250+
expectRegexp: regexp.MustCompile(`PROJECT\s+NAME\s+KIND\s+GROUP\ndev\s+banana\s+Application\s+apps.nine.ch\ndev\s+pear\s+Release\s+apps.nine.ch\n`),
289251
},
290252
} {
291253
t.Run(name, func(t *testing.T) {
@@ -307,15 +269,15 @@ dev pear Release apps.nine.ch
307269

308270
client := fake.NewClientBuilder().
309271
WithScheme(scheme).
310-
WithIndex(&management.Project{}, "metadata.name", func(o client.Object) []string {
272+
WithIndex(&management.Project{}, "metadata.name", func(o sigs.Object) []string {
311273
return []string{o.GetName()}
312274
}).
313275
WithObjects(append(testCase.projects, testCase.objects...)...).Build()
314276

315277
apiClient := &api.Client{WithWatch: client, Project: testCase.projectName}
316-
kubeconfig, err := test.CreateTestKubeconfig(apiClient, organization)
278+
kubecfg, err := test.CreateTestKubeconfig(apiClient, organization)
317279
require.NoError(t, err)
318-
defer os.Remove(kubeconfig)
280+
defer os.Remove(kubecfg)
319281

320282
cmd := allCmd{
321283
IncludeNineResources: testCase.includeNineResources,
@@ -328,7 +290,11 @@ dev pear Release apps.nine.ch
328290
return
329291
}
330292
require.NoError(t, err)
331-
assert.Equal(t, testCase.output, outputBuffer.String())
293+
if testCase.expectRegexp != nil {
294+
assert.Regexp(t, testCase.expectRegexp, outputBuffer.String())
295+
} else {
296+
assert.Equal(t, testCase.output, outputBuffer.String())
297+
}
332298
})
333299
}
334300
}

0 commit comments

Comments
 (0)