20
20
# environment to any value:
21
21
#
22
22
# $ TRACE=1 test.sh
23
- TRACE=${TRACE: " " }
23
+ TRACE=${TRACE:- " " }
24
24
if [ -n " $TRACE " ]; then
25
25
set -x
26
26
fi
59
59
# environment to any value:
60
60
#
61
61
# $ NO_COLOR=1 test.sh
62
- NO_COLOR=${NO_COLOR: " " }
63
- header=$' \e [1;33m'
64
- reset=$' \e [0m'
62
+ NO_COLOR=${NO_COLOR:- " " }
63
+ if [ -z " $NO_COLOR " ]; then
64
+ header=$' \e [1;33m'
65
+ reset=$' \e [0m'
66
+ else
67
+ header=' '
68
+ reset=' '
69
+ fi
70
+
65
71
function header_text {
66
- if [ -z " $NO_COLOR " ]; then
67
- echo " $header ${@ } $reset "
68
- else
69
- echo ${@ }
70
- fi
72
+ echo " $header $* $reset "
71
73
}
72
74
73
75
rc=0
@@ -83,17 +85,17 @@ kb_orig=$(pwd)
83
85
#
84
86
# If you skip fetching tools, this script will use the tools already on your
85
87
# machine, but rebuild the kubebuilder and kubebuilder-bin binaries.
86
- SKIP_FETCH_TOOLS=${SKIP_FETCH_TOOLS: " " }
88
+ SKIP_FETCH_TOOLS=${SKIP_FETCH_TOOLS:- " " }
87
89
88
90
function prepare_staging_dir {
89
91
header_text " preparing staging dir"
90
92
91
93
if [ -z " $SKIP_FETCH_TOOLS " ]; then
92
- rm -rf $kb_root_dir
94
+ rm -rf " $kb_root_dir "
93
95
else
94
- rm -f $kb_root_dir /kubebuilder/bin/kubebuilder
95
- rm -f $kb_root_dir /kubebuilder/bin/kubebuilder-gen
96
- rm -f $kb_root_dir /kubebuilder/bin/vendor.tar.gz
96
+ rm -f " $kb_root_dir /kubebuilder/bin/kubebuilder"
97
+ rm -f " $kb_root_dir /kubebuilder/bin/kubebuilder-gen"
98
+ rm -f " $kb_root_dir /kubebuilder/bin/vendor.tar.gz"
97
99
fi
98
100
}
99
101
@@ -104,38 +106,39 @@ function fetch_tools {
104
106
fi
105
107
106
108
header_text " fetching tools"
107
- kb_tools_archive_name=kubebuilder-tools-$k8s_version -$goos -$goarch .tar.gz
109
+ kb_tools_archive_name=" kubebuilder-tools-$k8s_version -$goos -$goarch .tar.gz"
108
110
kb_tools_download_url=" https://storage.googleapis.com/kubebuilder-tools/$kb_tools_archive_name "
109
111
110
- kb_tools_archive_path=$tmp_root /$kb_tools_archive_name
112
+ kb_tools_archive_path=" $tmp_root /$kb_tools_archive_name "
111
113
if [ ! -f $kb_tools_archive_path ]; then
112
- curl -sL ${kb_tools_download_url} -o $kb_tools_archive_path
114
+ curl -sL ${kb_tools_download_url} -o " $kb_tools_archive_path "
113
115
fi
114
- tar -zvxf $kb_tools_archive_path -C $tmp_root /
116
+ tar -zvxf " $kb_tools_archive_path " -C " $tmp_root /"
115
117
}
116
118
117
119
function build_kb {
118
120
header_text " building kubebuilder"
119
121
120
122
if [ " $INJECT_KB_VERSION " = " unknown" ]; then
121
- go build -o $tmp_root /kubebuilder/bin/kubebuilder ./cmd/kubebuilder
123
+ opts= " "
122
124
else
123
- go build -ldflags " -X github.com/kubernetes-sigs/kubebuilder/cmd/kubebuilder/version.kubeBuilderVersion=$INJECT_KB_VERSION " -o $tmp_root /kubebuilder/bin/kubebuilder ./cmd/kubebuilder
125
+ opts= -ldflags " -X github.com/kubernetes-sigs/kubebuilder/cmd/kubebuilder/version.kubeBuilderVersion=$INJECT_KB_VERSION "
124
126
fi
125
127
128
+ go build $opts -o $tmp_root /kubebuilder/bin/kubebuilder ./cmd/kubebuilder
126
129
go build -o $tmp_root /kubebuilder/bin/kubebuilder-gen ./cmd/kubebuilder-gen
127
130
}
128
131
129
132
function prepare_testdir_under_gopath {
130
133
kb_test_dir=$GOPATH /src/github.com/kubernetes-sigs/kubebuilder-test
131
134
header_text " preparing test directory $kb_test_dir "
132
- rm -rf $kb_test_dir && mkdir -p $kb_test_dir && cd $kb_test_dir
135
+ rm -rf " $kb_test_dir " && mkdir -p " $kb_test_dir " && cd " $kb_test_dir "
133
136
header_text " running kubebuilder commands in test directory $kb_test_dir "
134
137
}
135
138
136
139
function generate_crd_resources {
137
140
header_text " generating CRD resources and code"
138
-
141
+
139
142
# Setup env vars
140
143
export PATH=/tmp/kubebuilder/bin/:$PATH
141
144
export TEST_ASSET_KUBECTL=/tmp/kubebuilder/bin/kubectl
@@ -147,8 +150,13 @@ function generate_crd_resources {
147
150
kubebuilder create resource --group insect --version v1beta1 --kind Bee
148
151
149
152
header_text " editing generated files to simulate a user"
150
- sed -i -e " s|type Bee struct|// +kubebuilder:categories=foo,bar\ntype Bee struct|" pkg/apis/insect/v1beta1/bee_types.go
151
- sed -i -e " s|type BeeController struct {|// +kubebuilder:rbac:groups=" " ,resources=pods,verbs=get;watch;list\ntype BeeController struct {|" pkg/controller/bee/controller.go
153
+ sed -i -e ' /type Bee struct/ i \
154
+ // +kubebuilder:categories=foo,bar
155
+ ' pkg/apis/insect/v1beta1/bee_types.go
156
+
157
+ sed -i -e ' /type BeeController struct {/ i \
158
+ // +kubebuilder:rbac:groups="",resources=pods,verbs=get;watch;list
159
+ ' pkg/controller/bee/controller.go
152
160
153
161
header_text " generating and testing CRD definition"
154
162
kubebuilder create config --crds --output crd.yaml
@@ -159,7 +167,7 @@ function generate_crd_resources {
159
167
# TODO: this is awkwardly inserted after the first resource created in this
160
168
# test because the output order seems nondeterministic and it's preferable to
161
169
# avoid introducing a new dependency like yq or complex parsing logic
162
- cat << EOF > expected .yaml
170
+ cat << EOF | diff crd .yaml -
163
171
apiVersion: apiextensions.k8s.io/v1beta1
164
172
kind: CustomResourceDefinition
165
173
metadata:
@@ -198,9 +206,8 @@ status:
198
206
plural: ""
199
207
conditions: null
200
208
EOF
201
- diff crd.yaml expected.yaml
202
209
203
- cat << EOF > expected .yaml
210
+ cat << EOF | diff -B install .yaml -
204
211
apiVersion: v1
205
212
kind: Namespace
206
213
metadata:
@@ -357,7 +364,6 @@ status:
357
364
replicas: 0
358
365
359
366
EOF
360
- diff -B install.yaml expected.yaml
361
367
362
368
363
369
kubebuilder create resource --group insect --version v1beta1 --kind Wasp
366
372
367
373
# Check for ordering of generated YAML
368
374
# TODO: make this a more concise test in a follow-up
369
- cat << EOF > expected .yaml
375
+ cat << EOF | diff crd .yaml -
370
376
apiVersion: apiextensions.k8s.io/v1beta1
371
377
kind: CustomResourceDefinition
372
378
metadata:
@@ -475,7 +481,6 @@ status:
475
481
plural: ""
476
482
conditions: null
477
483
EOF
478
- diff crd.yaml expected.yaml
479
484
}
480
485
481
486
function test_generated_controller {
@@ -490,45 +495,56 @@ function test_generated_controller {
490
495
}
491
496
492
497
function test_vendor_update {
493
- header_text " performing vendor update"
494
- kubebuilder update vendor
498
+ header_text " performing vendor update"
499
+ kubebuilder update vendor
495
500
}
496
501
497
502
function test_docs {
498
503
header_text " building docs"
499
504
kubebuilder docs --docs-copyright " Hello" --title " World" --cleanup=false --brodocs=false
500
- diff docs/reference/includes $kb_orig /test/docs/expected/includes
501
- diff docs/reference/manifest.json $kb_orig /test/docs/expected/manifest.json
502
- diff docs/reference/config.yaml $kb_orig /test/docs/expected/config.yaml
505
+ diff docs/reference/includes " $kb_orig /test/docs/expected/includes"
506
+ diff docs/reference/manifest.json " $kb_orig /test/docs/expected/manifest.json"
507
+ diff docs/reference/config.yaml " $kb_orig /test/docs/expected/config.yaml"
503
508
504
509
header_text " testing doc annotations"
505
- sed -i -e " s|// +kubebuilder:categories=foo,bar|// +kubebuilder:categories=foo,bar\n// +kubebuilder:doc:note=test notes message annotations\n// +kubebuilder:doc:warning=test warnings message annotations|" pkg/apis/insect/v1beta1/bee_types.go
510
+ sed -i -e ' /type Bee struct/ i \
511
+ // +kubebuilder:doc:note=test notes message annotations\
512
+ // +kubebuilder:doc:warning=test warnings message annotations
513
+ ' pkg/apis/insect/v1beta1/bee_types.go
514
+
506
515
kubebuilder docs --brodocs=false --cleanup=false
507
- diff docs/reference/config.yaml $kb_orig /test/docs/expected/config-annotated.yaml
516
+ diff docs/reference/config.yaml " $kb_orig /test/docs/expected/config-annotated.yaml"
508
517
}
509
518
510
519
function generate_controller {
511
520
header_text " creating controller"
512
- kubebuilder create controller --group ant --version v1beta1 --kind Ant
521
+ kubebuilder create controller --group ant --version v1beta1 --kind Ant
513
522
}
514
523
515
524
function update_controller_test {
516
525
# Update import
517
- sed -i ' s!"k8s.io/client-go/kubernetes/typed/apps/v1beta2"!&\n "k8s.io/api/core/v1"!' ./pkg/controller/deployment/controller_test.go
526
+ sed -i -e ' /"k8s.io\/client-go\/kubernetes\/typed\/apps\/v1beta2"/ a \
527
+ "k8s.io/api/core/v1"
528
+ ' ./pkg/controller/deployment/controller_test.go
518
529
519
530
# Fill deployment instance
520
- sed -i ' s!instance.Name = "instance-1"!&\n instance.Spec.Template.Spec.Containers = []v1.Container{{Name: "name", Image: "someimage"}}\n labels := map[string]string{"foo": "bar"}\n instance.Spec.Template.ObjectMeta.Labels = labels\n instance.Spec.Selector = \&metav1.LabelSelector{MatchLabels: labels}!' ./pkg/controller/deployment/controller_test.go
531
+ sed -i -e ' /instance.Name = "instance-1"/ a \
532
+ instance.Spec.Template.Spec.Containers = []v1.Container{{Name: "name", Image: "someimage"}}\
533
+ labels := map[string]string{"foo": "bar"}\
534
+ instance.Spec.Template.ObjectMeta.Labels = labels\
535
+ instance.Spec.Selector = \&metav1.LabelSelector{MatchLabels: labels}
536
+ ' ./pkg/controller/deployment/controller_test.go
521
537
}
522
538
523
539
function generate_coretype_controller {
524
- header_text " generating controller for coretype Deployment"
540
+ header_text " generating controller for coretype Deployment"
525
541
526
- # Run the commands
527
- kubebuilder init repo --domain sample.kubernetes.io --controller-only
528
- kubebuilder create controller --group apps --version v1beta2 --kind Deployment --core-type
542
+ # Run the commands
543
+ kubebuilder init repo --domain sample.kubernetes.io --controller-only
544
+ kubebuilder create controller --group apps --version v1beta2 --kind Deployment --core-type
529
545
530
546
# Fill the required fileds of Deployment object so that the Deployment instance can be successfully created
531
- update_controller_test
547
+ update_controller_test
532
548
}
533
549
534
550
function generate_resource_with_coretype_controller {
@@ -539,7 +555,7 @@ function generate_resource_with_coretype_controller {
539
555
kubebuilder create resource --group ant --version v1beta1 --kind Ant
540
556
kubebuilder create controller --group apps --version v1beta2 --kind Deployment --core-type
541
557
542
- # Fill the required fileds of Deployment object so that the Deployment instance can be successfully created
558
+ # Fill the required fields of Deployment object so that the Deployment instance can be successfully created
543
559
update_controller_test
544
560
}
545
561
0 commit comments