diff --git a/config/crds/kudo.dev_teststeps.yaml b/config/crds/kudo.dev_teststeps.yaml deleted file mode 100644 index 6f4cb7cc9..000000000 --- a/config/crds/kudo.dev_teststeps.yaml +++ /dev/null @@ -1,131 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: teststeps.kudo.dev -spec: - group: kudo.dev - names: - kind: TestStep - listKind: TestStepList - plural: teststeps - singular: teststep - scope: Namespaced - validation: - openAPIV3Schema: - description: TestStep settings to apply to a test step. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - commands: - description: Commands to run prior at the beginning of the test step. - items: - description: Command describes a command to run as a part of a test step - or suite. - properties: - command: - description: The command and argument to run as a string. - type: string - ignoreFailure: - description: If set, failures will be ignored. - type: boolean - namespaced: - description: If set, the `--namespace` flag will be appended to the - command with the namespace to use. - type: boolean - required: - - command - - ignoreFailure - - namespaced - type: object - type: array - delete: - description: Objects to delete at the beginning of the test step. - items: - description: ObjectReference is a Kubernetes object reference with added - labels to allow referencing objects by label. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of an entire - object, this string should contain a valid JSON/Go field access - statement, such as desiredState.manifest.containers[2]. For example, - if the object reference is to a container within a pod, this would - take on a value like: "spec.containers{name}" (where "name" refers - to the name of the container that triggered the event) or if no - container name is specified "spec.containers[2]" (container with - index 2 in this pod). This syntax is chosen only to have some well-defined - way of referencing a part of an object. TODO: this design is not - final and this field is subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - labels: - additionalProperties: - type: string - description: Labels to match on. - type: object - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference is - made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - required: - - labels - type: object - type: array - index: - format: int64 - type: integer - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - kubectl: - description: Kubectl commands to run at the start of the test - items: - type: string - type: array - metadata: - description: Override the default metadata. Set labels or override the test - step name. - type: object - unitTest: - description: Indicates that this is a unit test - safe to run without a - real Kubernetes cluster. - type: boolean - required: - - commands - - kubectl - - unitTest - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/config/crds/kudo.dev_testsuites.yaml b/config/crds/kudo.dev_testsuites.yaml deleted file mode 100644 index b91f8a2c9..000000000 --- a/config/crds/kudo.dev_testsuites.yaml +++ /dev/null @@ -1,150 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: testsuites.kudo.dev -spec: - group: kudo.dev - names: - kind: TestSuite - listKind: TestSuiteList - plural: testsuites - singular: testsuite - scope: Namespaced - validation: - openAPIV3Schema: - description: TestSuite configures which tests should be loaded. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - artifactsDir: - description: The directory to output artifacts to (current working directory - if not specified). - type: string - commands: - description: Commands to run prior to running the tests. - items: - description: Command describes a command to run as a part of a test step - or suite. - properties: - command: - description: The command and argument to run as a string. - type: string - ignoreFailure: - description: If set, failures will be ignored. - type: boolean - namespaced: - description: If set, the `--namespace` flag will be appended to the - command with the namespace to use. - type: boolean - required: - - command - - ignoreFailure - - namespaced - type: object - type: array - crdDir: - description: Path to CRDs to install before running tests. - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - kindConfig: - description: Path to the KIND configuration file to use. - type: string - kindContainers: - description: Containers to load to each KIND node prior to running the tests. - items: - type: string - type: array - kindContext: - description: KIND context to use. - type: string - kindNodeCache: - description: If set, each node defined in the kind configuration will have - a docker named volume mounted into it to persist pulled container images - across test runs. - type: boolean - kubectl: - description: Kubectl commands to run before running any tests. - items: - type: string - type: array - manifestDirs: - description: Paths to directories containing manifests to install before - running tests. - items: - type: string - type: array - metadata: - description: Set labels or the test suite name. - type: object - parallel: - description: 'The maximum number of tests to run at once (default: 8).' - format: int64 - type: integer - skipClusterDelete: - description: If set, do not delete the mocked control plane or kind cluster. - type: boolean - skipDelete: - description: If set, do not delete the resources after running the tests - (implies SkipClusterDelete). - type: boolean - startControlPlane: - description: Whether or not to start a local etcd and kubernetes API server - for the tests. - type: boolean - startKIND: - description: Whether or not to start a local kind cluster for the tests. - type: boolean - startKUDO: - description: Whether or not to start the KUDO controller for the tests. - type: boolean - testDirs: - description: Directories containing test cases to run. - items: - type: string - type: array - timeout: - description: Override the default timeout of 30 seconds (in seconds). - format: int64 - type: integer - required: - - artifactsDir - - commands - - crdDir - - kindConfig - - kindContainers - - kindContext - - kindNodeCache - - kubectl - - manifestDirs - - parallel - - skipClusterDelete - - skipDelete - - startControlPlane - - startKIND - - startKUDO - - testDirs - - timeout - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/hack/update_codegen.sh b/hack/update_codegen.sh index b077c2fa4..001cbee45 100755 --- a/hack/update_codegen.sh +++ b/hack/update_codegen.sh @@ -18,6 +18,13 @@ else git -C "${CODE_GEN_DIR}" reset --hard "${VERSION}" fi +"${CODE_GEN_DIR}"/generate-groups.sh \ + deepcopy \ + github.com/kudobuilder/kudo/pkg/client \ + github.com/kudobuilder/kudo/pkg/apis \ + "testharness:v1beta1" \ + --go-header-file hack/boilerplate.go.txt # must be last for some reason + "${CODE_GEN_DIR}"/generate-groups.sh \ all \ github.com/kudobuilder/kudo/pkg/client \ diff --git a/pkg/apis/kudo/v1beta1/zz_generated.deepcopy.go b/pkg/apis/kudo/v1beta1/zz_generated.deepcopy.go index b60bc47ce..ca5fa8e05 100644 --- a/pkg/apis/kudo/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/kudo/v1beta1/zz_generated.deepcopy.go @@ -39,22 +39,6 @@ func (in *AggregatedStatus) DeepCopy() *AggregatedStatus { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Command) DeepCopyInto(out *Command) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Command. -func (in *Command) DeepCopy() *Command { - if in == nil { - return nil - } - out := new(Command) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DummyTaskSpec) DeepCopyInto(out *DummyTaskSpec) { *out = *in @@ -196,30 +180,6 @@ func (in *Maintainer) DeepCopy() *Maintainer { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ObjectReference) DeepCopyInto(out *ObjectReference) { - *out = *in - out.ObjectReference = in.ObjectReference - if in.Labels != nil { - in, out := &in.Labels, &out.Labels - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectReference. -func (in *ObjectReference) DeepCopy() *ObjectReference { - if in == nil { - return nil - } - out := new(ObjectReference) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Operator) DeepCopyInto(out *Operator) { *out = *in @@ -720,122 +680,3 @@ func (in *TaskSpec) DeepCopy() *TaskSpec { in.DeepCopyInto(out) return out } - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestAssert) DeepCopyInto(out *TestAssert) { - *out = *in - out.TypeMeta = in.TypeMeta - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestAssert. -func (in *TestAssert) DeepCopy() *TestAssert { - if in == nil { - return nil - } - out := new(TestAssert) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *TestAssert) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestStep) DeepCopyInto(out *TestStep) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - if in.Delete != nil { - in, out := &in.Delete, &out.Delete - *out = make([]ObjectReference, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Kubectl != nil { - in, out := &in.Kubectl, &out.Kubectl - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Commands != nil { - in, out := &in.Commands, &out.Commands - *out = make([]Command, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestStep. -func (in *TestStep) DeepCopy() *TestStep { - if in == nil { - return nil - } - out := new(TestStep) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *TestStep) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestSuite) DeepCopyInto(out *TestSuite) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - if in.ManifestDirs != nil { - in, out := &in.ManifestDirs, &out.ManifestDirs - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.TestDirs != nil { - in, out := &in.TestDirs, &out.TestDirs - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.KINDContainers != nil { - in, out := &in.KINDContainers, &out.KINDContainers - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Kubectl != nil { - in, out := &in.Kubectl, &out.Kubectl - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Commands != nil { - in, out := &in.Commands, &out.Commands - *out = make([]Command, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestSuite. -func (in *TestSuite) DeepCopy() *TestSuite { - if in == nil { - return nil - } - out := new(TestSuite) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *TestSuite) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} diff --git a/pkg/apis/testharness/v1beta1/doc.go b/pkg/apis/testharness/v1beta1/doc.go new file mode 100644 index 000000000..4e615baea --- /dev/null +++ b/pkg/apis/testharness/v1beta1/doc.go @@ -0,0 +1,21 @@ +/* + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1beta1 contains API Schema definitions for the testharness API group +// +k8s:openapi-gen=false +// +k8s:deepcopy-gen=package +// +groupName=kudo.dev +// +kubebuilder:skip +package v1beta1 diff --git a/pkg/apis/kudo/v1beta1/test_types.go b/pkg/apis/testharness/v1beta1/test_types.go similarity index 100% rename from pkg/apis/kudo/v1beta1/test_types.go rename to pkg/apis/testharness/v1beta1/test_types.go diff --git a/pkg/apis/testharness/v1beta1/zz_generated.deepcopy.go b/pkg/apis/testharness/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 000000000..72b2f8575 --- /dev/null +++ b/pkg/apis/testharness/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,182 @@ +// +build !ignore_autogenerated + +/* + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// Code generated by deepcopy-gen. DO NOT EDIT. + +package v1beta1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Command) DeepCopyInto(out *Command) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Command. +func (in *Command) DeepCopy() *Command { + if in == nil { + return nil + } + out := new(Command) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ObjectReference) DeepCopyInto(out *ObjectReference) { + *out = *in + out.ObjectReference = in.ObjectReference + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectReference. +func (in *ObjectReference) DeepCopy() *ObjectReference { + if in == nil { + return nil + } + out := new(ObjectReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestAssert) DeepCopyInto(out *TestAssert) { + *out = *in + out.TypeMeta = in.TypeMeta + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestAssert. +func (in *TestAssert) DeepCopy() *TestAssert { + if in == nil { + return nil + } + out := new(TestAssert) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TestAssert) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestStep) DeepCopyInto(out *TestStep) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Delete != nil { + in, out := &in.Delete, &out.Delete + *out = make([]ObjectReference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Kubectl != nil { + in, out := &in.Kubectl, &out.Kubectl + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Commands != nil { + in, out := &in.Commands, &out.Commands + *out = make([]Command, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestStep. +func (in *TestStep) DeepCopy() *TestStep { + if in == nil { + return nil + } + out := new(TestStep) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TestStep) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestSuite) DeepCopyInto(out *TestSuite) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.ManifestDirs != nil { + in, out := &in.ManifestDirs, &out.ManifestDirs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.TestDirs != nil { + in, out := &in.TestDirs, &out.TestDirs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.KINDContainers != nil { + in, out := &in.KINDContainers, &out.KINDContainers + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Kubectl != nil { + in, out := &in.Kubectl, &out.Kubectl + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Commands != nil { + in, out := &in.Commands, &out.Commands + *out = make([]Command, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestSuite. +func (in *TestSuite) DeepCopy() *TestSuite { + if in == nil { + return nil + } + out := new(TestSuite) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *TestSuite) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/pkg/kudoctl/cmd/test.go b/pkg/kudoctl/cmd/test.go index a611ac03b..a6a18b192 100644 --- a/pkg/kudoctl/cmd/test.go +++ b/pkg/kudoctl/cmd/test.go @@ -10,7 +10,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" "github.com/kudobuilder/kudo/pkg/test" testutils "github.com/kudobuilder/kudo/pkg/test/utils" ) @@ -49,7 +49,7 @@ func newTestCmd() *cobra.Command { parallel := 0 artifactsDir := "" - options := kudo.TestSuite{} + options := harness.TestSuite{} testCmd := &cobra.Command{ Use: "test [flags]... [test directories]...", @@ -87,7 +87,7 @@ For more detailed documentation, visit: https://kudo.dev/docs/testing`, kind := obj.GetObjectKind().GroupVersionKind().Kind if kind == "TestSuite" { - options = *obj.(*kudo.TestSuite) + options = *obj.(*harness.TestSuite) } else { log.Println(fmt.Errorf("unknown object type: %s", kind)) } @@ -122,7 +122,7 @@ For more detailed documentation, visit: https://kudo.dev/docs/testing`, } if options.KINDContext == "" { - options.KINDContext = kudo.DefaultKINDContext + options.KINDContext = harness.DefaultKINDContext } if options.StartControlPlane && options.StartKIND { diff --git a/pkg/kudoctl/kudoinit/crd/bindata.go b/pkg/kudoctl/kudoinit/crd/bindata.go index 6d84be4cb..9447ab34c 100644 --- a/pkg/kudoctl/kudoinit/crd/bindata.go +++ b/pkg/kudoctl/kudoinit/crd/bindata.go @@ -3,8 +3,6 @@ // config/crds/kudo.dev_instances.yaml // config/crds/kudo.dev_operators.yaml // config/crds/kudo.dev_operatorversions.yaml -// config/crds/kudo.dev_teststeps.yaml -// config/crds/kudo.dev_testsuites.yaml package crd import ( @@ -141,46 +139,6 @@ func configCrdsKudoDev_operatorversionsYaml() (*asset, error) { return a, nil } -var _configCrdsKudoDev_teststepsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x58\xdd\x6f\xdc\xb8\x11\x7f\xdf\xbf\x62\xe0\x7b\xf0\x1d\x60\x69\x7b\xe9\xa1\x28\xf6\xed\xe0\xf4\x0a\x37\xd7\x38\x88\xdd\xbc\x04\x01\x8e\x2b\x8e\x24\xd6\x14\xa9\x72\x86\xbb\xd9\x16\xfd\xdf\x8b\x21\x25\xed\x97\xf6\x1c\x17\xbd\x34\x40\xe0\xd5\x88\x9c\x8f\xdf\x7c\x6b\x51\x14\xc5\x42\xf5\xe6\x03\x06\x32\xde\xad\x40\xf5\x06\x3f\x33\x3a\x79\xa2\xf2\xe9\x8f\x54\x1a\xbf\xdc\x7c\xbf\x46\x56\xdf\x2f\x9e\x8c\xd3\x2b\xb8\x8d\xc4\xbe\x7b\x8f\xe4\x63\xa8\xf0\x35\xd6\xc6\x19\x36\xde\x2d\x3a\x64\xa5\x15\xab\xd5\x02\x40\x39\xe7\x59\x09\x99\xe4\x11\xa0\xf2\x8e\x83\xb7\x16\x43\xd1\xa0\x2b\x9f\xe2\x1a\xd7\xd1\x58\x8d\x21\x49\x18\xe5\x6f\x7e\x57\xbe\x2a\x7f\x58\x00\x54\x01\xd3\xf5\x47\xd3\x21\xb1\xea\xfa\x15\xb8\x68\xed\x02\xc0\xa9\x0e\x57\xc0\x48\x4c\x8c\x3d\x95\x4f\x51\xfb\x52\xe3\x66\x41\x3d\x56\x22\xac\x09\x3e\xf6\x2b\x98\xe8\xf9\xca\xa0\x47\xb6\xe1\x11\x89\x1f\x18\xfb\x44\xb2\x86\xf8\xcd\x11\xf9\x67\x43\x9c\x5e\xf5\x36\x06\x65\x0f\xa4\x25\x2a\x19\xd7\x44\xab\xc2\x9e\xbe\x00\xa0\xca\xf7\xb8\x82\xb7\x22\xaa\x57\x15\xea\x05\xc0\x46\x59\xa3\x93\x19\x59\xb8\xef\xd1\xfd\xf8\xee\xee\xc3\xef\x1f\xaa\x16\x3b\x95\x89\x00\x1a\xa9\x0a\xa6\x4f\xe7\x26\x1d\x80\x90\xd9\xb8\x86\x80\x3d\xa8\xbe\xb7\xbb\xf4\x23\x89\x04\x91\x59\x0e\xb7\xfb\xe0\x7b\x0c\x6c\x46\x0b\xe5\xdf\x81\x4b\x27\xda\x89\x9c\x6b\x51\x24\x9f\x01\x2d\x4e\x44\x02\x6e\x11\x06\x57\xa0\x06\x4a\x4a\x82\xaf\x81\x5b\x43\x10\xb0\x0f\x48\xe8\xb2\x5b\x0f\xd8\x82\x1c\x51\x0e\xfc\xfa\xef\x58\x71\x09\x0f\x18\x84\x09\x50\xeb\xa3\xd5\xe2\xf9\x0d\x06\x86\x80\x95\x6f\x9c\xf9\xe7\xc4\x39\x59\x26\x22\xad\x12\xa3\x8e\x38\x1a\xc7\x18\x9c\xb2\x02\x61\xc4\x1b\x50\x4e\x43\xa7\x76\x10\x50\x64\x40\x74\x07\xdc\xd2\x11\x2a\xe1\xaf\x3e\x20\x18\x57\xfb\x15\xb4\xcc\x3d\xad\x96\xcb\xc6\xf0\x18\xc4\x95\xef\xba\xe8\x0c\xef\x96\x29\x14\xcd\x3a\xb2\x0f\xb4\xd4\xb8\x41\xbb\x24\xd3\x14\x2a\x54\xad\x61\xac\x38\x06\x5c\xaa\xde\x14\x49\x71\x97\x62\xb8\xec\xf4\x37\x61\x88\x78\xba\x3e\xd0\x94\x77\xe2\x74\xe2\x60\x5c\x33\x91\x45\x94\x72\x9a\x2e\x62\x7f\x3b\x1c\x10\x00\x42\x74\xd0\x07\xe3\x03\x28\x4e\x68\xac\xb1\x31\xce\x19\xd7\x64\xe4\xf1\xdc\xe3\x09\x20\xc6\xee\x48\xc0\xbc\x88\x81\xb8\x46\x02\x35\xea\x35\x4a\x55\x42\xeb\x55\xe0\xe4\xbf\xbd\x98\x23\xa6\x00\x3e\x00\x45\xc3\x58\x1e\xd1\xe7\xa2\xee\xc8\xfa\x53\xf2\x69\x98\xb7\x38\xe9\x93\xfe\x87\x26\x76\xe8\xf8\x48\xb9\x8c\x6b\x79\xc6\x69\x16\xf5\x01\x97\xc6\xf9\x80\x3f\x29\x63\x63\xc0\x67\x74\xb8\xab\x25\xc9\x6e\xa0\xce\xa7\x09\xb6\xc6\x5a\x58\xe3\xc0\x44\x5f\x12\xbc\xf6\xde\xa2\x72\x27\x6f\xdd\x94\xf9\x5f\x28\x56\x7c\xfb\x4b\x51\x4c\xf7\x7e\x81\xda\xaa\x66\x52\x42\xf5\x3d\x3a\x8d\x7a\xc8\x92\x33\x9e\x13\xd2\xb0\x35\xdc\x26\x6e\x13\x2b\xb9\x13\x09\x5f\x62\x40\xc0\x7f\x44\x13\x4e\x95\x2f\x46\x21\x27\xd4\x23\x98\x4f\xde\xb9\xc3\x12\x78\x2a\x3a\x17\x89\xb3\x0c\x52\x21\xa8\xdd\x62\x0f\x97\x45\xc6\x8b\xe9\x73\x9f\x78\xa4\xec\xc9\x27\xff\xb7\xa9\x93\xd9\xbf\xc7\x1a\x03\xba\x0a\xc1\x48\x28\xbe\x89\x6b\x0c\x0e\x19\x69\x30\x01\xc2\x74\x20\xe1\xaf\xb4\x3e\x31\x18\xc0\xaa\x35\xda\x5c\xc0\xad\xf5\xdb\xe9\x4a\xd2\x70\x30\x62\xbd\xcb\xc7\xbe\x34\xbd\xe6\x4b\xfb\x8c\x19\x3f\xbe\xbb\x1b\x8b\xf9\x08\xc7\x20\x9f\x5f\x94\x51\xb5\x41\xab\xdf\x29\x6e\x9f\x91\x77\x7d\x57\x67\x01\xc2\x23\xf7\xaa\xde\x60\x85\x47\xdd\x01\x8c\x23\x46\xa5\x07\xa2\x94\xd7\x30\x17\xda\xf9\xf4\x4d\xee\x3c\x59\xad\x83\x7e\xc2\xca\x38\x50\xb9\xbd\xc2\x5f\x1e\xee\xdf\x2e\xff\xec\xb3\x9e\xa0\xaa\x0a\x89\x66\x38\x12\x2b\x46\xa9\x30\x37\x40\xb1\x6a\xa5\xc0\x68\x24\x89\xf8\x07\x79\x53\x76\xca\x99\x1a\x89\xcb\x81\x3f\x06\xfa\xf8\xea\x53\x09\x3f\xf9\x00\xf8\x59\x75\xbd\xc5\x9b\x19\xb6\x26\x23\x7b\x16\x13\x26\xbb\x1d\x26\x6e\x29\x4a\x92\xda\xbd\xd7\x83\x61\x5b\x31\x68\x86\x29\xab\x27\x04\x3f\x98\x18\x11\xac\x79\xc2\x15\x5c\xc9\x80\x73\xa0\xde\xbf\x24\xd1\xfe\x7d\x05\xdf\x6e\x5b\x0c\x08\x57\xf2\x78\x95\x55\x98\x03\x60\x68\xb6\x72\x6a\x8c\x87\xbd\x72\xdc\x4a\x0a\x05\xd3\x34\x18\xa4\xe4\xb4\x08\x28\xcd\xef\x3b\x29\xff\xa6\x06\xe7\x67\xeb\xcf\x78\x3d\x31\x15\x4f\xf5\x58\x99\xda\xa0\x3e\x53\xf6\xe3\xab\x4f\x57\xf0\xed\x31\x1a\x73\x70\x3a\x8d\x9f\xe1\x15\x18\x97\x11\xea\xbd\xfe\xae\x84\xc7\x14\x05\x3b\xc7\xea\xb3\x48\xa9\x5a\x4f\xe8\xc0\xbb\x3c\x13\xb5\x6a\x83\x40\xbe\x43\xd8\xa2\xb5\x45\x1e\x66\xe6\x60\xdd\xaa\x9d\x58\x7e\x98\x85\x07\x0d\x70\x3f\xc0\x3c\xde\xbf\xbe\x5f\x65\xf9\x12\x22\x8d\x13\xa1\xce\xf3\x0c\xcb\xda\xc8\x90\x92\x9a\xaa\x1c\xcf\x31\x28\xca\xc6\x1c\x10\xec\xa1\x6a\x95\x6b\x30\x5b\x84\x50\x47\x99\x2f\xca\xeb\x97\x64\x60\x9a\x59\x9f\x49\x3e\x19\x60\xcf\xd2\xfc\xb7\x1e\x89\x44\x67\x2a\x44\x3d\x7a\x91\x41\xb9\x2e\x9e\x9b\xa4\xb4\x4e\xab\x84\xb2\xef\x2e\xd6\xbf\x67\x58\x9f\xe0\xf2\xf3\x54\x81\x3b\xc5\x55\x0b\xde\x5d\xaa\x7d\x67\x8d\x09\x86\x9e\xfe\x1c\xf2\x6f\x0f\x12\xea\x57\x91\x7f\x9a\x5a\x88\x80\xaf\x7d\x45\x82\x7b\x85\x3d\xd3\xd2\x6f\x30\x6c\x0c\x6e\x97\x5b\x1f\x9e\x8c\x6b\x0a\xc9\x8f\x62\xe8\x11\xcb\xd4\x51\x97\xdf\xa4\x3f\x2f\x02\x7a\x6a\xc5\x5f\x62\x44\x9e\x1c\xbe\x82\x25\x22\x87\x96\x2f\x32\x64\x1c\xbe\xbf\xac\xf5\x5d\x3f\xe4\x3a\x54\x9d\xde\x93\x40\xd8\xb6\xa6\x6a\xc7\x95\x66\x5f\xae\x67\xc2\xac\x53\x1a\x6f\xa4\xfa\x29\xb7\xfb\xcd\x73\x49\x00\x8c\x41\xb4\xd9\x15\xc3\xb2\x5c\x28\xa7\xe5\x37\x19\x62\xa1\xbf\x08\xb1\x68\x9e\xad\x19\x7f\xbb\x7b\xfd\x75\x02\x37\x9a\x17\x15\x88\x4b\xa3\x68\x2e\x1b\xff\xed\x50\x99\x5a\xcb\x21\xcb\xda\x87\x4e\xf1\x4a\x76\xcd\x3f\xfc\x70\x76\x59\x36\xd0\x06\xc3\x44\x3f\x2d\xc2\x33\xe5\xd7\xec\x77\x96\xa1\x71\x4f\x3b\x73\x1a\x89\x5a\x84\xf7\x7f\x7a\x78\x9c\x82\x32\x05\xe1\xf1\x22\x3d\x8e\x11\xc3\x35\xda\x6f\xd3\xb2\xfd\x1a\x57\xa7\x5e\x2d\x9d\x26\xf8\x2e\xb7\x69\xa7\x7b\x6f\x5c\x1e\x80\x2b\x6b\xd0\x1d\x17\x31\x8a\xeb\xce\x30\x25\x50\x91\xd2\xd4\x5c\xc2\x6d\xfa\x3e\x23\x5b\x46\xec\xb5\x62\xd4\x25\xdc\x39\xb8\x55\x1d\xda\x5b\x45\xf8\xff\x6a\x1c\xb3\x11\x21\xd1\x57\xb1\xbd\x88\xfd\x9b\xfc\x7e\xda\xba\xa7\x0d\x32\x43\x42\x3c\x34\xf8\x71\x1f\xf8\xf5\x4d\xe0\x42\x50\xce\x05\xd4\xe1\xf7\xae\x59\xcd\xee\x37\x32\x0c\x6b\x4c\xa2\x35\xd6\x2a\x5a\x9e\x6e\x89\x67\x79\xdc\x10\x7c\x00\x7f\x78\xf8\xec\x7b\x88\xec\x30\xa9\x9a\x97\x67\x4a\x9d\x04\xbf\xf8\xe5\x11\x89\x2f\x6a\x75\xe7\xb4\xa9\x14\xa7\xcf\x3d\x09\x23\x43\x39\x72\xe5\x66\xde\x98\x0a\x20\x55\xe3\x08\xa4\x64\xb4\x8f\x0c\xea\x24\x49\x95\x3d\xdc\x8a\x2a\x1b\x89\x31\x9c\xeb\x77\xbc\x6c\x9e\xe6\xf6\xb4\x60\xd2\x44\x18\x1c\x3e\x3d\x8f\x16\x2d\x66\xad\xde\x7f\x3a\x1c\xbe\x52\x4e\xa4\xe4\xd9\x62\xf8\x5e\xb8\x7f\x0b\x40\x92\x52\x7a\x05\x1c\x62\xde\x3d\x88\x7d\x50\x0d\x0e\x14\xd9\x14\x62\xba\x2c\xcb\x44\xcf\xa8\xdf\x9e\x7e\x3f\xbc\xba\x3a\xfa\x3c\x98\x1e\x2b\xef\xf2\xf4\x42\x2b\xf8\xf8\x69\x91\xb9\xa2\xfe\x30\x2a\x23\xc4\xff\x04\x00\x00\xff\xff\xbd\xad\x09\x15\x70\x15\x00\x00") - -func configCrdsKudoDev_teststepsYamlBytes() ([]byte, error) { - return bindataRead( - _configCrdsKudoDev_teststepsYaml, - "config/crds/kudo.dev_teststeps.yaml", - ) -} - -func configCrdsKudoDev_teststepsYaml() (*asset, error) { - bytes, err := configCrdsKudoDev_teststepsYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "config/crds/kudo.dev_teststeps.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _configCrdsKudoDev_testsuitesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\x5f\x6f\xe3\xc8\x0d\x7f\xf7\xa7\x20\xae\x0f\x9b\x03\xce\xca\x5d\xef\x50\x1c\xfc\x76\xb0\x5b\x20\xb8\x36\x09\x36\xd9\xed\x43\x51\x60\x69\x0d\x65\x4f\x33\x9a\x51\x39\x1c\x27\xe9\xa7\x2f\x38\xb2\x64\x49\xb6\x93\x4d\xba\x5d\x60\xb1\x2b\x6a\x86\xfc\xf1\xdf\x8f\xb4\x66\xf3\xf9\x7c\x86\x8d\xfd\x4c\x1c\x6d\xf0\x0b\xc0\xc6\xd2\x93\x90\xd7\xa7\x58\x3c\xfc\x1a\x0b\x1b\x2e\x77\x3f\xad\x49\xf0\xa7\xd9\x83\xf5\x66\x01\xcb\x14\x25\xd4\x1f\x29\x86\xc4\x25\xad\xa8\xb2\xde\x8a\x0d\x7e\x56\x93\xa0\x41\xc1\xc5\x0c\x00\xbd\x0f\x82\x2a\x8e\xfa\x08\x50\x06\x2f\x1c\x9c\x23\x9e\x6f\xc8\x17\x0f\x69\x4d\xeb\x64\x9d\x21\xce\x16\x3a\xfb\xbb\x1f\x8b\x3f\x16\xbf\xcc\x00\x4a\xa6\x7c\xfd\xde\xd6\x14\x05\xeb\x66\x01\x3e\x39\x37\x03\xf0\x58\xd3\x02\x84\xa2\xc4\x64\x85\x62\xf1\x90\x4c\x28\x0c\xed\x66\xb1\xa1\x52\xad\x6d\x38\xa4\x66\x01\xbd\xbc\xbd\xb3\x07\xd2\x3a\x71\x4f\x51\xee\xf4\x7a\x96\x39\x1b\xe5\xf7\xb1\xfc\xaf\x36\x4a\x7e\xd7\xb8\xc4\xe8\x86\x06\xb3\x38\x5a\xbf\x49\x0e\x79\xf0\x62\x06\x10\xcb\xd0\xd0\x02\xae\xd5\x5c\x83\x25\x99\x19\xc0\x0e\x9d\x35\xd9\x97\x16\x40\x68\xc8\xff\x76\x7b\xf5\xf9\xe7\xbb\x72\x4b\x35\xb6\x42\x00\x43\xb1\x64\xdb\xe4\x73\x07\x18\x1a\xb7\xca\x6e\x12\x53\x84\xc7\xad\x2d\xb7\xad\x39\x88\xdb\x90\x9c\x81\x35\x81\x0b\x68\xc8\x14\x7b\x2d\x0d\x87\x86\x58\x6c\xe7\xad\xfe\x19\xe4\xb7\x97\x4d\xec\x7d\x50\x40\xed\x19\x30\x9a\x51\x8a\x20\x5b\x82\x7d\x5e\xc8\x40\xcc\x60\x21\x54\x20\x5b\x1b\x81\xa9\x61\x8a\xe4\xdb\x1c\x0f\xd4\x82\x1e\x41\x0f\x61\xfd\x2f\x2a\xa5\x80\x3b\x62\x55\xd2\x01\x2e\x83\xdf\x11\x0b\x30\x95\x61\xe3\xed\x7f\x7a\xcd\x11\x24\x64\x93\x0e\xd5\xc3\x91\x46\xeb\x85\xd8\xa3\xd3\x50\x26\xfa\x01\xd0\x1b\xa8\xf1\x19\x98\xd4\x06\x24\x3f\xd0\x96\x8f\xc4\x02\xfe\x16\x98\xc0\xfa\x2a\x2c\x60\x2b\xd2\xc4\xc5\xe5\xe5\xc6\x4a\x57\xd1\x65\xa8\xeb\xe4\xad\x3c\x5f\xe6\xba\xb4\xeb\x24\x81\xe3\xa5\xa1\x1d\xb9\xcb\x68\x37\x73\xe4\x72\x6b\x85\x4a\x49\x4c\x97\xd8\xd8\x79\x06\xee\x73\x41\x17\xb5\xf9\x03\xef\xcb\x3f\x7e\x18\x20\x95\x67\x4d\x7e\x14\xb6\x7e\x73\x88\x3e\x8b\xad\xb0\x94\xb8\xb2\x7c\x36\xfe\xf7\x5b\x02\x63\x99\x4a\x09\xfc\xac\x91\x08\x49\x9a\x24\x87\xcb\x2a\xbb\x28\x13\x33\x79\x81\xc7\xc0\x0f\xd6\x6f\x0e\x37\xc6\xd1\xaa\xc0\x07\x01\x6d\x06\x5b\x59\x32\xdf\x17\xaf\x41\xd4\x68\xa0\x37\xf1\x2c\xbc\xe5\xfe\x80\xa2\xe0\xe4\xa1\x61\x1b\x78\xff\xe0\x15\x89\x26\x2e\x17\xe6\xd0\x96\x15\xaa\x47\x3a\x4f\x6b\xdd\x0b\xd7\x14\x01\x3b\x28\x9d\x21\x54\x59\x83\x2c\xb9\xaa\xb2\x09\x88\x42\xcd\x48\x29\x40\x60\xc8\x1d\x58\x8c\xe4\xa7\x7a\x61\xe4\xf0\x54\x7c\x22\x29\x1d\x9e\xfc\x97\x37\xa9\xd6\xf8\x0f\xc1\xb5\xa1\x2c\x8e\x34\x9d\x0c\xf4\x3e\x2e\x1b\x1f\x98\xfe\x82\xd6\x25\xa6\x57\x30\x5c\x55\x10\x49\x7e\x80\xaa\x3d\x1d\xe1\xd1\x3a\xa7\x6d\xdf\x2a\x31\xe7\x0c\xaf\x43\x70\x84\x7e\xf2\xd6\xf7\xbc\xf4\x95\x66\x35\xaf\x5f\xe6\xf3\xfe\xde\x17\xa8\x1c\x6e\x7a\x10\xd8\x34\xe4\x0d\x99\x7d\xef\x1e\xe9\xec\x23\x0d\x8f\x56\xb6\x59\x5b\xaf\x4a\xef\xa4\x48\x6f\x71\x80\xe9\xdf\xc9\xf2\x14\xfc\xbc\x33\x32\x91\x8e\xc2\x3c\x79\xe7\x87\x04\x3d\x35\xdd\x52\xd7\x51\xd3\x20\x33\x1e\x3a\xad\x64\xf3\x52\x43\xdf\xa2\xfa\x1b\x60\xf9\x71\x95\xbb\xc6\xfa\x28\x98\x83\x56\x29\x31\xf5\x7d\x33\xed\x99\x93\x65\x93\x47\xd6\x59\xea\xd6\xc1\x05\xf6\x50\x8b\x2d\x05\x1e\x18\xba\xeb\xcf\x8f\x7f\xbe\xbb\x87\x8e\xb7\x32\x8b\x8f\x69\x3b\x7b\x7d\xb8\x16\x0f\xdc\xad\x5c\x6b\x7d\x45\xdc\x72\x7f\xc5\xa1\xce\x1a\xc9\x9b\x26\x58\x6d\x08\xed\x14\x67\xc9\x8f\x79\x3b\xa6\x75\x6d\x25\xe6\xbc\xe5\xa9\x25\xa1\x80\x65\x5e\x0d\xb4\x7a\x52\x63\x50\xc8\x14\x70\xe5\x61\x89\x35\xb9\x25\x46\xfa\xbf\x33\xb7\x46\x38\xce\x35\xa4\xaf\x73\xb7\x9e\x5a\xe6\x01\xfc\x6a\xa2\x35\x04\xbf\x5f\x5d\xaf\xfa\x81\x9d\x07\x23\x54\xd6\x9d\xaa\xf4\x97\xac\x09\x5a\x4f\xfc\x12\x19\x77\x47\x54\xb1\x8e\x7f\xfd\x97\xb0\xdc\xb6\x00\x7c\x30\xf4\x7e\x86\x3e\xc3\x5b\xa7\x5a\xa0\xc3\x4b\x4f\x72\x16\x6c\x17\x12\x3d\xf4\x96\x38\x5c\x07\x43\x4b\x2c\xb7\x74\x56\x73\x47\x51\xd9\xf1\xec\x73\xbb\xb8\x18\xb0\x3e\x7b\xab\x6a\x26\xd9\xc8\xbc\xb5\xc5\xdd\x98\x0e\x10\x4c\x28\x1f\x88\x33\x2b\x18\xd8\x05\x97\x6a\x82\x3a\x24\x2f\x59\x9b\xb6\x6f\x06\xdf\xe8\x36\x14\x05\x9a\xe4\x1c\x65\xdd\x6d\x22\xc0\xd6\xb8\xa1\x71\x3b\x61\xc9\x21\xc6\x76\x62\x71\xf2\x27\x9a\x7c\xca\x70\xba\x12\x97\xe2\xce\x87\xb2\x7d\xdf\x4f\xeb\x6e\x0c\x4d\x28\x05\xfd\xf3\xb7\x4e\x74\x8d\xde\x56\x14\x65\x65\x5f\x28\x4b\x6d\x84\x8c\xa9\xdb\x4a\x2c\xc5\x2e\x44\x8a\xab\x53\x72\x82\x0e\xc7\x24\x7f\x8e\x1a\xff\x47\x1f\x06\x3f\x4e\x4e\xe2\xbf\x23\x01\x87\x6b\x72\x51\xd7\x89\xae\x5d\xda\xbd\x22\x57\xc6\x71\x06\x27\x83\xa2\x41\x46\xe7\xe8\x7c\x06\x3f\xe8\x46\x51\xe3\x93\xad\x53\x0d\x3e\xd5\x6b\xe2\xbc\x50\x77\x51\xc9\x4b\x85\x40\xf0\x25\xc1\x85\xa1\x0a\x93\x93\x05\xfc\xfa\x7d\x31\x24\xaa\x2a\x70\x8d\xb2\xd0\xba\xfc\xd3\x2f\x47\x90\x74\x55\xde\x10\xf7\xf2\xf8\x60\x9b\xa5\x4b\x51\x88\x57\xe4\x48\x5e\xef\x27\x13\xf2\xfa\x68\xf2\xe9\x1c\x87\x5a\xbb\xc3\x74\xbf\xe0\xa0\x71\xe8\x49\x63\xd4\x36\x58\xab\xfc\xf5\xf2\x56\x24\xef\x86\xd0\xaf\xdb\x80\x95\x10\x1f\xb3\xda\xa8\x2c\x2e\x6c\xdd\x38\x2d\xbf\xbb\xa9\xf7\x27\x76\xe1\x23\x9c\x82\x2c\xcb\xd6\xd7\x5b\x75\xf5\x2c\xdc\xbf\x6f\x49\xb6\x9a\x42\xce\x70\x25\xb4\x77\x01\xc1\x85\x12\x1d\x90\x94\xed\xe2\xa8\x9d\xcd\x9e\x84\x22\xfc\x76\x7b\x05\x31\x8f\xd5\x11\xe2\x6a\x50\x72\x5f\x41\x15\xd9\x8e\x52\xeb\xbb\xb1\x0d\x73\xf7\x3e\xeb\x9f\x56\x37\x6f\xb6\x9e\x87\xe4\xa7\xd5\xcd\xe0\x6b\xc0\x5b\x8d\xcb\x6b\x3c\xb4\x3a\x4d\x3f\xb9\x99\x4b\x8c\xd4\x75\xda\xb7\xa3\x16\xb1\x35\x85\x74\x7e\x06\xde\xec\x88\xd9\x9a\xb6\x92\xf7\x6d\xdd\x5d\xd2\xfe\xff\xf9\x47\x88\x54\x06\xa5\xf4\x0b\xeb\xbb\xff\x8f\x4a\xf5\x2d\x4d\x3f\xdd\x92\xe7\xa3\x9f\xa0\xbd\xb0\x1b\x23\x07\x41\xde\x68\xfb\xc7\xc3\xee\x33\x15\xed\xb7\x8f\x23\x31\x3d\xc9\x48\xd6\xcf\xf0\x83\xb4\x1d\x61\xfd\xf3\x70\xb0\xf4\xc2\x8e\x46\x7b\xc1\x11\x87\x8d\xde\x4c\x45\xd3\xf6\x1d\xbf\xd1\xa6\x99\x48\x3e\xad\x6e\x7a\x89\x4c\xc1\xec\xd3\x34\x1b\x86\xbb\xa7\xfd\xc3\x57\xab\xfd\x07\xb2\x5e\x94\x8b\x69\xbe\xff\x54\x75\x78\x0b\x6d\xef\x9b\x05\x08\xa7\x16\x59\x94\xc0\xb8\xa1\xbd\x24\x0a\x4a\xca\x97\xb1\x2c\xa9\x11\x32\xd7\xd3\x2f\x57\xdf\x7d\x37\xfa\x2c\x95\x1f\xb5\x60\x6c\xfb\xb1\x0d\xfe\xf1\xcf\x59\xab\x95\xcc\xe7\x0e\x8c\x0a\xff\x1b\x00\x00\xff\xff\xea\x6a\x7f\x76\xeb\x13\x00\x00") - -func configCrdsKudoDev_testsuitesYamlBytes() ([]byte, error) { - return bindataRead( - _configCrdsKudoDev_testsuitesYaml, - "config/crds/kudo.dev_testsuites.yaml", - ) -} - -func configCrdsKudoDev_testsuitesYaml() (*asset, error) { - bytes, err := configCrdsKudoDev_testsuitesYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "config/crds/kudo.dev_testsuites.yaml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - // Asset loads and returns the asset for the given name. // It returns an error if the asset could not be found or // could not be loaded. @@ -236,8 +194,6 @@ var _bindata = map[string]func() (*asset, error){ "config/crds/kudo.dev_instances.yaml": configCrdsKudoDev_instancesYaml, "config/crds/kudo.dev_operators.yaml": configCrdsKudoDev_operatorsYaml, "config/crds/kudo.dev_operatorversions.yaml": configCrdsKudoDev_operatorversionsYaml, - "config/crds/kudo.dev_teststeps.yaml": configCrdsKudoDev_teststepsYaml, - "config/crds/kudo.dev_testsuites.yaml": configCrdsKudoDev_testsuitesYaml, } // AssetDir returns the file names below a certain @@ -286,8 +242,6 @@ var _bintree = &bintree{nil, map[string]*bintree{ "kudo.dev_instances.yaml": &bintree{configCrdsKudoDev_instancesYaml, map[string]*bintree{}}, "kudo.dev_operators.yaml": &bintree{configCrdsKudoDev_operatorsYaml, map[string]*bintree{}}, "kudo.dev_operatorversions.yaml": &bintree{configCrdsKudoDev_operatorversionsYaml, map[string]*bintree{}}, - "kudo.dev_teststeps.yaml": &bintree{configCrdsKudoDev_teststepsYaml, map[string]*bintree{}}, - "kudo.dev_testsuites.yaml": &bintree{configCrdsKudoDev_testsuitesYaml, map[string]*bintree{}}, }}, }}, }} diff --git a/pkg/test/case_test.go b/pkg/test/case_test.go index 25b0934f6..429a49864 100644 --- a/pkg/test/case_test.go +++ b/pkg/test/case_test.go @@ -9,7 +9,7 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" testutils "github.com/kudobuilder/kudo/pkg/test/utils" ) @@ -26,7 +26,7 @@ func TestLoadTestSteps(t *testing.T) { { Name: "with-test-step-name-override", Index: 0, - Step: &kudo.TestStep{ + Step: &harness.TestStep{ ObjectMeta: metav1.ObjectMeta{ Name: "with-test-step-name-override", }, @@ -57,13 +57,13 @@ func TestLoadTestSteps(t *testing.T) { { Name: "test-assert", Index: 1, - Step: &kudo.TestStep{ + Step: &harness.TestStep{ TypeMeta: metav1.TypeMeta{ Kind: "TestStep", APIVersion: "kudo.dev/v1beta1", }, Index: 1, - Delete: []kudo.ObjectReference{ + Delete: []harness.ObjectReference{ { ObjectReference: corev1.ObjectReference{ APIVersion: "v1", @@ -73,7 +73,7 @@ func TestLoadTestSteps(t *testing.T) { }, }, }, - Assert: &kudo.TestAssert{ + Assert: &harness.TestAssert{ TypeMeta: metav1.TypeMeta{ Kind: "TestAssert", APIVersion: "kudo.dev/v1beta1", @@ -129,7 +129,7 @@ func TestLoadTestSteps(t *testing.T) { { Name: "name-overridden", Index: 3, - Step: &kudo.TestStep{ + Step: &harness.TestStep{ ObjectMeta: metav1.ObjectMeta{ Name: "name-overridden", }, diff --git a/pkg/test/harness.go b/pkg/test/harness.go index 617dccb3c..5190223d8 100644 --- a/pkg/test/harness.go +++ b/pkg/test/harness.go @@ -24,7 +24,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/manager" kindConfig "sigs.k8s.io/kind/pkg/apis/config/v1alpha3" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" "github.com/kudobuilder/kudo/pkg/controller/instance" "github.com/kudobuilder/kudo/pkg/controller/operator" "github.com/kudobuilder/kudo/pkg/controller/operatorversion" @@ -33,7 +33,7 @@ import ( // Harness loads and runs tests based on the configuration provided. type Harness struct { - TestSuite kudo.TestSuite + TestSuite harness.TestSuite T *testing.T logger testutils.Logger @@ -161,7 +161,7 @@ func (h *Harness) addNodeCaches(dockerClient testutils.DockerClient, kindCfg *ki } if h.TestSuite.KINDContext == "" { - h.TestSuite.KINDContext = kudo.DefaultKINDContext + h.TestSuite.KINDContext = harness.DefaultKINDContext } for index := range kindCfg.Nodes { diff --git a/pkg/test/harness_integration_test.go b/pkg/test/harness_integration_test.go index 366e4bd2c..6e7c5bfa2 100644 --- a/pkg/test/harness_integration_test.go +++ b/pkg/test/harness_integration_test.go @@ -5,12 +5,12 @@ package test import ( "testing" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" ) func TestHarnessRunIntegration(t *testing.T) { harness := Harness{ - TestSuite: kudo.TestSuite{ + TestSuite: harness.TestSuite{ CRDDir: "../../config/crds/", TestDirs: []string{ "./test_data/", diff --git a/pkg/test/step.go b/pkg/test/step.go index 33541cba3..d0bce154b 100644 --- a/pkg/test/step.go +++ b/pkg/test/step.go @@ -15,7 +15,7 @@ import ( "k8s.io/client-go/discovery" "sigs.k8s.io/controller-runtime/pkg/client" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" testutils "github.com/kudobuilder/kudo/pkg/test/utils" ) @@ -29,8 +29,8 @@ type Step struct { Dir string - Step *kudo.TestStep - Assert *kudo.TestAssert + Step *harness.TestStep + Assert *harness.TestAssert Asserts []runtime.Object Apply []runtime.Object @@ -441,7 +441,7 @@ func (s *Step) LoadYAML(file string) error { for _, obj := range s.Asserts { if obj.GetObjectKind().GroupVersionKind().Kind == "TestAssert" { - if testAssert, ok := obj.(*kudo.TestAssert); ok { + if testAssert, ok := obj.(*harness.TestAssert); ok { s.Assert = testAssert } else { return fmt.Errorf("failed to load TestAssert object from %s: it contains an object of type %T", file, obj) @@ -455,7 +455,7 @@ func (s *Step) LoadYAML(file string) error { for _, obj := range s.Apply { if obj.GetObjectKind().GroupVersionKind().Kind == "TestStep" { - if testStep, ok := obj.(*kudo.TestStep); ok { + if testStep, ok := obj.(*harness.TestStep); ok { s.Step = testStep } else { return fmt.Errorf("failed to load TestStep object from %s: it contains an object of type %T", file, obj) diff --git a/pkg/test/step_integration_test.go b/pkg/test/step_integration_test.go index 99247b118..15a9c5fe8 100644 --- a/pkg/test/step_integration_test.go +++ b/pkg/test/step_integration_test.go @@ -20,7 +20,7 @@ import ( "k8s.io/client-go/discovery" "sigs.k8s.io/controller-runtime/pkg/client" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" testutils "github.com/kudobuilder/kudo/pkg/test/utils" ) @@ -291,8 +291,8 @@ func TestStepDeleteExistingLabelMatch(t *testing.T) { step := Step{ Logger: testutils.NewTestLogger(t, ""), - Step: &kudo.TestStep{ - Delete: []kudo.ObjectReference{ + Step: &harness.TestStep{ + Delete: []harness.ObjectReference{ { ObjectReference: corev1.ObjectReference{ Kind: "Pod", diff --git a/pkg/test/step_test.go b/pkg/test/step_test.go index 6e6296158..3222aaad8 100644 --- a/pkg/test/step_test.go +++ b/pkg/test/step_test.go @@ -14,7 +14,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" testutils "github.com/kudobuilder/kudo/pkg/test/utils" ) @@ -97,8 +97,8 @@ func TestStepDeleteExisting(t *testing.T) { step := Step{ Logger: testutils.NewTestLogger(t, ""), - Step: &kudo.TestStep{ - Delete: []kudo.ObjectReference{ + Step: &harness.TestStep{ + Delete: []harness.ObjectReference{ { ObjectReference: corev1.ObjectReference{ Kind: "Pod", @@ -286,7 +286,7 @@ func TestRun(t *testing.T) { }, } { t.Run(test.testName, func(t *testing.T) { - test.Step.Assert = &kudo.TestAssert{ + test.Step.Assert = &harness.TestAssert{ Timeout: 1, } diff --git a/pkg/test/utils/kubernetes.go b/pkg/test/utils/kubernetes.go index fab96e8e5..2f0bdc7a5 100644 --- a/pkg/test/utils/kubernetes.go +++ b/pkg/test/utils/kubernetes.go @@ -50,7 +50,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/envtest" "github.com/kudobuilder/kudo/pkg/apis" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" ) // ensure that we only add to the scheme once. @@ -349,11 +349,11 @@ func ConvertUnstructured(in runtime.Object) (runtime.Object, error) { group := in.GetObjectKind().GroupVersionKind().Group if group == "kudo.dev" && kind == "TestStep" { - converted = &kudo.TestStep{} + converted = &harness.TestStep{} } else if group == "kudo.dev" && kind == "TestAssert" { - converted = &kudo.TestAssert{} + converted = &harness.TestAssert{} } else if group == "kudo.dev" && kind == "TestSuite" { - converted = &kudo.TestSuite{} + converted = &harness.TestSuite{} } else { return in, nil } @@ -860,7 +860,7 @@ func StartTestEnvironment() (env TestEnvironment, err error) { } // GetArgs parses a command line string into its arguments and appends a namespace if it is not already set. -func GetArgs(ctx context.Context, command string, cmd kudo.Command, namespace string) (*exec.Cmd, error) { +func GetArgs(ctx context.Context, command string, cmd harness.Command, namespace string) (*exec.Cmd, error) { argSlice := []string{} argSplit, err := shlex.Split(cmd.Command) @@ -896,7 +896,7 @@ func GetArgs(ctx context.Context, command string, cmd kudo.Command, namespace st // RunCommand runs a command with args. // args gets split on spaces (respecting quoted strings). -func RunCommand(ctx context.Context, namespace string, command string, cmd kudo.Command, cwd string, stdout io.Writer, stderr io.Writer) error { +func RunCommand(ctx context.Context, namespace string, command string, cmd harness.Command, cwd string, stdout io.Writer, stderr io.Writer) error { actualDir, err := os.Getwd() if err != nil { return err @@ -927,7 +927,7 @@ func RunCommand(ctx context.Context, namespace string, command string, cmd kudo. // RunCommands runs a set of commands, returning any errors. // If `command` is set, then `command` will be the command that is invoked (if a command specifies it already, it will not be prepended again). -func RunCommands(logger Logger, namespace string, command string, commands []kudo.Command, workdir string) []error { +func RunCommands(logger Logger, namespace string, command string, commands []harness.Command, workdir string) []error { errs := []error{} if commands == nil { @@ -958,10 +958,10 @@ func RunCommands(logger Logger, namespace string, command string, commands []kud // RunKubectlCommands runs a set of kubectl commands, returning any errors. func RunKubectlCommands(logger Logger, namespace string, commands []string, workdir string) []error { - apiCommands := []kudo.Command{} + apiCommands := []harness.Command{} for _, cmd := range commands { - apiCommands = append(apiCommands, kudo.Command{ + apiCommands = append(apiCommands, harness.Command{ Command: cmd, Namespaced: true, }) diff --git a/pkg/test/utils/kubernetes_test.go b/pkg/test/utils/kubernetes_test.go index 8c028488d..82cf26d0c 100644 --- a/pkg/test/utils/kubernetes_test.go +++ b/pkg/test/utils/kubernetes_test.go @@ -13,7 +13,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - kudo "github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1" + harness "github.com/kudobuilder/kudo/pkg/apis/testharness/v1beta1" ) func TestNamespaced(t *testing.T) { @@ -404,7 +404,7 @@ func TestGetKubectlArgs(t *testing.T) { }, } { t.Run(test.testName, func(t *testing.T) { - cmd, err := GetArgs(context.TODO(), "kubectl", kudo.Command{ + cmd, err := GetArgs(context.TODO(), "kubectl", harness.Command{ Command: test.args, Namespaced: true, }, test.namespace)