Skip to content

Commit 9a99bd0

Browse files
authoredSep 7, 2022
Merge pull request #68 from RobotSail/RobotSail/issue22
Introduce unit-testing through the Ginkgo BDD framework
2 parents 4175d3c + 10a9b6d commit 9a99bd0

9 files changed

+321
-298
lines changed
 

‎.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ testbin/*
1515

1616
# Output of the go coverage tool, specifically when used with LiteIDE
1717
*.out
18+
*.profile
19+
profile.json
1820

1921
# Kubernetes Generated files - skip generated files, except for vendored files
2022

‎Makefile

+63-30
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,9 @@ vet: ## Run go vet against code.
129129
go vet ./...
130130

131131
.PHONY: test
132-
test: lint manifests generate fmt vet lint helm-lint envtest ## Run tests.
133-
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out
132+
GINKGO_ARGS ?= --progress --fail-on-pending --keep-going --cover --coverprofile=cover.profile --race --trace --json-report=report.json --timeout=3m
133+
test: lint manifests generate fmt vet lint envtest ginkgo ## Run tests.
134+
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" $(GINKGO) run $(GINKGO_ARGS) ./...
134135

135136
.PHONY: test-e2e
136137
test-e2e: kuttl ## Run e2e tests. Requires cluster w/ Scribe already installed
@@ -194,32 +195,6 @@ $(CONTROLLER_GEN): $(LOCALBIN)
194195
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
195196
@ echo "✅ Done"
196197

197-
.PHONY: kustomize
198-
KUSTOMIZE = $(LOCALBIN)/kustomize
199-
kustomize: $(KUSTOMIZE)## Download kustomize locally if necessary.
200-
$(KUSTOMIZE): $(LOCALBIN)
201-
@ echo "📥 Downloading kustomize"
202-
GOBIN=$(LOCALBIN) go install sigs.k8s.io/kustomize/kustomize/$(KUSTOMIZE_MAJOR)@$(KUSTOMIZE_VERSION)
203-
@ echo "✅ Done"
204-
205-
.PHONY: helm
206-
HELM := $(LOCALBIN)/helm
207-
HELM_URL := https://get.helm.sh/helm-$(HELM_VERSION)-$(OS)-$(ARCH).tar.gz
208-
helm: $(HELM)
209-
$(HELM): $(LOCALBIN)
210-
@ echo "📥 Downloading helm"
211-
curl -sSL "$(HELM_URL)" | tar xzf - -C $(LOCALBIN) --strip-components=1 --wildcards '*/helm'
212-
@ echo "✅ Done"
213-
214-
215-
.PHONY: golangci-lint
216-
GOLANGCILINT := $(LOCALBIN)/golangci-lint
217-
GOLANGCI_URL := https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh
218-
golangci-lint: $(GOLANGCILINT) ## Download golangci-lint
219-
$(GOLANGCILINT): $(LOCALBIN)
220-
@ echo "📥 Downloading helm"
221-
curl -sSfL $(GOLANGCI_URL) | sh -s -- -b $(LOCALBIN) $(GOLANGCI_VERSION)
222-
@ echo "✅ Done"
223198

224199
.PHONY: envtest
225200
ENVTEST = $(LOCALBIN)/setup-envtest
@@ -297,18 +272,76 @@ catalog-build: opm ## Build a catalog image.
297272
catalog-push: ## Push a catalog image.
298273
$(MAKE) docker-push IMG=$(CATALOG_IMG)
299274

275+
276+
##@ Download Utilities
277+
300278
# download-tool will curl any file $2 and install it to $1.
301279
define download-tool
302280
@[ -f $(1) ] || { \
303281
set -e ;\
304-
echo "Downloading $(2)" ;\
282+
echo "📥 Downloading $(2)" ;\
305283
curl -sSLo "$(1)" "$(2)" ;\
306284
chmod a+x "$(1)" ;\
285+
echo "✅ Done" ;\
286+
}
287+
endef
288+
289+
# install-go-tool will download any $2 URL and install to $1
290+
define install-go-tool
291+
@[ -f $(1) ] || { \
292+
set -e ;\
293+
echo "📥 Downloading $(2)" ;\
294+
GOBIN=$(1) go install $(2) ;\
295+
echo "✅ Done" ;\
307296
}
308297
endef
309298

299+
# install-go-tool will download any $2 URL and install to $1
300+
define install-go-tool-mod
301+
@[ -f $(1) ] || { \
302+
set -e ;\
303+
echo "📥 Downloading $(2)" ;\
304+
GOBIN=$(1) go install -mod=mod $(2) ;\
305+
echo "✅ Done" ;\
306+
}
307+
endef
308+
309+
310+
310311
.PHONY: kuttl
311-
KUTTL := $(PROJECT_DIR)/bin/kuttl
312+
KUTTL := $(LOCALBIN)/kuttl
312313
KUTTL_URL := https://github.com/kudobuilder/kuttl/releases/download/v$(KUTTL_VERSION)/kubectl-kuttl_$(KUTTL_VERSION)_linux_x86_64
313314
kuttl: ## Download kuttl
314315
$(call download-tool,$(KUTTL),$(KUTTL_URL))
316+
317+
.PHONY: ginkgo
318+
GINKGO := $(LOCALBIN)/ginkgo
319+
GINKGO_URL := github.com/onsi/ginkgo/v2/ginkgo
320+
ginkgo: $(GINKGO) ## Install ginkgo
321+
$(GINKGO): $(LOCALBIN)
322+
$(call install-go-tool-mod,$(LOCALBIN),$(GINKGO_URL))
323+
324+
325+
.PHONY: kustomize
326+
KUSTOMIZE = $(LOCALBIN)/kustomize
327+
KUSTOMIZE_URL := sigs.k8s.io/kustomize/kustomize/$(KUSTOMIZE_MAJOR)@$(KUSTOMIZE_VERSION)
328+
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
329+
$(KUSTOMIZE): $(LOCALBIN)
330+
$(call install-go-tool,$(LOCALBIN),$(KUSTOMIZE_URL))
331+
332+
.PHONY: helm
333+
HELM := $(LOCALBIN)/helm
334+
HELM_URL := https://get.helm.sh/helm-$(HELM_VERSION)-$(OS)-$(ARCH).tar.gz
335+
helm: $(HELM) ## Install helm
336+
$(HELM): $(LOCALBIN)
337+
$(call download-tool,$(HELM),$(HELM_URL))
338+
339+
340+
.PHONY: golangci-lint
341+
GOLANGCILINT := $(LOCALBIN)/golangci-lint
342+
GOLANGCI_URL := https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh
343+
golangci-lint: $(GOLANGCILINT) ## Download golangci-lint
344+
$(GOLANGCILINT): $(LOCALBIN)
345+
@ echo "📥 Downloading helm"
346+
curl -sSfL $(GOLANGCI_URL) | sh -s -- -b $(LOCALBIN) $(GOLANGCI_VERSION)
347+
@ echo "✅ Done"

‎controllers/ipfs_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func (r *IpfsReconciler) createTrackedObjects(
143143

144144
mutsa := r.serviceAccount(instance, &sa)
145145
mutsvc, svcName := r.serviceCluster(instance, &svc)
146-
mutCmScripts, cmScriptName := r.configMapScripts(ctx, instance, &cmScripts)
146+
mutCmScripts, cmScriptName := r.ConfigMapScripts(ctx, instance, &cmScripts)
147147
mutCmConfig, cmConfigName := r.configMapConfig(instance, &cmConfig, peerID.String())
148148
mutSecConfig, secConfigName := r.secretConfig(instance, &secConfig, []byte(clusterSecret), []byte(privateString))
149149
mutSts := r.statefulSet(instance, &sts, svcName, secConfigName, cmConfigName, cmScriptName)

‎controllers/scripts.go

+11-2
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,18 @@ import (
1919
ctrllog "sigs.k8s.io/controller-runtime/pkg/log"
2020
)
2121

22-
// configMapScripts Returns a mutate function which loads the given configMap with scripts that
22+
const (
23+
// ScriptConfigureIPFS Defines the script run by the IPFS containers
24+
// in order to initialize their state.
25+
ScriptConfigureIPFS = "configure-ipfs.sh"
26+
// ScriptIPFSClusterEntryPoint Defines a shell script used as the entrypoint
27+
// for the IPFS Cluster container.
28+
ScriptIPFSClusterEntryPoint = "entrypoint.sh"
29+
)
30+
31+
// ConfigMapScripts Returns a mutate function which loads the given configMap with scripts that
2332
// customize the startup of the IPFS containers depending on the values from the given IPFS cluster resource.
24-
func (r *IpfsReconciler) configMapScripts(
33+
func (r *IpfsReconciler) ConfigMapScripts(
2534
ctx context.Context,
2635
m *clusterv1alpha1.Ipfs,
2736
cm *corev1.ConfigMap,

‎controllers/scripts_test.go

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package controllers_test
2+
3+
import (
4+
"context"
5+
6+
. "github.com/onsi/ginkgo/v2"
7+
. "github.com/onsi/gomega"
8+
v1 "k8s.io/api/core/v1"
9+
10+
"github.com/redhat-et/ipfs-operator/api/v1alpha1"
11+
"github.com/redhat-et/ipfs-operator/controllers"
12+
)
13+
14+
var _ = Describe("IPFS Reconciler", func() {
15+
var ipfsReconciler *controllers.IpfsReconciler
16+
var ipfs *v1alpha1.Ipfs
17+
var configMap *v1.ConfigMap
18+
var ctx context.Context
19+
20+
BeforeEach(func() {
21+
ctx = context.TODO()
22+
ipfsReconciler = &controllers.IpfsReconciler{
23+
Scheme: k8sClient.Scheme(),
24+
Client: k8sClient,
25+
}
26+
configMap = &v1.ConfigMap{}
27+
ipfs = &v1alpha1.Ipfs{}
28+
})
29+
30+
When("ConfigMapScripts are edited", func() {
31+
const myName = "my-fav-ipfs-node"
32+
BeforeEach(func() {
33+
// uses the name
34+
ipfs.Name = myName
35+
})
36+
37+
It("populates the ConfigMap", func() {
38+
// configMap is empty
39+
Expect(len(configMap.Data)).To(Equal(0))
40+
fn, _ := ipfsReconciler.ConfigMapScripts(ctx, ipfs, configMap)
41+
// should not have errored
42+
Expect(fn()).NotTo(HaveOccurred())
43+
// the configmap should be populated with the following scripts
44+
Expect(len(configMap.Data)).To(Equal(2))
45+
46+
expectedKeys := []string{
47+
controllers.ScriptConfigureIPFS,
48+
controllers.ScriptIPFSClusterEntryPoint,
49+
}
50+
for _, key := range expectedKeys {
51+
data, ok := configMap.Data[key]
52+
Expect(ok).To(BeTrue())
53+
Expect(data).NotTo(BeEmpty())
54+
}
55+
})
56+
57+
It("contains the IPFS resource name", func() {
58+
fn, name := ipfsReconciler.ConfigMapScripts(ctx, ipfs, configMap)
59+
Expect(fn).NotTo(BeNil())
60+
Expect(fn()).NotTo(HaveOccurred())
61+
Expect(name).To(ContainSubstring(myName))
62+
Expect(name).To(Equal("ipfs-cluster-scripts-" + myName))
63+
})
64+
})
65+
})

‎controllers/suite_test.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,17 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package controllers
17+
package controllers_test
1818

1919
import (
2020
"path/filepath"
2121
"testing"
2222

23-
. "github.com/onsi/ginkgo"
23+
. "github.com/onsi/ginkgo/v2"
2424
. "github.com/onsi/gomega"
2525
"k8s.io/client-go/kubernetes/scheme"
2626
"sigs.k8s.io/controller-runtime/pkg/client"
2727
"sigs.k8s.io/controller-runtime/pkg/envtest"
28-
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
2928
logf "sigs.k8s.io/controller-runtime/pkg/log"
3029
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3130

@@ -42,9 +41,7 @@ var testEnv *envtest.Environment
4241
func TestAPIs(t *testing.T) {
4342
RegisterFailHandler(Fail)
4443

45-
RunSpecsWithDefaultAndCustomReporters(t,
46-
"Controller Suite",
47-
[]Reporter{printer.NewlineReporter{}})
44+
RunSpecs(t, "Controller Suite")
4845
}
4946

5047
var _ = BeforeSuite(func() {
@@ -68,8 +65,7 @@ var _ = BeforeSuite(func() {
6865
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
6966
Expect(err).NotTo(HaveOccurred())
7067
Expect(k8sClient).NotTo(BeNil())
71-
72-
}, 60)
68+
})
7369

7470
var _ = AfterSuite(func() {
7571
By("tearing down the test environment")

‎go.mod

+42-36
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,27 @@ require (
99
github.com/libp2p/go-libp2p-core v0.16.1
1010
github.com/libp2p/go-libp2p-relay-daemon v0.1.1-0.20220720133550-bd5627c90f06
1111
github.com/multiformats/go-multiaddr v0.5.0
12-
github.com/onsi/ginkgo v1.16.5
13-
github.com/onsi/gomega v1.17.0
14-
k8s.io/apimachinery v0.23.5
15-
k8s.io/client-go v0.23.0
16-
sigs.k8s.io/controller-runtime v0.11.0
12+
github.com/onsi/ginkgo/v2 v2.1.4
13+
github.com/onsi/gomega v1.20.0
14+
k8s.io/apimachinery v0.25.0
15+
k8s.io/client-go v0.25.0
16+
sigs.k8s.io/controller-runtime v0.12.3
1717
)
1818

1919
require (
20-
cloud.google.com/go/compute v1.6.1 // indirect
20+
cloud.google.com/go/compute v1.7.0 // indirect
2121
github.com/btcsuite/btcd v0.22.1 // indirect
2222
github.com/btcsuite/btcd/btcec/v2 v2.1.3 // indirect
2323
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect
2424
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
25+
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
26+
github.com/go-openapi/jsonpointer v0.19.5 // indirect
27+
github.com/go-openapi/jsonreference v0.20.0 // indirect
28+
github.com/go-openapi/swag v0.22.3 // indirect
29+
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
30+
github.com/golang-jwt/jwt/v4 v4.2.0 // indirect
31+
github.com/google/gnostic v0.6.9 // indirect
32+
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
2533
github.com/hashicorp/golang-lru v0.5.4 // indirect
2634
github.com/ipfs/bbloom v0.0.4 // indirect
2735
github.com/ipfs/go-block-format v0.0.3 // indirect
@@ -43,13 +51,15 @@ require (
4351
github.com/ipld/go-codec-dagpb v1.4.0 // indirect
4452
github.com/ipld/go-ipld-prime v0.17.0 // indirect
4553
github.com/jbenet/goprocess v0.1.4 // indirect
54+
github.com/josharian/intern v1.0.0 // indirect
4655
github.com/klauspost/cpuid/v2 v2.0.12 // indirect
4756
github.com/libp2p/go-buffer-pool v0.0.2 // indirect
4857
github.com/libp2p/go-cidranger v1.1.0 // indirect
4958
github.com/libp2p/go-libp2p-asn-util v0.2.0 // indirect
5059
github.com/libp2p/go-libp2p-resource-manager v0.3.0 // indirect
5160
github.com/libp2p/go-msgio v0.2.0 // indirect
5261
github.com/libp2p/go-openssl v0.0.7 // indirect
62+
github.com/mailru/easyjson v0.7.7 // indirect
5363
github.com/mattn/go-isatty v0.0.14 // indirect
5464
github.com/minio/sha256-simd v1.0.0 // indirect
5565
github.com/mitchellh/go-homedir v1.1.0 // indirect
@@ -60,76 +70,72 @@ require (
6070
github.com/multiformats/go-multicodec v0.5.0 // indirect
6171
github.com/multiformats/go-multihash v0.2.0 // indirect
6272
github.com/multiformats/go-varint v0.0.6 // indirect
73+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
6374
github.com/opentracing/opentracing-go v1.2.0 // indirect
6475
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
6576
github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e // indirect
6677
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
6778
github.com/spaolacci/murmur3 v1.1.0 // indirect
68-
github.com/stretchr/testify v1.7.2 // indirect
6979
github.com/whyrusleeping/cbor-gen v0.0.0-20210219115102-f37d292932f2 // indirect
70-
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect
71-
google.golang.org/grpc v1.46.2 // indirect
80+
golang.org/x/tools v0.1.12 // indirect
81+
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect
7282
lukechampine.com/blake3 v1.1.7 // indirect
7383
)
7484

7585
require (
7686
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
77-
github.com/Azure/go-autorest/autorest v0.11.18 // indirect
78-
github.com/Azure/go-autorest/autorest/adal v0.9.13 // indirect
87+
github.com/Azure/go-autorest/autorest v0.11.27 // indirect
88+
github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect
7989
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
8090
github.com/Azure/go-autorest/logger v0.2.1 // indirect
8191
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
8292
github.com/beorn7/perks v1.0.1 // indirect
8393
github.com/cespare/xxhash/v2 v2.1.2 // indirect
8494
github.com/davecgh/go-spew v1.1.1 // indirect
85-
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
86-
github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect
95+
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
8796
github.com/fsnotify/fsnotify v1.5.4 // indirect
8897
github.com/go-logr/logr v1.2.3
89-
github.com/go-logr/zapr v1.2.0 // indirect
98+
github.com/go-logr/zapr v1.2.3 // indirect
9099
github.com/gogo/protobuf v1.3.2 // indirect
91100
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
92101
github.com/golang/protobuf v1.5.2 // indirect
93102
github.com/google/go-cmp v0.5.8 // indirect
94-
github.com/google/gofuzz v1.1.0 // indirect
103+
github.com/google/gofuzz v1.2.0 // indirect
95104
github.com/google/uuid v1.3.0 // indirect
96-
github.com/googleapis/gnostic v0.5.5 // indirect
97-
github.com/imdario/mergo v0.3.12 // indirect
105+
github.com/imdario/mergo v0.3.13 // indirect
98106
github.com/json-iterator/go v1.1.12 // indirect
99107
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
100108
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
101109
github.com/modern-go/reflect2 v1.0.2 // indirect
102-
github.com/nxadm/tail v1.4.8 // indirect
103110
github.com/pkg/errors v0.9.1 // indirect
104-
github.com/prometheus/client_golang v1.12.1 // indirect
111+
github.com/prometheus/client_golang v1.13.0 // indirect
105112
github.com/prometheus/client_model v0.2.0 // indirect
106-
github.com/prometheus/common v0.33.0 // indirect
107-
github.com/prometheus/procfs v0.7.3 // indirect
113+
github.com/prometheus/common v0.37.0 // indirect
114+
github.com/prometheus/procfs v0.8.0 // indirect
108115
github.com/spf13/pflag v1.0.5 // indirect
109116
go.uber.org/atomic v1.9.0 // indirect
110117
go.uber.org/multierr v1.8.0 // indirect
111118
go.uber.org/zap v1.21.0 // indirect
112119
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
113-
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect
114-
golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect
115-
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 // indirect
116-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
120+
golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b // indirect
121+
golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 // indirect
122+
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 // indirect
123+
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect
117124
golang.org/x/text v0.3.7 // indirect
118-
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
125+
golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 // indirect
119126
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
120127
google.golang.org/appengine v1.6.7 // indirect
121-
google.golang.org/protobuf v1.28.0 // indirect
128+
google.golang.org/protobuf v1.28.1 // indirect
122129
gopkg.in/inf.v0 v0.9.1 // indirect
123-
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
124130
gopkg.in/yaml.v2 v2.4.0
125131
gopkg.in/yaml.v3 v3.0.1 // indirect
126-
k8s.io/api v0.23.5
127-
k8s.io/apiextensions-apiserver v0.23.0 // indirect
128-
k8s.io/component-base v0.23.0 // indirect
129-
k8s.io/klog/v2 v2.30.0 // indirect
130-
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect
131-
k8s.io/utils v0.0.0-20211116205334-6203023598ed // indirect
132-
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect
133-
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
132+
k8s.io/api v0.25.0
133+
k8s.io/apiextensions-apiserver v0.25.0 // indirect
134+
k8s.io/component-base v0.25.0 // indirect
135+
k8s.io/klog/v2 v2.70.1 // indirect
136+
k8s.io/kube-openapi v0.0.0-20220803164354-a70c9af30aea // indirect
137+
k8s.io/utils v0.0.0-20220823124924-e9cbc92d1a73 // indirect
138+
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect
139+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
134140
sigs.k8s.io/yaml v1.3.0 // indirect
135141
)

‎go.sum

+123-221
Large diffs are not rendered by default.

‎tools.go

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//go:build tools
2+
// +build tools
3+
4+
package main
5+
6+
// this file exists so that we can store the dependencies from the
7+
// ginkgo/v2 binary within our go.mod file
8+
import (
9+
_ "github.com/onsi/ginkgo/v2/ginkgo"
10+
)

0 commit comments

Comments
 (0)
Please sign in to comment.