diff --git a/go.mod b/go.mod index 8b30d2638d..fa164898a4 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/prometheus/client_golang v1.20.5 github.com/prometheus/common v0.62.0 github.com/spf13/pflag v1.0.6 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.0 golang.org/x/sync v0.11.0 google.golang.org/grpc v1.70.0 diff --git a/go.sum b/go.sum index eb7dc6f67a..92af3c3170 100644 --- a/go.sum +++ b/go.sum @@ -2225,8 +2225,8 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/substrait-io/substrait-go v0.4.2/go.mod h1:qhpnLmrcvAnlZsUyPXZRqldiHapPTXC3t7xFgDi3aQg= diff --git a/olm-catalog/serverless-operator-index/Dockerfile b/olm-catalog/serverless-operator-index/Dockerfile index 02a4f72bfe..58b982020d 100644 --- a/olm-catalog/serverless-operator-index/Dockerfile +++ b/olm-catalog/serverless-operator-index/Dockerfile @@ -16,7 +16,7 @@ COPY olm-catalog/serverless-operator-index/index-bundles.yaml /index-bundles.yam RUN /bin/opm init serverless-operator --default-channel=stable --output yaml >> /configs/index.yaml RUN cat /index-bundles.yaml >> /configs/index.yaml RUN /bin/opm render --skip-tls-verify -o yaml \ - quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/serverless-bundle@sha256:9d6b6510a8ab953c497948af9977e8b3bf45aa3436767853af2e46af11ed7c68 >> /configs/index.yaml + quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/serverless-bundle@sha256:79d7bc0eb137093b2dd473fb318fcbef056cc2f709840c74a520966a33e375e9 >> /configs/index.yaml # The base image is expected to contain # /bin/opm (with a serve subcommand) and /bin/grpc_health_probe diff --git a/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml b/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml index 08c71daf1a..7e48df7ddd 100644 --- a/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml +++ b/olm-catalog/serverless-operator/manifests/serverless-operator.clusterserviceversion.yaml @@ -78,7 +78,7 @@ metadata: repository: https://github.com/openshift-knative/serverless-operator support: Red Hat olm.skipRange: '>=1.36.0 <1.37.0' - operators.openshift.io/must-gather-image: registry.redhat.io/openshift-serverless-1/serverless-must-gather-rhel8@sha256:5d950be6a17ac307b37e0e2699abc6f2d1af6e0814bad7e09086d8b8a0e2d0a9 + operators.openshift.io/must-gather-image: registry.redhat.io/openshift-serverless-1/serverless-must-gather-rhel8@sha256:89f8d6964d57209f9c31ab28ae3238a64d5dcf71dc3cf274607a72043fd40f9a labels: operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported @@ -836,7 +836,7 @@ spec: serviceAccountName: knative-operator containers: - name: knative-operator - image: registry.redhat.io/openshift-serverless-1/serverless-openshift-kn-rhel8-operator@sha256:5784632c1eee6229df241fde4a9ac04d914a5889a26b5228f57b43f3fd2b9a04 + image: registry.redhat.io/openshift-serverless-1/serverless-openshift-kn-rhel8-operator@sha256:2843e1faa288dbf629d4e3050744591b631da5534fc19e59c65d091c79ecb535 readinessProbe: periodSeconds: 1 httpGet: @@ -889,79 +889,79 @@ spec: - name: KUBERNETES_MIN_VERSION value: "v1.0.0" - name: "IMAGE_queue-proxy" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:7fd4f3d24063dd4f0b3342a5d1f97f44ed7bbbda521d2b9f7a425cda5ede9142" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:33213a2312c3feacea48f5db0aa433d28019bebb71238817e5447657108f3e9e" - name: "IMAGE_activator" value: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:8d3af24fc5f604c99e15a09032fa3fcad2701c974d32449e59fbb6928b733661" - name: "IMAGE_autoscaler" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:dab7794cf8f691292e86d16088b317320a5b2eb5d275ec0f225022e16b9c4f65" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:d57143c2de771f8ebf38122bf78c3601aa61f28ab379fca317ddc7de2faed2cb" - name: "IMAGE_autoscaler-hpa" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:5298eb1a0d3cb488a0b2df658858688bcdde6d22e1c015f57f73a5962c35a0eb" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:6af3ead245b2030a2e08900d7125a48ce9a8b31dc487ed70c825bc558a85aace" - name: "IMAGE_controller__controller" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:890bb4ee1e633507c01639a7b56c2615c278f7516bdc124ad3c2166e798aa44d" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:229a3bd8acf24393380a847fe3a2e0ef6cd63279db8ec2d04ab385c3b514692e" - name: "IMAGE_webhook__webhook" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:c25851ccd1c449db8bf5544ba80c8e710aca881953bb5491623836311f3dcf92" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:13eabb2634278a4d9ebc97a06dff5e300c2778af9ec3584b860ba3e2a47b5f8f" - name: "IMAGE_storage-version-migration-serving-__migrate" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:7539b86b1d8318821616965ff7c044bbb54b2ddd6cb5c4a90f6cf0e9785339f4" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:059d25ec0f1beedd8d1b788cce2fab94565de5aac1dc7011760c6188a921fbef" - name: "IMAGE_kourier-gateway" value: "registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:1c19cf86fd05940ef3d0d6e79e6f371db993153f70baedb9107bbe73f236dc24" - name: "IMAGE_net-kourier-controller__controller" value: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:daec76096c59acdffb2391c4d5c706c833197c43f0c76b8759198fbae8d3c7eb" - name: "IMAGE_net-istio-controller__controller" - value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:fab0e5c8ac116b7fa857ae24657b1983de3ede4f21a26608b9512a4a3a0c9a4d" + value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:e40c912031277f8fb910df058050567f427397b1790cdf655521fbf5a991e096" - name: "IMAGE_net-istio-webhook__webhook" - value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:670ed3f68b3be824c8b8a74f024591ee20898e83cd974536b8cea59513e2bb88" + value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:f9bb9bc8db0876379cb51db1e74522f5795e41edba18ee7fdedc2e9fa2b9adda" - name: "IMAGE_eventing-controller__eventing-controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:cd1870f04b9fcc70a7b5f8af6f1e204923158d95b6bbbaa40c75f4bf38d1b2f8" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:841eaf25d520fce67b4c4ad73342fd394324910eedbef868c8698c5297584f78" - name: "IMAGE_eventing-istio-controller__eventing-istio-controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:4fdb2768514b69c39e703c630088454b79bf0502fcf9db84e351891f1ade3a3f" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:44f8f2b1c1aafe0518a54f2efb2e06c31ce128fec5b8fd2ae7cd6c5f56ec91ed" - name: "IMAGE_eventing-webhook__eventing-webhook" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:6b18a49c54143246e6fb8e79adf2303b54ba52bffb5dae13601df69f33c3f2b0" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:86f0d85a774e36c3a07e0b336db581d2e75c5fad4378b9adc1b3b1ecc98b2e8b" - name: "IMAGE_storage-version-migration-eventing-__migrate" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:d8ad42aa5c662e0d4b6e94a636493e110875d756b1f3e9f08bb877c6bbe5098e" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:b54b7ef3c46d04e63de68d881452baf15f20afd66544ef4652c30027b28284e4" - name: "IMAGE_mt-broker-controller__mt-broker-controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:065ee8dc1e5566aac4b0bc7b3b63613db7a8626bc8cdf8bed81c059fb22c9558" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:7038e3d61308bf3d252ceb809bc69dd1fae2bd1fd9992ab53fc70a459d807a77" - name: "IMAGE_mt-broker-filter__filter" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:04c3c9c07833e12975bededd9f9a44f0cbd39525f487a87be2eba36f3dbf72ea" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:406664cd7698179dedb947b3ce03075914b68e56977a3a51d382938ec290e295" - name: "IMAGE_mt-broker-ingress__ingress" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:848b4855a75f2e9e5ddfbde5fe5695a320c527758c2f57ebe48584f4c0d02780" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:6092c68f02f0cb0fae0f8f6800048d279c89528dc9c9a85b3e0910e461133d7d" - name: "IMAGE_imc-controller__controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:b519a88e7505b7cd5e0b87abb870a721101b92089a90f8720085e3fda2b0ff70" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:52244782e992be48bcce811e87271b22b9c70a222115018f717b3bf0a4f6bc34" - name: "IMAGE_imc-dispatcher__dispatcher" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:ce21d160603172ff37829c399028da622f9a8f525817bc58edcc06bc4c6cb2ce" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:3b774b1bf094a267c20133326015eaaa305a5fd78632a0964084b2e9da9d0f3f" - name: "IMAGE_pingsource-mt-adapter__dispatcher" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:b275c025b6113a3a803b39bf8465729ca8a025168dfed6cfa31791712ed5047b" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:78d56f9ef684c17e475a3559585d88c376a32045bb11129f92746d3d4854a117" - name: "IMAGE_job-sink__job-sink" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:3fe3e2dcfc5fc2b60a9e1cd17576e5805e4604054a48237dd9c311d9da983c53" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:750688ac07d15be2b43d66eb3e30ba417bf427b78790c8b59605a93bcce5673a" - name: "IMAGE_APISERVER_RA_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:841574c937506069631266e6ad9423fdb7853f33b70c02d19b0d821862b2fa6a" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:8a6940ada4e989310f164dae6112528016217fa92ac97233ed56397b8c06f1da" - name: "IMAGE_DISPATCHER_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:ce21d160603172ff37829c399028da622f9a8f525817bc58edcc06bc4c6cb2ce" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:3b774b1bf094a267c20133326015eaaa305a5fd78632a0964084b2e9da9d0f3f" - name: "IMAGE_EVENT_TRANSFORM_JSONATA_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:b75ed48f0130203eae50b934410178844af86fbe953825cc3114764db11a216f" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:d5c6983ce7e56bff380e4a80b930680a9f50ff1fe4b6f8143bda058a8b221ff6" - name: "IMAGE_INTEGRATION_SOURCE_TIMER_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-timer-source-rhel8@sha256:4c82613b53e280a85c05f0b27449c804a2e380ba881046bf364cdf88e73405b5" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-timer-source-rhel8@sha256:0aa4e712c454dd0615a191d509d6b54731bb990cea8f3d70d14889929456574a" - name: "IMAGE_INTEGRATION_SOURCE_AWS_S3_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-source-rhel8@sha256:c03700e21670fb7bae5feb434f981db30afbe366da20f004cd0faf91538fe96b" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-source-rhel8@sha256:eab8141b7ca0e84823ea197a78b6e258691153bf85bc74a7f7a761998d15c194" - name: "IMAGE_INTEGRATION_SOURCE_AWS_SQS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-source-rhel8@sha256:5ef87186e7b38d727b162c6027f20da49695094618380e3686e3c61dd51fd31d" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-source-rhel8@sha256:a440d67cdb3c96865bddc9a80612a8b1e02f355e3bb6377666fb005b15999aef" - name: "IMAGE_INTEGRATION_SOURCE_AWS_DDB_STREAMS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-ddb-streams-source-rhel8@sha256:5a2eef78620450c91e6951d808275774144f54bdfefc7d0e7fa393aba0e86345" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-ddb-streams-source-rhel8@sha256:20a1ade9e8ab7d1663de3075996e36695170d30219e2561e6ff2ed24f66c2ac2" - name: "IMAGE_INTEGRATION_SINK_LOG_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-log-sink-rhel8@sha256:f1b9d6b31dbd0e8957e24be849bef1cede9ed255bcfb1a9d5ec627a45b02b9b2" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-log-sink-rhel8@sha256:688507afe68fbac06150cc750e25b1a925bceac17ee9bef3ef4f968e65d5ed4c" - name: "IMAGE_INTEGRATION_SINK_AWS_S3_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-sink-rhel8@sha256:b4220e7c8324a97d4f173bd214ee56fcaf70121cdb011b4cd8782e5a30456871" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-sink-rhel8@sha256:d4042cfad92836c213be577d99599188d2332b55e6ea805257cfce05b07983b3" - name: "IMAGE_INTEGRATION_SINK_AWS_SQS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-sink-rhel8@sha256:06e24a773dd110de200985d9693b075d27497d23915492755d5ac86b55322ccb" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-sink-rhel8@sha256:2526c000ea374336c303c6c449a85272977b89e227fc0f0e0de5523d9edcc794" - name: "IMAGE_INTEGRATION_SINK_AWS_SNS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sns-sink-rhel8@sha256:893ed28260201ad5303d37b2fa4890a02053f5e66ed4570b65d9b7bbd4a5c968" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sns-sink-rhel8@sha256:2fd5c5d6a6e48b53d4b5a11a8257eb31ebc3568c5601faf39512b53ddefd3d49" - name: "IMAGE_eventmesh-backend__controller" - value: "registry.redhat.io/openshift-serverless-1/kn-backstage-plugins-eventmesh-rhel8@sha256:3a1e40530d8022c86bde6ef6803bb9db545d95985ea2698dbc175d3111010751" + value: "registry.redhat.io/openshift-serverless-1/kn-backstage-plugins-eventmesh-rhel8@sha256:5c6b9236ba9001cba22a23906b70849ebc1eb1e561c0166b9aadb4843607b730" - name: "IMAGE_KUBE_RBAC_PROXY" value: "registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:67651adfd8e6c8d12d2b9585c723d5fbdb664818f803312bfe3522e04a81e9b0" - name: "IMAGE_KN_PLUGIN_EVENT_SENDER" value: "registry.redhat.io/openshift-serverless-1/kn-plugin-event-sender-rhel8@sha256:3f6b47431a38ca5c518c0105ad2f79b92f3067f5c7e56c5e46bd13eb1e9982de" - name: "IMAGE_KN_CLIENT" - value: "registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8@sha256:930bfee931adc3bcaa53eec2d4b7cae67ac8edd2af18840ca9506b62db9c261e" + value: "registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8@sha256:5d550dae56a112c77748de341ba08bd1a712bd804cf7219196cf7d7019c7db8a" - name: "IMAGE_KN_PLUGIN_FUNC_UTIL" value: "registry.redhat.io/openshift-serverless-1/kn-plugin-func-func-util-rhel8@sha256:d5f49cc564427e52c796d1ed64b00d2f62ce6c47b1624a2e06e658b87c3ac3dd" - name: "IMAGE_KN_PLUGIN_FUNC_TEKTON_BUILDAH" @@ -1003,7 +1003,7 @@ spec: serviceAccountName: knative-openshift initContainers: - name: cli-artifacts - image: registry.redhat.io/openshift-serverless-1/kn-client-cli-artifacts-rhel8@sha256:3cb5ceffab278d5f8b667bbbb770eaf5967d2864479b1b287367486740cbb2e0 + image: registry.redhat.io/openshift-serverless-1/kn-client-cli-artifacts-rhel8@sha256:02230ae9100f2e551f79988b810dea1594cc567d3252b8ad8e9a6392fd34a9e7 imagePullPolicy: Always command: ["sh", "-c", "rm -rf /cli-artifacts/* && cp /usr/share/kn/**/* /cli-artifacts && chmod 444 /cli-artifacts/*"] volumeMounts: @@ -1017,7 +1017,7 @@ spec: - ALL containers: - name: knative-openshift - image: registry.redhat.io/openshift-serverless-1/serverless-kn-operator-rhel8@sha256:d642f113936d30cb057c862b617fbd0f8cd1aae49d990c73b7166db749bc44ad + image: registry.redhat.io/openshift-serverless-1/serverless-kn-operator-rhel8@sha256:201cae8239b6c77fe744f2d67180092aee957120df4c2daf0bbdc6039326ad05 imagePullPolicy: Always readinessProbe: httpGet: @@ -1079,79 +1079,79 @@ spec: - name: KUBERNETES_MIN_VERSION value: "v1.0.0" - name: "IMAGE_queue-proxy" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:7fd4f3d24063dd4f0b3342a5d1f97f44ed7bbbda521d2b9f7a425cda5ede9142" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:33213a2312c3feacea48f5db0aa433d28019bebb71238817e5447657108f3e9e" - name: "IMAGE_activator" value: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:8d3af24fc5f604c99e15a09032fa3fcad2701c974d32449e59fbb6928b733661" - name: "IMAGE_autoscaler" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:dab7794cf8f691292e86d16088b317320a5b2eb5d275ec0f225022e16b9c4f65" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:d57143c2de771f8ebf38122bf78c3601aa61f28ab379fca317ddc7de2faed2cb" - name: "IMAGE_autoscaler-hpa" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:5298eb1a0d3cb488a0b2df658858688bcdde6d22e1c015f57f73a5962c35a0eb" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:6af3ead245b2030a2e08900d7125a48ce9a8b31dc487ed70c825bc558a85aace" - name: "IMAGE_controller__controller" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:890bb4ee1e633507c01639a7b56c2615c278f7516bdc124ad3c2166e798aa44d" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:229a3bd8acf24393380a847fe3a2e0ef6cd63279db8ec2d04ab385c3b514692e" - name: "IMAGE_webhook__webhook" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:c25851ccd1c449db8bf5544ba80c8e710aca881953bb5491623836311f3dcf92" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:13eabb2634278a4d9ebc97a06dff5e300c2778af9ec3584b860ba3e2a47b5f8f" - name: "IMAGE_storage-version-migration-serving-__migrate" - value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:7539b86b1d8318821616965ff7c044bbb54b2ddd6cb5c4a90f6cf0e9785339f4" + value: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:059d25ec0f1beedd8d1b788cce2fab94565de5aac1dc7011760c6188a921fbef" - name: "IMAGE_kourier-gateway" value: "registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:1c19cf86fd05940ef3d0d6e79e6f371db993153f70baedb9107bbe73f236dc24" - name: "IMAGE_net-kourier-controller__controller" value: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:daec76096c59acdffb2391c4d5c706c833197c43f0c76b8759198fbae8d3c7eb" - name: "IMAGE_net-istio-controller__controller" - value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:fab0e5c8ac116b7fa857ae24657b1983de3ede4f21a26608b9512a4a3a0c9a4d" + value: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:e40c912031277f8fb910df058050567f427397b1790cdf655521fbf5a991e096" - name: "IMAGE_net-istio-webhook__webhook" - value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:670ed3f68b3be824c8b8a74f024591ee20898e83cd974536b8cea59513e2bb88" + value: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:f9bb9bc8db0876379cb51db1e74522f5795e41edba18ee7fdedc2e9fa2b9adda" - name: "IMAGE_eventing-controller__eventing-controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:cd1870f04b9fcc70a7b5f8af6f1e204923158d95b6bbbaa40c75f4bf38d1b2f8" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:841eaf25d520fce67b4c4ad73342fd394324910eedbef868c8698c5297584f78" - name: "IMAGE_eventing-istio-controller__eventing-istio-controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:4fdb2768514b69c39e703c630088454b79bf0502fcf9db84e351891f1ade3a3f" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:44f8f2b1c1aafe0518a54f2efb2e06c31ce128fec5b8fd2ae7cd6c5f56ec91ed" - name: "IMAGE_eventing-webhook__eventing-webhook" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:6b18a49c54143246e6fb8e79adf2303b54ba52bffb5dae13601df69f33c3f2b0" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:86f0d85a774e36c3a07e0b336db581d2e75c5fad4378b9adc1b3b1ecc98b2e8b" - name: "IMAGE_storage-version-migration-eventing-__migrate" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:d8ad42aa5c662e0d4b6e94a636493e110875d756b1f3e9f08bb877c6bbe5098e" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:b54b7ef3c46d04e63de68d881452baf15f20afd66544ef4652c30027b28284e4" - name: "IMAGE_mt-broker-controller__mt-broker-controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:065ee8dc1e5566aac4b0bc7b3b63613db7a8626bc8cdf8bed81c059fb22c9558" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:7038e3d61308bf3d252ceb809bc69dd1fae2bd1fd9992ab53fc70a459d807a77" - name: "IMAGE_mt-broker-filter__filter" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:04c3c9c07833e12975bededd9f9a44f0cbd39525f487a87be2eba36f3dbf72ea" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:406664cd7698179dedb947b3ce03075914b68e56977a3a51d382938ec290e295" - name: "IMAGE_mt-broker-ingress__ingress" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:848b4855a75f2e9e5ddfbde5fe5695a320c527758c2f57ebe48584f4c0d02780" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:6092c68f02f0cb0fae0f8f6800048d279c89528dc9c9a85b3e0910e461133d7d" - name: "IMAGE_imc-controller__controller" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:b519a88e7505b7cd5e0b87abb870a721101b92089a90f8720085e3fda2b0ff70" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:52244782e992be48bcce811e87271b22b9c70a222115018f717b3bf0a4f6bc34" - name: "IMAGE_imc-dispatcher__dispatcher" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:ce21d160603172ff37829c399028da622f9a8f525817bc58edcc06bc4c6cb2ce" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:3b774b1bf094a267c20133326015eaaa305a5fd78632a0964084b2e9da9d0f3f" - name: "IMAGE_pingsource-mt-adapter__dispatcher" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:b275c025b6113a3a803b39bf8465729ca8a025168dfed6cfa31791712ed5047b" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:78d56f9ef684c17e475a3559585d88c376a32045bb11129f92746d3d4854a117" - name: "IMAGE_job-sink__job-sink" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:3fe3e2dcfc5fc2b60a9e1cd17576e5805e4604054a48237dd9c311d9da983c53" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:750688ac07d15be2b43d66eb3e30ba417bf427b78790c8b59605a93bcce5673a" - name: "IMAGE_APISERVER_RA_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:841574c937506069631266e6ad9423fdb7853f33b70c02d19b0d821862b2fa6a" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:8a6940ada4e989310f164dae6112528016217fa92ac97233ed56397b8c06f1da" - name: "IMAGE_DISPATCHER_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:ce21d160603172ff37829c399028da622f9a8f525817bc58edcc06bc4c6cb2ce" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:3b774b1bf094a267c20133326015eaaa305a5fd78632a0964084b2e9da9d0f3f" - name: "IMAGE_EVENT_TRANSFORM_JSONATA_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:b75ed48f0130203eae50b934410178844af86fbe953825cc3114764db11a216f" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:d5c6983ce7e56bff380e4a80b930680a9f50ff1fe4b6f8143bda058a8b221ff6" - name: "IMAGE_INTEGRATION_SOURCE_TIMER_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-timer-source-rhel8@sha256:4c82613b53e280a85c05f0b27449c804a2e380ba881046bf364cdf88e73405b5" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-timer-source-rhel8@sha256:0aa4e712c454dd0615a191d509d6b54731bb990cea8f3d70d14889929456574a" - name: "IMAGE_INTEGRATION_SOURCE_AWS_S3_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-source-rhel8@sha256:c03700e21670fb7bae5feb434f981db30afbe366da20f004cd0faf91538fe96b" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-source-rhel8@sha256:eab8141b7ca0e84823ea197a78b6e258691153bf85bc74a7f7a761998d15c194" - name: "IMAGE_INTEGRATION_SOURCE_AWS_SQS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-source-rhel8@sha256:5ef87186e7b38d727b162c6027f20da49695094618380e3686e3c61dd51fd31d" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-source-rhel8@sha256:a440d67cdb3c96865bddc9a80612a8b1e02f355e3bb6377666fb005b15999aef" - name: "IMAGE_INTEGRATION_SOURCE_AWS_DDB_STREAMS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-ddb-streams-source-rhel8@sha256:5a2eef78620450c91e6951d808275774144f54bdfefc7d0e7fa393aba0e86345" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-ddb-streams-source-rhel8@sha256:20a1ade9e8ab7d1663de3075996e36695170d30219e2561e6ff2ed24f66c2ac2" - name: "IMAGE_INTEGRATION_SINK_LOG_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-log-sink-rhel8@sha256:f1b9d6b31dbd0e8957e24be849bef1cede9ed255bcfb1a9d5ec627a45b02b9b2" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-log-sink-rhel8@sha256:688507afe68fbac06150cc750e25b1a925bceac17ee9bef3ef4f968e65d5ed4c" - name: "IMAGE_INTEGRATION_SINK_AWS_S3_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-sink-rhel8@sha256:b4220e7c8324a97d4f173bd214ee56fcaf70121cdb011b4cd8782e5a30456871" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-sink-rhel8@sha256:d4042cfad92836c213be577d99599188d2332b55e6ea805257cfce05b07983b3" - name: "IMAGE_INTEGRATION_SINK_AWS_SQS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-sink-rhel8@sha256:06e24a773dd110de200985d9693b075d27497d23915492755d5ac86b55322ccb" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-sink-rhel8@sha256:2526c000ea374336c303c6c449a85272977b89e227fc0f0e0de5523d9edcc794" - name: "IMAGE_INTEGRATION_SINK_AWS_SNS_IMAGE" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sns-sink-rhel8@sha256:893ed28260201ad5303d37b2fa4890a02053f5e66ed4570b65d9b7bbd4a5c968" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sns-sink-rhel8@sha256:2fd5c5d6a6e48b53d4b5a11a8257eb31ebc3568c5601faf39512b53ddefd3d49" - name: "IMAGE_eventmesh-backend__controller" - value: "registry.redhat.io/openshift-serverless-1/kn-backstage-plugins-eventmesh-rhel8@sha256:3a1e40530d8022c86bde6ef6803bb9db545d95985ea2698dbc175d3111010751" + value: "registry.redhat.io/openshift-serverless-1/kn-backstage-plugins-eventmesh-rhel8@sha256:5c6b9236ba9001cba22a23906b70849ebc1eb1e561c0166b9aadb4843607b730" - name: "IMAGE_KUBE_RBAC_PROXY" value: "registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:67651adfd8e6c8d12d2b9585c723d5fbdb664818f803312bfe3522e04a81e9b0" - name: "IMAGE_KN_PLUGIN_EVENT_SENDER" value: "registry.redhat.io/openshift-serverless-1/kn-plugin-event-sender-rhel8@sha256:3f6b47431a38ca5c518c0105ad2f79b92f3067f5c7e56c5e46bd13eb1e9982de" - name: "IMAGE_KN_CLIENT" - value: "registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8@sha256:930bfee931adc3bcaa53eec2d4b7cae67ac8edd2af18840ca9506b62db9c261e" + value: "registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8@sha256:5d550dae56a112c77748de341ba08bd1a712bd804cf7219196cf7d7019c7db8a" - name: "IMAGE_KN_PLUGIN_FUNC_UTIL" value: "registry.redhat.io/openshift-serverless-1/kn-plugin-func-func-util-rhel8@sha256:d5f49cc564427e52c796d1ed64b00d2f62ce6c47b1624a2e06e658b87c3ac3dd" - name: "IMAGE_KN_PLUGIN_FUNC_TEKTON_BUILDAH" @@ -1163,25 +1163,25 @@ spec: - name: "IMAGE_KN_PLUGIN_FUNC_PYTHON_39" value: "registry.access.redhat.com/ubi8/python-39@sha256:27e795fd6b1b77de70d1dc73a65e4c790650748a9cfda138fdbd194b3d6eea3d" - name: "KAFKA_IMAGE_kafka-broker-receiver__kafka-broker-receiver" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:22dd0d9615515d67b09fadb9e4c5034723b298e89b9604a60015b270a5cb8b5e" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:3ddd02fc4a8d782748d874e573f4bcdb0568f23bd9cfed29b2327ba17f12d15f" - name: "KAFKA_IMAGE_kafka-broker-dispatcher__kafka-broker-dispatcher" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:e84042cddfa58e3e5879432dbfd60c33845207869a5191807877ff309a758c26" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:5f51705a11616406d12ae99619127b136b5402811bd81a5b4022be4cdd7aa63a" - name: "KAFKA_IMAGE_kafka-channel-receiver__kafka-channel-receiver" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:22dd0d9615515d67b09fadb9e4c5034723b298e89b9604a60015b270a5cb8b5e" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:3ddd02fc4a8d782748d874e573f4bcdb0568f23bd9cfed29b2327ba17f12d15f" - name: "KAFKA_IMAGE_kafka-channel-dispatcher__kafka-channel-dispatcher" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:e84042cddfa58e3e5879432dbfd60c33845207869a5191807877ff309a758c26" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:5f51705a11616406d12ae99619127b136b5402811bd81a5b4022be4cdd7aa63a" - name: "KAFKA_IMAGE_kafka-controller__controller" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-kafka-controller-rhel8@sha256:7b37c9022971dde1be3e06353263db12d4c43281bb3de9176aa736477efdffbc" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-kafka-controller-rhel8@sha256:72461fc53e86213004b436e2e2d420362186b7bc3f614f3a1d5c5fd6464da3c9" - name: "KAFKA_IMAGE_kafka-sink-receiver__kafka-sink-receiver" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:22dd0d9615515d67b09fadb9e4c5034723b298e89b9604a60015b270a5cb8b5e" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:3ddd02fc4a8d782748d874e573f4bcdb0568f23bd9cfed29b2327ba17f12d15f" - name: "KAFKA_IMAGE_kafka-source-dispatcher__kafka-source-dispatcher" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:e84042cddfa58e3e5879432dbfd60c33845207869a5191807877ff309a758c26" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:5f51705a11616406d12ae99619127b136b5402811bd81a5b4022be4cdd7aa63a" - name: "KAFKA_IMAGE_kafka-webhook-eventing__kafka-webhook-eventing" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-webhook-kafka-rhel8@sha256:2e3d8333f5bcc8605fd20de2698413b59433bf2a6bacc63c1327401449ae89c0" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-webhook-kafka-rhel8@sha256:ca7aa47dbaeb243c068a850d4ebe6f904bdd78daaac4140e674555d981ae23f6" - name: "KAFKA_IMAGE_kafka-controller-post-install__post-install" - value: "registry.redhat.io/openshift-serverless-1/kn-ekb-post-install-rhel8@sha256:f3828ffa6628f0b70c4e8b95b9bde90289639b186a22047037da515f3b8193b0" + value: "registry.redhat.io/openshift-serverless-1/kn-ekb-post-install-rhel8@sha256:f173e35d967a67cbfd77c7f931afbad13cb21f542a1f4795d449cd61c55d4ed8" - name: "KAFKA_IMAGE_knative-kafka-storage-version-migrator__migrate" - value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:d8ad42aa5c662e0d4b6e94a636493e110875d756b1f3e9f08bb877c6bbe5098e" + value: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:b54b7ef3c46d04e63de68d881452baf15f20afd66544ef4652c30027b28284e4" - name: "CURRENT_VERSION" value: "1.37.0" - name: "KNATIVE_SERVING_VERSION" @@ -1215,7 +1215,7 @@ spec: serviceAccountName: knative-openshift-ingress containers: - name: knative-openshift-ingress - image: registry.redhat.io/openshift-serverless-1/serverless-ingress-rhel8@sha256:a7b1fc154f395a908a02a2d81ae2f806ae110fc6f4d033234a440e285c6a1b3f + image: registry.redhat.io/openshift-serverless-1/serverless-ingress-rhel8@sha256:73dbedc7de2172fcfaecfe0f0e5f1911ce5e533cdb636f335aa0a11e76ae6e7d imagePullPolicy: Always ports: - containerPort: 9090 @@ -1366,85 +1366,85 @@ spec: - knativeeventings.operator.knative.dev relatedImages: - name: "knative-operator" - image: "registry.redhat.io/openshift-serverless-1/serverless-openshift-kn-rhel8-operator@sha256:5784632c1eee6229df241fde4a9ac04d914a5889a26b5228f57b43f3fd2b9a04" + image: "registry.redhat.io/openshift-serverless-1/serverless-openshift-kn-rhel8-operator@sha256:2843e1faa288dbf629d4e3050744591b631da5534fc19e59c65d091c79ecb535" - name: "knative-openshift" - image: "registry.redhat.io/openshift-serverless-1/serverless-kn-operator-rhel8@sha256:d642f113936d30cb057c862b617fbd0f8cd1aae49d990c73b7166db749bc44ad" + image: "registry.redhat.io/openshift-serverless-1/serverless-kn-operator-rhel8@sha256:201cae8239b6c77fe744f2d67180092aee957120df4c2daf0bbdc6039326ad05" - name: "knative-openshift-ingress" - image: "registry.redhat.io/openshift-serverless-1/serverless-ingress-rhel8@sha256:a7b1fc154f395a908a02a2d81ae2f806ae110fc6f4d033234a440e285c6a1b3f" + image: "registry.redhat.io/openshift-serverless-1/serverless-ingress-rhel8@sha256:73dbedc7de2172fcfaecfe0f0e5f1911ce5e533cdb636f335aa0a11e76ae6e7d" - name: "IMAGE_queue-proxy" - image: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:7fd4f3d24063dd4f0b3342a5d1f97f44ed7bbbda521d2b9f7a425cda5ede9142" + image: "registry.redhat.io/openshift-serverless-1/kn-serving-queue-rhel8@sha256:33213a2312c3feacea48f5db0aa433d28019bebb71238817e5447657108f3e9e" - name: "IMAGE_activator" image: "registry.redhat.io/openshift-serverless-1/kn-serving-activator-rhel8@sha256:8d3af24fc5f604c99e15a09032fa3fcad2701c974d32449e59fbb6928b733661" - name: "IMAGE_autoscaler" - image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:dab7794cf8f691292e86d16088b317320a5b2eb5d275ec0f225022e16b9c4f65" + image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-rhel8@sha256:d57143c2de771f8ebf38122bf78c3601aa61f28ab379fca317ddc7de2faed2cb" - name: "IMAGE_autoscaler-hpa" - image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:5298eb1a0d3cb488a0b2df658858688bcdde6d22e1c015f57f73a5962c35a0eb" + image: "registry.redhat.io/openshift-serverless-1/kn-serving-autoscaler-hpa-rhel8@sha256:6af3ead245b2030a2e08900d7125a48ce9a8b31dc487ed70c825bc558a85aace" - name: "IMAGE_controller__controller" - image: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:890bb4ee1e633507c01639a7b56c2615c278f7516bdc124ad3c2166e798aa44d" + image: "registry.redhat.io/openshift-serverless-1/kn-serving-controller-rhel8@sha256:229a3bd8acf24393380a847fe3a2e0ef6cd63279db8ec2d04ab385c3b514692e" - name: "IMAGE_webhook__webhook" - image: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:c25851ccd1c449db8bf5544ba80c8e710aca881953bb5491623836311f3dcf92" + image: "registry.redhat.io/openshift-serverless-1/kn-serving-webhook-rhel8@sha256:13eabb2634278a4d9ebc97a06dff5e300c2778af9ec3584b860ba3e2a47b5f8f" - name: "IMAGE_storage-version-migration-serving-__migrate" - image: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:7539b86b1d8318821616965ff7c044bbb54b2ddd6cb5c4a90f6cf0e9785339f4" + image: "registry.redhat.io/openshift-serverless-1/kn-serving-storage-version-migration-rhel8@sha256:059d25ec0f1beedd8d1b788cce2fab94565de5aac1dc7011760c6188a921fbef" - name: "IMAGE_kourier-gateway" image: "registry.redhat.io/openshift-service-mesh/proxyv2-rhel8@sha256:1c19cf86fd05940ef3d0d6e79e6f371db993153f70baedb9107bbe73f236dc24" - name: "IMAGE_net-kourier-controller__controller" image: "registry.redhat.io/openshift-serverless-1/net-kourier-kourier-rhel8@sha256:daec76096c59acdffb2391c4d5c706c833197c43f0c76b8759198fbae8d3c7eb" - name: "IMAGE_net-istio-controller__controller" - image: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:fab0e5c8ac116b7fa857ae24657b1983de3ede4f21a26608b9512a4a3a0c9a4d" + image: "registry.redhat.io/openshift-serverless-1/net-istio-controller-rhel8@sha256:e40c912031277f8fb910df058050567f427397b1790cdf655521fbf5a991e096" - name: "IMAGE_net-istio-webhook__webhook" - image: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:670ed3f68b3be824c8b8a74f024591ee20898e83cd974536b8cea59513e2bb88" + image: "registry.redhat.io/openshift-serverless-1/net-istio-webhook-rhel8@sha256:f9bb9bc8db0876379cb51db1e74522f5795e41edba18ee7fdedc2e9fa2b9adda" - name: "IMAGE_eventing-controller__eventing-controller" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:cd1870f04b9fcc70a7b5f8af6f1e204923158d95b6bbbaa40c75f4bf38d1b2f8" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-controller-rhel8@sha256:841eaf25d520fce67b4c4ad73342fd394324910eedbef868c8698c5297584f78" - name: "IMAGE_eventing-istio-controller__eventing-istio-controller" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:4fdb2768514b69c39e703c630088454b79bf0502fcf9db84e351891f1ade3a3f" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-istio-controller-rhel8@sha256:44f8f2b1c1aafe0518a54f2efb2e06c31ce128fec5b8fd2ae7cd6c5f56ec91ed" - name: "IMAGE_eventing-webhook__eventing-webhook" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:6b18a49c54143246e6fb8e79adf2303b54ba52bffb5dae13601df69f33c3f2b0" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-webhook-rhel8@sha256:86f0d85a774e36c3a07e0b336db581d2e75c5fad4378b9adc1b3b1ecc98b2e8b" - name: "IMAGE_storage-version-migration-eventing-__migrate" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:d8ad42aa5c662e0d4b6e94a636493e110875d756b1f3e9f08bb877c6bbe5098e" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:b54b7ef3c46d04e63de68d881452baf15f20afd66544ef4652c30027b28284e4" - name: "IMAGE_mt-broker-controller__mt-broker-controller" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:065ee8dc1e5566aac4b0bc7b3b63613db7a8626bc8cdf8bed81c059fb22c9558" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtchannel-broker-rhel8@sha256:7038e3d61308bf3d252ceb809bc69dd1fae2bd1fd9992ab53fc70a459d807a77" - name: "IMAGE_mt-broker-filter__filter" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:04c3c9c07833e12975bededd9f9a44f0cbd39525f487a87be2eba36f3dbf72ea" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-filter-rhel8@sha256:406664cd7698179dedb947b3ce03075914b68e56977a3a51d382938ec290e295" - name: "IMAGE_mt-broker-ingress__ingress" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:848b4855a75f2e9e5ddfbde5fe5695a320c527758c2f57ebe48584f4c0d02780" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-ingress-rhel8@sha256:6092c68f02f0cb0fae0f8f6800048d279c89528dc9c9a85b3e0910e461133d7d" - name: "IMAGE_imc-controller__controller" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:b519a88e7505b7cd5e0b87abb870a721101b92089a90f8720085e3fda2b0ff70" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-controller-rhel8@sha256:52244782e992be48bcce811e87271b22b9c70a222115018f717b3bf0a4f6bc34" - name: "IMAGE_imc-dispatcher__dispatcher" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:ce21d160603172ff37829c399028da622f9a8f525817bc58edcc06bc4c6cb2ce" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:3b774b1bf094a267c20133326015eaaa305a5fd78632a0964084b2e9da9d0f3f" - name: "IMAGE_pingsource-mt-adapter__dispatcher" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:b275c025b6113a3a803b39bf8465729ca8a025168dfed6cfa31791712ed5047b" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-mtping-rhel8@sha256:78d56f9ef684c17e475a3559585d88c376a32045bb11129f92746d3d4854a117" - name: "IMAGE_job-sink__job-sink" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:3fe3e2dcfc5fc2b60a9e1cd17576e5805e4604054a48237dd9c311d9da983c53" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-jobsink-rhel8@sha256:750688ac07d15be2b43d66eb3e30ba417bf427b78790c8b59605a93bcce5673a" - name: "IMAGE_APISERVER_RA_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:841574c937506069631266e6ad9423fdb7853f33b70c02d19b0d821862b2fa6a" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-apiserver-receive-adapter-rhel8@sha256:8a6940ada4e989310f164dae6112528016217fa92ac97233ed56397b8c06f1da" - name: "IMAGE_DISPATCHER_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:ce21d160603172ff37829c399028da622f9a8f525817bc58edcc06bc4c6cb2ce" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-channel-dispatcher-rhel8@sha256:3b774b1bf094a267c20133326015eaaa305a5fd78632a0964084b2e9da9d0f3f" - name: "IMAGE_EVENT_TRANSFORM_JSONATA_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:b75ed48f0130203eae50b934410178844af86fbe953825cc3114764db11a216f" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-transform-jsonata-rhel8@sha256:d5c6983ce7e56bff380e4a80b930680a9f50ff1fe4b6f8143bda058a8b221ff6" - name: "IMAGE_INTEGRATION_SOURCE_TIMER_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-timer-source-rhel8@sha256:4c82613b53e280a85c05f0b27449c804a2e380ba881046bf364cdf88e73405b5" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-timer-source-rhel8@sha256:0aa4e712c454dd0615a191d509d6b54731bb990cea8f3d70d14889929456574a" - name: "IMAGE_INTEGRATION_SOURCE_AWS_S3_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-source-rhel8@sha256:c03700e21670fb7bae5feb434f981db30afbe366da20f004cd0faf91538fe96b" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-source-rhel8@sha256:eab8141b7ca0e84823ea197a78b6e258691153bf85bc74a7f7a761998d15c194" - name: "IMAGE_INTEGRATION_SOURCE_AWS_SQS_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-source-rhel8@sha256:5ef87186e7b38d727b162c6027f20da49695094618380e3686e3c61dd51fd31d" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-source-rhel8@sha256:a440d67cdb3c96865bddc9a80612a8b1e02f355e3bb6377666fb005b15999aef" - name: "IMAGE_INTEGRATION_SOURCE_AWS_DDB_STREAMS_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-ddb-streams-source-rhel8@sha256:5a2eef78620450c91e6951d808275774144f54bdfefc7d0e7fa393aba0e86345" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-ddb-streams-source-rhel8@sha256:20a1ade9e8ab7d1663de3075996e36695170d30219e2561e6ff2ed24f66c2ac2" - name: "IMAGE_INTEGRATION_SINK_LOG_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-log-sink-rhel8@sha256:f1b9d6b31dbd0e8957e24be849bef1cede9ed255bcfb1a9d5ec627a45b02b9b2" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-log-sink-rhel8@sha256:688507afe68fbac06150cc750e25b1a925bceac17ee9bef3ef4f968e65d5ed4c" - name: "IMAGE_INTEGRATION_SINK_AWS_S3_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-sink-rhel8@sha256:b4220e7c8324a97d4f173bd214ee56fcaf70121cdb011b4cd8782e5a30456871" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-s3-sink-rhel8@sha256:d4042cfad92836c213be577d99599188d2332b55e6ea805257cfce05b07983b3" - name: "IMAGE_INTEGRATION_SINK_AWS_SQS_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-sink-rhel8@sha256:06e24a773dd110de200985d9693b075d27497d23915492755d5ac86b55322ccb" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sqs-sink-rhel8@sha256:2526c000ea374336c303c6c449a85272977b89e227fc0f0e0de5523d9edcc794" - name: "IMAGE_INTEGRATION_SINK_AWS_SNS_IMAGE" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sns-sink-rhel8@sha256:893ed28260201ad5303d37b2fa4890a02053f5e66ed4570b65d9b7bbd4a5c968" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-integrations-aws-sns-sink-rhel8@sha256:2fd5c5d6a6e48b53d4b5a11a8257eb31ebc3568c5601faf39512b53ddefd3d49" - name: "IMAGE_eventmesh-backend__controller" - image: "registry.redhat.io/openshift-serverless-1/kn-backstage-plugins-eventmesh-rhel8@sha256:3a1e40530d8022c86bde6ef6803bb9db545d95985ea2698dbc175d3111010751" + image: "registry.redhat.io/openshift-serverless-1/kn-backstage-plugins-eventmesh-rhel8@sha256:5c6b9236ba9001cba22a23906b70849ebc1eb1e561c0166b9aadb4843607b730" - name: "IMAGE_KUBE_RBAC_PROXY" image: "registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:67651adfd8e6c8d12d2b9585c723d5fbdb664818f803312bfe3522e04a81e9b0" - name: "IMAGE_KN_PLUGIN_EVENT_SENDER" image: "registry.redhat.io/openshift-serverless-1/kn-plugin-event-sender-rhel8@sha256:3f6b47431a38ca5c518c0105ad2f79b92f3067f5c7e56c5e46bd13eb1e9982de" - name: "IMAGE_KN_CLIENT" - image: "registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8@sha256:930bfee931adc3bcaa53eec2d4b7cae67ac8edd2af18840ca9506b62db9c261e" + image: "registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8@sha256:5d550dae56a112c77748de341ba08bd1a712bd804cf7219196cf7d7019c7db8a" - name: "IMAGE_KN_PLUGIN_FUNC_UTIL" image: "registry.redhat.io/openshift-serverless-1/kn-plugin-func-func-util-rhel8@sha256:d5f49cc564427e52c796d1ed64b00d2f62ce6c47b1624a2e06e658b87c3ac3dd" - name: "IMAGE_KN_PLUGIN_FUNC_TEKTON_BUILDAH" @@ -1456,28 +1456,28 @@ spec: - name: "IMAGE_KN_PLUGIN_FUNC_PYTHON_39" image: "registry.access.redhat.com/ubi8/python-39@sha256:27e795fd6b1b77de70d1dc73a65e4c790650748a9cfda138fdbd194b3d6eea3d" - name: "KAFKA_IMAGE_kafka-broker-receiver__kafka-broker-receiver" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:22dd0d9615515d67b09fadb9e4c5034723b298e89b9604a60015b270a5cb8b5e" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:3ddd02fc4a8d782748d874e573f4bcdb0568f23bd9cfed29b2327ba17f12d15f" - name: "KAFKA_IMAGE_kafka-broker-dispatcher__kafka-broker-dispatcher" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:e84042cddfa58e3e5879432dbfd60c33845207869a5191807877ff309a758c26" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:5f51705a11616406d12ae99619127b136b5402811bd81a5b4022be4cdd7aa63a" - name: "KAFKA_IMAGE_kafka-channel-receiver__kafka-channel-receiver" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:22dd0d9615515d67b09fadb9e4c5034723b298e89b9604a60015b270a5cb8b5e" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:3ddd02fc4a8d782748d874e573f4bcdb0568f23bd9cfed29b2327ba17f12d15f" - name: "KAFKA_IMAGE_kafka-channel-dispatcher__kafka-channel-dispatcher" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:e84042cddfa58e3e5879432dbfd60c33845207869a5191807877ff309a758c26" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:5f51705a11616406d12ae99619127b136b5402811bd81a5b4022be4cdd7aa63a" - name: "KAFKA_IMAGE_kafka-controller__controller" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-kafka-controller-rhel8@sha256:7b37c9022971dde1be3e06353263db12d4c43281bb3de9176aa736477efdffbc" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-kafka-controller-rhel8@sha256:72461fc53e86213004b436e2e2d420362186b7bc3f614f3a1d5c5fd6464da3c9" - name: "KAFKA_IMAGE_kafka-sink-receiver__kafka-sink-receiver" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:22dd0d9615515d67b09fadb9e4c5034723b298e89b9604a60015b270a5cb8b5e" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-receiver-rhel8@sha256:3ddd02fc4a8d782748d874e573f4bcdb0568f23bd9cfed29b2327ba17f12d15f" - name: "KAFKA_IMAGE_kafka-source-dispatcher__kafka-source-dispatcher" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:e84042cddfa58e3e5879432dbfd60c33845207869a5191807877ff309a758c26" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-dispatcher-rhel8@sha256:5f51705a11616406d12ae99619127b136b5402811bd81a5b4022be4cdd7aa63a" - name: "KAFKA_IMAGE_kafka-webhook-eventing__kafka-webhook-eventing" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-webhook-kafka-rhel8@sha256:2e3d8333f5bcc8605fd20de2698413b59433bf2a6bacc63c1327401449ae89c0" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-webhook-kafka-rhel8@sha256:ca7aa47dbaeb243c068a850d4ebe6f904bdd78daaac4140e674555d981ae23f6" - name: "KAFKA_IMAGE_kafka-controller-post-install__post-install" - image: "registry.redhat.io/openshift-serverless-1/kn-ekb-post-install-rhel8@sha256:f3828ffa6628f0b70c4e8b95b9bde90289639b186a22047037da515f3b8193b0" + image: "registry.redhat.io/openshift-serverless-1/kn-ekb-post-install-rhel8@sha256:f173e35d967a67cbfd77c7f931afbad13cb21f542a1f4795d449cd61c55d4ed8" - name: "KAFKA_IMAGE_knative-kafka-storage-version-migrator__migrate" - image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:d8ad42aa5c662e0d4b6e94a636493e110875d756b1f3e9f08bb877c6bbe5098e" + image: "registry.redhat.io/openshift-serverless-1/kn-eventing-migrate-rhel8@sha256:b54b7ef3c46d04e63de68d881452baf15f20afd66544ef4652c30027b28284e4" - name: "IMAGE_MUST_GATHER" - image: "registry.redhat.io/openshift-serverless-1/serverless-must-gather-rhel8@sha256:5d950be6a17ac307b37e0e2699abc6f2d1af6e0814bad7e09086d8b8a0e2d0a9" + image: "registry.redhat.io/openshift-serverless-1/serverless-must-gather-rhel8@sha256:89f8d6964d57209f9c31ab28ae3238a64d5dcf71dc3cf274607a72043fd40f9a" - name: "IMAGE_KN_CLIENT_CLI_ARTIFACTS" - image: "registry.redhat.io/openshift-serverless-1/kn-client-cli-artifacts-rhel8@sha256:3cb5ceffab278d5f8b667bbbb770eaf5967d2864479b1b287367486740cbb2e0" + image: "registry.redhat.io/openshift-serverless-1/kn-client-cli-artifacts-rhel8@sha256:02230ae9100f2e551f79988b810dea1594cc567d3252b8ad8e9a6392fd34a9e7" replaces: serverless-operator.v1.36.0 version: 1.37.0 diff --git a/test/images-rekt.yaml b/test/images-rekt.yaml index 00d7e5cfec..b5827a3874 100644 --- a/test/images-rekt.yaml +++ b/test/images-rekt.yaml @@ -1,2 +1,2 @@ -knative.dev/reconciler-test/cmd/eventshub: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-test-eventshub@sha256:c9f8e14a5bd6c142b939dabe327779350aa1bcacb9a2c0fd003ef14db718e4b7 -knative.dev/eventing/cmd/heartbeats: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-heartbeats@sha256:108151427150d0dda57bb3a0e65d938feca3122dad315dcbe35ed0e96bd38ef8 +knative.dev/reconciler-test/cmd/eventshub: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-test-eventshub@sha256:3c11c7d1d46a13f1d3aca9882305e5d224d9ef846e7492b35b029b5346d75ad6 +knative.dev/eventing/cmd/heartbeats: quay.io/redhat-user-workloads/ocp-serverless-tenant/serverless-operator-137/kn-eventing-heartbeats@sha256:ee57e4d453510fe578eff335f1bebdd18ea889d343a0104d16d1b467d2336b40 diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare.go b/vendor/github.com/stretchr/testify/assert/assertion_compare.go index 7e19eba090..ffb24e8e31 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_compare.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_compare.go @@ -390,7 +390,8 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []compareResult{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...) + failMessage := fmt.Sprintf("\"%v\" is not greater than \"%v\"", e1, e2) + return compareTwoValues(t, e1, e2, []compareResult{compareGreater}, failMessage, msgAndArgs...) } // GreaterOrEqual asserts that the first element is greater than or equal to the second @@ -403,7 +404,8 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []compareResult{compareGreater, compareEqual}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...) + failMessage := fmt.Sprintf("\"%v\" is not greater than or equal to \"%v\"", e1, e2) + return compareTwoValues(t, e1, e2, []compareResult{compareGreater, compareEqual}, failMessage, msgAndArgs...) } // Less asserts that the first element is less than the second @@ -415,7 +417,8 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []compareResult{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...) + failMessage := fmt.Sprintf("\"%v\" is not less than \"%v\"", e1, e2) + return compareTwoValues(t, e1, e2, []compareResult{compareLess}, failMessage, msgAndArgs...) } // LessOrEqual asserts that the first element is less than or equal to the second @@ -428,7 +431,8 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []compareResult{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...) + failMessage := fmt.Sprintf("\"%v\" is not less than or equal to \"%v\"", e1, e2) + return compareTwoValues(t, e1, e2, []compareResult{compareLess, compareEqual}, failMessage, msgAndArgs...) } // Positive asserts that the specified element is positive @@ -440,7 +444,8 @@ func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { h.Helper() } zero := reflect.Zero(reflect.TypeOf(e)) - return compareTwoValues(t, e, zero.Interface(), []compareResult{compareGreater}, "\"%v\" is not positive", msgAndArgs...) + failMessage := fmt.Sprintf("\"%v\" is not positive", e) + return compareTwoValues(t, e, zero.Interface(), []compareResult{compareGreater}, failMessage, msgAndArgs...) } // Negative asserts that the specified element is negative @@ -452,7 +457,8 @@ func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { h.Helper() } zero := reflect.Zero(reflect.TypeOf(e)) - return compareTwoValues(t, e, zero.Interface(), []compareResult{compareLess}, "\"%v\" is not negative", msgAndArgs...) + failMessage := fmt.Sprintf("\"%v\" is not negative", e) + return compareTwoValues(t, e, zero.Interface(), []compareResult{compareLess}, failMessage, msgAndArgs...) } func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool { @@ -468,11 +474,11 @@ func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedCompare compareResult, isComparable := compare(e1, e2, e1Kind) if !isComparable { - return Fail(t, fmt.Sprintf("Can not compare type \"%s\"", reflect.TypeOf(e1)), msgAndArgs...) + return Fail(t, fmt.Sprintf(`Can not compare type "%T"`, e1), msgAndArgs...) } if !containsValue(allowedComparesResults, compareResult) { - return Fail(t, fmt.Sprintf(failMessage, e1, e2), msgAndArgs...) + return Fail(t, failMessage, msgAndArgs...) } return true diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go index 1906341657..c592f6ad5f 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_format.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go @@ -50,10 +50,19 @@ func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string return ElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...) } -// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Emptyf asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // assert.Emptyf(t, obj, "error message %s", "formatted") +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() @@ -117,10 +126,8 @@ func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg stri // Errorf asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if assert.Errorf(t, err, "error message %s", "formatted") { -// assert.Equal(t, expectedErrorf, err) -// } +// actualObj, err := SomeFunction() +// assert.Errorf(t, err, "error message %s", "formatted") func Errorf(t TestingT, err error, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() @@ -438,7 +445,19 @@ func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interf return IsNonIncreasing(t, object, append([]interface{}{msg}, args...)...) } +// IsNotTypef asserts that the specified objects are not of the same type. +// +// assert.IsNotTypef(t, &NotMyStruct{}, &MyStruct{}, "error message %s", "formatted") +func IsNotTypef(t TestingT, theType interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsNotType(t, theType, object, append([]interface{}{msg}, args...)...) +} + // IsTypef asserts that the specified objects are of the same type. +// +// assert.IsTypef(t, &MyStruct{}, &MyStruct{}, "error message %s", "formatted") func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() @@ -585,8 +604,7 @@ func NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg str return NotElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...) } -// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmptyf asserts that the specified object is NOT [Empty]. // // if assert.NotEmptyf(t, obj, "error message %s", "formatted") { // assert.Equal(t, "two", obj[1]) @@ -693,12 +711,15 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, return NotSame(t, expected, actual, append([]interface{}{msg}, args...)...) } -// NotSubsetf asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // assert.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted") // assert.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted") +// assert.NotSubsetf(t, [1, 3, 4], {1: "one", 2: "two"}, "error message %s", "formatted") +// assert.NotSubsetf(t, {"x": 1, "y": 2}, ["z"], "error message %s", "formatted") func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() @@ -782,11 +803,15 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg return Same(t, expected, actual, append([]interface{}{msg}, args...)...) } -// Subsetf asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subsetf asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // assert.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted") // assert.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted") +// assert.Subsetf(t, [1, 2, 3], {1: "one", 2: "two"}, "error message %s", "formatted") +// assert.Subsetf(t, {"x": 1, "y": 2}, ["x"], "error message %s", "formatted") func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go index 21629087ba..58db928450 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -92,10 +92,19 @@ func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg st return ElementsMatchf(a.t, listA, listB, msg, args...) } -// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Empty asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // a.Empty(obj) +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -103,10 +112,19 @@ func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool { return Empty(a.t, object, msgAndArgs...) } -// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Emptyf asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // a.Emptyf(obj, "error message %s", "formatted") +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -224,10 +242,8 @@ func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string // Error asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if a.Error(err) { -// assert.Equal(t, expectedError, err) -// } +// actualObj, err := SomeFunction() +// a.Error(err) func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -297,10 +313,8 @@ func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...inter // Errorf asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if a.Errorf(err, "error message %s", "formatted") { -// assert.Equal(t, expectedErrorf, err) -// } +// actualObj, err := SomeFunction() +// a.Errorf(err, "error message %s", "formatted") func (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -868,7 +882,29 @@ func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...in return IsNonIncreasingf(a.t, object, msg, args...) } +// IsNotType asserts that the specified objects are not of the same type. +// +// a.IsNotType(&NotMyStruct{}, &MyStruct{}) +func (a *Assertions) IsNotType(theType interface{}, object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNotType(a.t, theType, object, msgAndArgs...) +} + +// IsNotTypef asserts that the specified objects are not of the same type. +// +// a.IsNotTypef(&NotMyStruct{}, &MyStruct{}, "error message %s", "formatted") +func (a *Assertions) IsNotTypef(theType interface{}, object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNotTypef(a.t, theType, object, msg, args...) +} + // IsType asserts that the specified objects are of the same type. +// +// a.IsType(&MyStruct{}, &MyStruct{}) func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -877,6 +913,8 @@ func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAnd } // IsTypef asserts that the specified objects are of the same type. +// +// a.IsTypef(&MyStruct{}, &MyStruct{}, "error message %s", "formatted") func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1162,8 +1200,7 @@ func (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg return NotElementsMatchf(a.t, listA, listB, msg, args...) } -// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmpty asserts that the specified object is NOT [Empty]. // // if a.NotEmpty(obj) { // assert.Equal(t, "two", obj[1]) @@ -1175,8 +1212,7 @@ func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) boo return NotEmpty(a.t, object, msgAndArgs...) } -// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmptyf asserts that the specified object is NOT [Empty]. // // if a.NotEmptyf(obj, "error message %s", "formatted") { // assert.Equal(t, "two", obj[1]) @@ -1378,12 +1414,15 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri return NotSamef(a.t, expected, actual, msg, args...) } -// NotSubset asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubset asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.NotSubset([1, 3, 4], [1, 2]) // a.NotSubset({"x": 1, "y": 2}, {"z": 3}) +// a.NotSubset([1, 3, 4], {1: "one", 2: "two"}) +// a.NotSubset({"x": 1, "y": 2}, ["z"]) func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1391,12 +1430,15 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs return NotSubset(a.t, list, subset, msgAndArgs...) } -// NotSubsetf asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.NotSubsetf([1, 3, 4], [1, 2], "error message %s", "formatted") // a.NotSubsetf({"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted") +// a.NotSubsetf([1, 3, 4], {1: "one", 2: "two"}, "error message %s", "formatted") +// a.NotSubsetf({"x": 1, "y": 2}, ["z"], "error message %s", "formatted") func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1556,11 +1598,15 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, return Samef(a.t, expected, actual, msg, args...) } -// Subset asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subset asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.Subset([1, 2, 3], [1, 2]) // a.Subset({"x": 1, "y": 2}, {"x": 1}) +// a.Subset([1, 2, 3], {1: "one", 2: "two"}) +// a.Subset({"x": 1, "y": 2}, ["x"]) func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1568,11 +1614,15 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ... return Subset(a.t, list, subset, msgAndArgs...) } -// Subsetf asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subsetf asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.Subsetf([1, 2, 3], [1, 2], "error message %s", "formatted") // a.Subsetf({"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted") +// a.Subsetf([1, 2, 3], {1: "one", 2: "two"}, "error message %s", "formatted") +// a.Subsetf({"x": 1, "y": 2}, ["x"], "error message %s", "formatted") func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() diff --git a/vendor/github.com/stretchr/testify/assert/assertion_order.go b/vendor/github.com/stretchr/testify/assert/assertion_order.go index 1d2f71824a..2fdf80fdd3 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_order.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_order.go @@ -33,7 +33,7 @@ func isOrdered(t TestingT, object interface{}, allowedComparesResults []compareR compareResult, isComparable := compare(prevValueInterface, valueInterface, firstValueKind) if !isComparable { - return Fail(t, fmt.Sprintf("Can not compare type \"%s\" and \"%s\"", reflect.TypeOf(value), reflect.TypeOf(prevValue)), msgAndArgs...) + return Fail(t, fmt.Sprintf(`Can not compare type "%T" and "%T"`, value, prevValue), msgAndArgs...) } if !containsValue(allowedComparesResults, compareResult) { diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go index 4e91332bb5..de8de0cb6c 100644 --- a/vendor/github.com/stretchr/testify/assert/assertions.go +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -210,59 +210,77 @@ the problem actually occurred in calling code.*/ // of each stack frame leading from the current test to the assert call that // failed. func CallerInfo() []string { - var pc uintptr - var ok bool var file string var line int var name string + const stackFrameBufferSize = 10 + pcs := make([]uintptr, stackFrameBufferSize) + callers := []string{} - for i := 0; ; i++ { - pc, file, line, ok = runtime.Caller(i) - if !ok { - // The breaks below failed to terminate the loop, and we ran off the - // end of the call stack. - break - } + offset := 1 - // This is a huge edge case, but it will panic if this is the case, see #180 - if file == "" { - break - } + for { + n := runtime.Callers(offset, pcs) - f := runtime.FuncForPC(pc) - if f == nil { - break - } - name = f.Name() - - // testing.tRunner is the standard library function that calls - // tests. Subtests are called directly by tRunner, without going through - // the Test/Benchmark/Example function that contains the t.Run calls, so - // with subtests we should break when we hit tRunner, without adding it - // to the list of callers. - if name == "testing.tRunner" { + if n == 0 { break } - parts := strings.Split(file, "/") - if len(parts) > 1 { - filename := parts[len(parts)-1] - dir := parts[len(parts)-2] - if (dir != "assert" && dir != "mock" && dir != "require") || filename == "mock_test.go" { - callers = append(callers, fmt.Sprintf("%s:%d", file, line)) + frames := runtime.CallersFrames(pcs[:n]) + + for { + frame, more := frames.Next() + pc = frame.PC + file = frame.File + line = frame.Line + + // This is a huge edge case, but it will panic if this is the case, see #180 + if file == "" { + break } - } - // Drop the package - segments := strings.Split(name, ".") - name = segments[len(segments)-1] - if isTest(name, "Test") || - isTest(name, "Benchmark") || - isTest(name, "Example") { - break + f := runtime.FuncForPC(pc) + if f == nil { + break + } + name = f.Name() + + // testing.tRunner is the standard library function that calls + // tests. Subtests are called directly by tRunner, without going through + // the Test/Benchmark/Example function that contains the t.Run calls, so + // with subtests we should break when we hit tRunner, without adding it + // to the list of callers. + if name == "testing.tRunner" { + break + } + + parts := strings.Split(file, "/") + if len(parts) > 1 { + filename := parts[len(parts)-1] + dir := parts[len(parts)-2] + if (dir != "assert" && dir != "mock" && dir != "require") || filename == "mock_test.go" { + callers = append(callers, fmt.Sprintf("%s:%d", file, line)) + } + } + + // Drop the package + dotPos := strings.LastIndexByte(name, '.') + name = name[dotPos+1:] + if isTest(name, "Test") || + isTest(name, "Benchmark") || + isTest(name, "Example") { + break + } + + if !more { + break + } } + + // Next batch + offset += cap(pcs) } return callers @@ -437,17 +455,34 @@ func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, return true } +func isType(expectedType, object interface{}) bool { + return ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType)) +} + // IsType asserts that the specified objects are of the same type. -func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { +// +// assert.IsType(t, &MyStruct{}, &MyStruct{}) +func IsType(t TestingT, expectedType, object interface{}, msgAndArgs ...interface{}) bool { + if isType(expectedType, object) { + return true + } if h, ok := t.(tHelper); ok { h.Helper() } + return Fail(t, fmt.Sprintf("Object expected to be of type %T, but was %T", expectedType, object), msgAndArgs...) +} - if !ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType)) { - return Fail(t, fmt.Sprintf("Object expected to be of type %v, but was %v", reflect.TypeOf(expectedType), reflect.TypeOf(object)), msgAndArgs...) +// IsNotType asserts that the specified objects are not of the same type. +// +// assert.IsNotType(t, &NotMyStruct{}, &MyStruct{}) +func IsNotType(t TestingT, theType, object interface{}, msgAndArgs ...interface{}) bool { + if !isType(theType, object) { + return true } - - return true + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Fail(t, fmt.Sprintf("Object type expected to be different than %T", theType), msgAndArgs...) } // Equal asserts that two objects are equal. @@ -475,7 +510,6 @@ func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) } return true - } // validateEqualArgs checks whether provided arguments can be safely used in the @@ -510,8 +544,9 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b if !same { // both are pointers but not the same type & pointing to the same address return Fail(t, fmt.Sprintf("Not same: \n"+ - "expected: %p %#v\n"+ - "actual : %p %#v", expected, expected, actual, actual), msgAndArgs...) + "expected: %p %#[1]v\n"+ + "actual : %p %#[2]v", + expected, actual), msgAndArgs...) } return true @@ -530,14 +565,14 @@ func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{} same, ok := samePointers(expected, actual) if !ok { - //fails when the arguments are not pointers + // fails when the arguments are not pointers return !(Fail(t, "Both arguments must be pointers", msgAndArgs...)) } if same { return Fail(t, fmt.Sprintf( - "Expected and actual point to the same object: %p %#v", - expected, expected), msgAndArgs...) + "Expected and actual point to the same object: %p %#[1]v", + expected), msgAndArgs...) } return true } @@ -549,7 +584,7 @@ func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{} func samePointers(first, second interface{}) (same bool, ok bool) { firstPtr, secondPtr := reflect.ValueOf(first), reflect.ValueOf(second) if firstPtr.Kind() != reflect.Ptr || secondPtr.Kind() != reflect.Ptr { - return false, false //not both are pointers + return false, false // not both are pointers } firstType, secondType := reflect.TypeOf(first), reflect.TypeOf(second) @@ -610,7 +645,6 @@ func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interfa } return true - } // EqualExportedValues asserts that the types of two objects are equal and their public @@ -665,7 +699,6 @@ func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{} } return Equal(t, expected, actual, msgAndArgs...) - } // NotNil asserts that the specified object is not nil. @@ -715,37 +748,45 @@ func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { // isEmpty gets whether the specified object is considered empty or not. func isEmpty(object interface{}) bool { - // get nil case out of the way if object == nil { return true } - objValue := reflect.ValueOf(object) + return isEmptyValue(reflect.ValueOf(object)) +} +// isEmptyValue gets whether the specified reflect.Value is considered empty or not. +func isEmptyValue(objValue reflect.Value) bool { + if objValue.IsZero() { + return true + } + // Special cases of non-zero values that we consider empty switch objValue.Kind() { // collection types are empty when they have no element + // Note: array types are empty when they match their zero-initialized state. case reflect.Chan, reflect.Map, reflect.Slice: return objValue.Len() == 0 - // pointers are empty if nil or if the value they point to is empty + // non-nil pointers are empty if the value they point to is empty case reflect.Ptr: - if objValue.IsNil() { - return true - } - deref := objValue.Elem().Interface() - return isEmpty(deref) - // for all other types, compare against the zero value - // array types are empty when they match their zero-initialized state - default: - zero := reflect.Zero(objValue.Type()) - return reflect.DeepEqual(object, zero.Interface()) + return isEmptyValue(objValue.Elem()) } + return false } -// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Empty asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // assert.Empty(t, obj) +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { pass := isEmpty(object) if !pass { @@ -756,11 +797,9 @@ func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { } return pass - } -// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmpty asserts that the specified object is NOT [Empty]. // // if assert.NotEmpty(t, obj) { // assert.Equal(t, "two", obj[1]) @@ -775,7 +814,6 @@ func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { } return pass - } // getLen tries to get the length of an object. @@ -819,7 +857,6 @@ func True(t TestingT, value bool, msgAndArgs ...interface{}) bool { } return true - } // False asserts that the specified value is false. @@ -834,7 +871,6 @@ func False(t TestingT, value bool, msgAndArgs ...interface{}) bool { } return true - } // NotEqual asserts that the specified values are NOT equal. @@ -857,7 +893,6 @@ func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{ } return true - } // NotEqualValues asserts that two objects are not equal even when converted to the same type @@ -880,7 +915,6 @@ func NotEqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...inte // return (true, false) if element was not found. // return (true, true) if element was found. func containsElement(list interface{}, element interface{}) (ok, found bool) { - listValue := reflect.ValueOf(list) listType := reflect.TypeOf(list) if listType == nil { @@ -915,7 +949,6 @@ func containsElement(list interface{}, element interface{}) (ok, found bool) { } } return true, false - } // Contains asserts that the specified string, list(array, slice...) or map contains the @@ -938,7 +971,6 @@ func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bo } return true - } // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the @@ -961,14 +993,17 @@ func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) } return true - } -// Subset asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subset asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // assert.Subset(t, [1, 2, 3], [1, 2]) // assert.Subset(t, {"x": 1, "y": 2}, {"x": 1}) +// assert.Subset(t, [1, 2, 3], {1: "one", 2: "two"}) +// assert.Subset(t, {"x": 1, "y": 2}, ["x"]) func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) { if h, ok := t.(tHelper); ok { h.Helper() @@ -983,7 +1018,7 @@ func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok } subsetKind := reflect.TypeOf(subset).Kind() - if subsetKind != reflect.Array && subsetKind != reflect.Slice && listKind != reflect.Map { + if subsetKind != reflect.Array && subsetKind != reflect.Slice && subsetKind != reflect.Map { return Fail(t, fmt.Sprintf("%q has an unsupported type %s", subset, subsetKind), msgAndArgs...) } @@ -1007,6 +1042,13 @@ func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok } subsetList := reflect.ValueOf(subset) + if subsetKind == reflect.Map { + keys := make([]interface{}, subsetList.Len()) + for idx, key := range subsetList.MapKeys() { + keys[idx] = key.Interface() + } + subsetList = reflect.ValueOf(keys) + } for i := 0; i < subsetList.Len(); i++ { element := subsetList.Index(i).Interface() ok, found := containsElement(list, element) @@ -1021,12 +1063,15 @@ func Subset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok return true } -// NotSubset asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubset asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // assert.NotSubset(t, [1, 3, 4], [1, 2]) // assert.NotSubset(t, {"x": 1, "y": 2}, {"z": 3}) +// assert.NotSubset(t, [1, 3, 4], {1: "one", 2: "two"}) +// assert.NotSubset(t, {"x": 1, "y": 2}, ["z"]) func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) (ok bool) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1041,7 +1086,7 @@ func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) } subsetKind := reflect.TypeOf(subset).Kind() - if subsetKind != reflect.Array && subsetKind != reflect.Slice && listKind != reflect.Map { + if subsetKind != reflect.Array && subsetKind != reflect.Slice && subsetKind != reflect.Map { return Fail(t, fmt.Sprintf("%q has an unsupported type %s", subset, subsetKind), msgAndArgs...) } @@ -1065,11 +1110,18 @@ func NotSubset(t TestingT, list, subset interface{}, msgAndArgs ...interface{}) } subsetList := reflect.ValueOf(subset) + if subsetKind == reflect.Map { + keys := make([]interface{}, subsetList.Len()) + for idx, key := range subsetList.MapKeys() { + keys[idx] = key.Interface() + } + subsetList = reflect.ValueOf(keys) + } for i := 0; i < subsetList.Len(); i++ { element := subsetList.Index(i).Interface() ok, found := containsElement(list, element) if !ok { - return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", list), msgAndArgs...) + return Fail(t, fmt.Sprintf("%q could not be applied builtin len()", list), msgAndArgs...) } if !found { return true @@ -1591,10 +1643,8 @@ func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool { // Error asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if assert.Error(t, err) { -// assert.Equal(t, expectedError, err) -// } +// actualObj, err := SomeFunction() +// assert.Error(t, err) func Error(t TestingT, err error, msgAndArgs ...interface{}) bool { if err == nil { if h, ok := t.(tHelper); ok { @@ -1667,7 +1717,6 @@ func matchRegexp(rx interface{}, str interface{}) bool { default: return r.MatchString(fmt.Sprint(v)) } - } // Regexp asserts that a specified regexp matches a string. @@ -1703,7 +1752,6 @@ func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interf } return !match - } // Zero asserts that i is the zero value for its type. @@ -1814,6 +1862,11 @@ func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{ return Fail(t, fmt.Sprintf("Expected value ('%s') is not valid json.\nJSON parsing error: '%s'", expected, err.Error()), msgAndArgs...) } + // Shortcut if same bytes + if actual == expected { + return true + } + if err := json.Unmarshal([]byte(actual), &actualJSONAsInterface); err != nil { return Fail(t, fmt.Sprintf("Input ('%s') needs to be valid json.\nJSON parsing error: '%s'", actual, err.Error()), msgAndArgs...) } @@ -1832,6 +1885,11 @@ func YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{ return Fail(t, fmt.Sprintf("Expected value ('%s') is not valid yaml.\nYAML parsing error: '%s'", expected, err.Error()), msgAndArgs...) } + // Shortcut if same bytes + if actual == expected { + return true + } + if err := yaml.Unmarshal([]byte(actual), &actualYAMLAsInterface); err != nil { return Fail(t, fmt.Sprintf("Input ('%s') needs to be valid yaml.\nYAML error: '%s'", actual, err.Error()), msgAndArgs...) } @@ -1933,6 +1991,7 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t } ch := make(chan bool, 1) + checkCond := func() { ch <- condition() } timer := time.NewTimer(waitFor) defer timer.Stop() @@ -1940,18 +1999,23 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t ticker := time.NewTicker(tick) defer ticker.Stop() - for tick := ticker.C; ; { + var tickC <-chan time.Time + + // Check the condition once first on the initial call. + go checkCond() + + for { select { case <-timer.C: return Fail(t, "Condition never satisfied", msgAndArgs...) - case <-tick: - tick = nil - go func() { ch <- condition() }() + case <-tickC: + tickC = nil + go checkCond() case v := <-ch: if v { return true } - tick = ticker.C + tickC = ticker.C } } } @@ -1964,6 +2028,9 @@ type CollectT struct { errors []error } +// Helper is like [testing.T.Helper] but does nothing. +func (CollectT) Helper() {} + // Errorf collects the error. func (c *CollectT) Errorf(format string, args ...interface{}) { c.errors = append(c.errors, fmt.Errorf(format, args...)) @@ -2021,35 +2088,42 @@ func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time var lastFinishedTickErrs []error ch := make(chan *CollectT, 1) + checkCond := func() { + collect := new(CollectT) + defer func() { + ch <- collect + }() + condition(collect) + } + timer := time.NewTimer(waitFor) defer timer.Stop() ticker := time.NewTicker(tick) defer ticker.Stop() - for tick := ticker.C; ; { + var tickC <-chan time.Time + + // Check the condition once first on the initial call. + go checkCond() + + for { select { case <-timer.C: for _, err := range lastFinishedTickErrs { t.Errorf("%v", err) } return Fail(t, "Condition never satisfied", msgAndArgs...) - case <-tick: - tick = nil - go func() { - collect := new(CollectT) - defer func() { - ch <- collect - }() - condition(collect) - }() + case <-tickC: + tickC = nil + go checkCond() case collect := <-ch: if !collect.failed() { return true } // Keep the errors from the last ended condition, so that they can be copied to t if timeout is reached. lastFinishedTickErrs = collect.errors - tick = ticker.C + tickC = ticker.C } } } @@ -2064,6 +2138,7 @@ func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.D } ch := make(chan bool, 1) + checkCond := func() { ch <- condition() } timer := time.NewTimer(waitFor) defer timer.Stop() @@ -2071,18 +2146,23 @@ func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.D ticker := time.NewTicker(tick) defer ticker.Stop() - for tick := ticker.C; ; { + var tickC <-chan time.Time + + // Check the condition once first on the initial call. + go checkCond() + + for { select { case <-timer.C: return true - case <-tick: - tick = nil - go func() { ch <- condition() }() + case <-tickC: + tickC = nil + go checkCond() case v := <-ch: if v { return Fail(t, "Condition satisfied", msgAndArgs...) } - tick = ticker.C + tickC = ticker.C } } } @@ -2100,9 +2180,12 @@ func ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { var expectedText string if target != nil { expectedText = target.Error() + if err == nil { + return Fail(t, fmt.Sprintf("Expected error with %q in chain but got nil.", expectedText), msgAndArgs...) + } } - chain := buildErrorChainString(err) + chain := buildErrorChainString(err, false) return Fail(t, fmt.Sprintf("Target error should be in err chain:\n"+ "expected: %q\n"+ @@ -2125,7 +2208,7 @@ func NotErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { expectedText = target.Error() } - chain := buildErrorChainString(err) + chain := buildErrorChainString(err, false) return Fail(t, fmt.Sprintf("Target error should not be in err chain:\n"+ "found: %q\n"+ @@ -2143,11 +2226,17 @@ func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{ return true } - chain := buildErrorChainString(err) + expectedType := reflect.TypeOf(target).Elem().String() + if err == nil { + return Fail(t, fmt.Sprintf("An error is expected but got nil.\n"+ + "expected: %s", expectedType), msgAndArgs...) + } + + chain := buildErrorChainString(err, true) return Fail(t, fmt.Sprintf("Should be in error chain:\n"+ - "expected: %q\n"+ - "in chain: %s", target, chain, + "expected: %s\n"+ + "in chain: %s", expectedType, chain, ), msgAndArgs...) } @@ -2161,24 +2250,46 @@ func NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interfa return true } - chain := buildErrorChainString(err) + chain := buildErrorChainString(err, true) return Fail(t, fmt.Sprintf("Target error should not be in err chain:\n"+ - "found: %q\n"+ - "in chain: %s", target, chain, + "found: %s\n"+ + "in chain: %s", reflect.TypeOf(target).Elem().String(), chain, ), msgAndArgs...) } -func buildErrorChainString(err error) string { +func unwrapAll(err error) (errs []error) { + errs = append(errs, err) + switch x := err.(type) { + case interface{ Unwrap() error }: + err = x.Unwrap() + if err == nil { + return + } + errs = append(errs, unwrapAll(err)...) + case interface{ Unwrap() []error }: + for _, err := range x.Unwrap() { + errs = append(errs, unwrapAll(err)...) + } + } + return +} + +func buildErrorChainString(err error, withType bool) string { if err == nil { return "" } - e := errors.Unwrap(err) - chain := fmt.Sprintf("%q", err.Error()) - for e != nil { - chain += fmt.Sprintf("\n\t%q", e.Error()) - e = errors.Unwrap(e) + var chain string + errs := unwrapAll(err) + for i := range errs { + if i != 0 { + chain += "\n\t" + } + chain += fmt.Sprintf("%q", errs[i].Error()) + if withType { + chain += fmt.Sprintf(" (%T)", errs[i]) + } } return chain } diff --git a/vendor/github.com/stretchr/testify/assert/doc.go b/vendor/github.com/stretchr/testify/assert/doc.go index 4953981d38..a0b953aa5c 100644 --- a/vendor/github.com/stretchr/testify/assert/doc.go +++ b/vendor/github.com/stretchr/testify/assert/doc.go @@ -1,5 +1,9 @@ // Package assert provides a set of comprehensive testing tools for use with the normal Go testing system. // +// # Note +// +// All functions in this package return a bool value indicating whether the assertion has passed. +// // # Example Usage // // The following is a complete example using assert in a standard test function: diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go index 861ed4b7ce..5a6bb75f2c 100644 --- a/vendor/github.com/stretchr/testify/assert/http_assertions.go +++ b/vendor/github.com/stretchr/testify/assert/http_assertions.go @@ -138,7 +138,7 @@ func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, contains := strings.Contains(body, fmt.Sprint(str)) if !contains { - Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body), msgAndArgs...) + Fail(t, fmt.Sprintf("Expected response body for %q to contain %q but found %q", url+"?"+values.Encode(), str, body), msgAndArgs...) } return contains @@ -158,7 +158,7 @@ func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url strin contains := strings.Contains(body, fmt.Sprint(str)) if contains { - Fail(t, fmt.Sprintf("Expected response body for \"%s\" to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body), msgAndArgs...) + Fail(t, fmt.Sprintf("Expected response body for %q to NOT contain %q but found %q", url+"?"+values.Encode(), str, body), msgAndArgs...) } return !contains diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go index baa0cc7d7f..5a74c4f4d5 100644 --- a/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go @@ -1,5 +1,4 @@ //go:build testify_yaml_custom && !testify_yaml_fail && !testify_yaml_default -// +build testify_yaml_custom,!testify_yaml_fail,!testify_yaml_default // Package yaml is an implementation of YAML functions that calls a pluggable implementation. // diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go index b83c6cf64c..0bae80e34a 100644 --- a/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go @@ -1,5 +1,4 @@ //go:build !testify_yaml_fail && !testify_yaml_custom -// +build !testify_yaml_fail,!testify_yaml_custom // Package yaml is just an indirection to handle YAML deserialization. // diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go index e78f7dfe69..8041803fd2 100644 --- a/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go @@ -1,5 +1,4 @@ //go:build testify_yaml_fail && !testify_yaml_custom && !testify_yaml_default -// +build testify_yaml_fail,!testify_yaml_custom,!testify_yaml_default // Package yaml is an implementation of YAML functions that always fail. // diff --git a/vendor/github.com/stretchr/testify/require/doc.go b/vendor/github.com/stretchr/testify/require/doc.go index 9684347245..c8e3f94a80 100644 --- a/vendor/github.com/stretchr/testify/require/doc.go +++ b/vendor/github.com/stretchr/testify/require/doc.go @@ -23,6 +23,8 @@ // // The `require` package have same global functions as in the `assert` package, // but instead of returning a boolean result they call `t.FailNow()`. +// A consequence of this is that it must be called from the goroutine running +// the test function, not from other goroutines created during the test. // // Every assertion function also takes an optional string message as the final argument, // allowing custom error messages to be appended to the message the assertion method outputs. diff --git a/vendor/github.com/stretchr/testify/require/require.go b/vendor/github.com/stretchr/testify/require/require.go index d8921950d7..2d02f9bcef 100644 --- a/vendor/github.com/stretchr/testify/require/require.go +++ b/vendor/github.com/stretchr/testify/require/require.go @@ -117,10 +117,19 @@ func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string t.FailNow() } -// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Empty asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // require.Empty(t, obj) +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -131,10 +140,19 @@ func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) { t.FailNow() } -// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Emptyf asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // require.Emptyf(t, obj, "error message %s", "formatted") +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -279,10 +297,8 @@ func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, ar // Error asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if require.Error(t, err) { -// require.Equal(t, expectedError, err) -// } +// actualObj, err := SomeFunction() +// require.Error(t, err) func Error(t TestingT, err error, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -373,10 +389,8 @@ func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface // Errorf asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if require.Errorf(t, err, "error message %s", "formatted") { -// require.Equal(t, expectedErrorf, err) -// } +// actualObj, err := SomeFunction() +// require.Errorf(t, err, "error message %s", "formatted") func Errorf(t TestingT, err error, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1097,7 +1111,35 @@ func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interf t.FailNow() } +// IsNotType asserts that the specified objects are not of the same type. +// +// require.IsNotType(t, &NotMyStruct{}, &MyStruct{}) +func IsNotType(t TestingT, theType interface{}, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNotType(t, theType, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsNotTypef asserts that the specified objects are not of the same type. +// +// require.IsNotTypef(t, &NotMyStruct{}, &MyStruct{}, "error message %s", "formatted") +func IsNotTypef(t TestingT, theType interface{}, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNotTypef(t, theType, object, msg, args...) { + return + } + t.FailNow() +} + // IsType asserts that the specified objects are of the same type. +// +// require.IsType(t, &MyStruct{}, &MyStruct{}) func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1109,6 +1151,8 @@ func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs } // IsTypef asserts that the specified objects are of the same type. +// +// require.IsTypef(t, &MyStruct{}, &MyStruct{}, "error message %s", "formatted") func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1469,8 +1513,7 @@ func NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg str t.FailNow() } -// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmpty asserts that the specified object is NOT [Empty]. // // if require.NotEmpty(t, obj) { // require.Equal(t, "two", obj[1]) @@ -1485,8 +1528,7 @@ func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) { t.FailNow() } -// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmptyf asserts that the specified object is NOT [Empty]. // // if require.NotEmptyf(t, obj, "error message %s", "formatted") { // require.Equal(t, "two", obj[1]) @@ -1745,12 +1787,15 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, t.FailNow() } -// NotSubset asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubset asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // require.NotSubset(t, [1, 3, 4], [1, 2]) // require.NotSubset(t, {"x": 1, "y": 2}, {"z": 3}) +// require.NotSubset(t, [1, 3, 4], {1: "one", 2: "two"}) +// require.NotSubset(t, {"x": 1, "y": 2}, ["z"]) func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1761,12 +1806,15 @@ func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...i t.FailNow() } -// NotSubsetf asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // require.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted") // require.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted") +// require.NotSubsetf(t, [1, 3, 4], {1: "one", 2: "two"}, "error message %s", "formatted") +// require.NotSubsetf(t, {"x": 1, "y": 2}, ["z"], "error message %s", "formatted") func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1971,11 +2019,15 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg t.FailNow() } -// Subset asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subset asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // require.Subset(t, [1, 2, 3], [1, 2]) // require.Subset(t, {"x": 1, "y": 2}, {"x": 1}) +// require.Subset(t, [1, 2, 3], {1: "one", 2: "two"}) +// require.Subset(t, {"x": 1, "y": 2}, ["x"]) func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1986,11 +2038,15 @@ func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...inte t.FailNow() } -// Subsetf asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subsetf asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // require.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted") // require.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted") +// require.Subsetf(t, [1, 2, 3], {1: "one", 2: "two"}, "error message %s", "formatted") +// require.Subsetf(t, {"x": 1, "y": 2}, ["x"], "error message %s", "formatted") func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go b/vendor/github.com/stretchr/testify/require/require_forward.go index 1bd87304f4..e6f7e94468 100644 --- a/vendor/github.com/stretchr/testify/require/require_forward.go +++ b/vendor/github.com/stretchr/testify/require/require_forward.go @@ -93,10 +93,19 @@ func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg st ElementsMatchf(a.t, listA, listB, msg, args...) } -// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Empty asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // a.Empty(obj) +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -104,10 +113,19 @@ func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) { Empty(a.t, object, msgAndArgs...) } -// Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either -// a slice or a channel with len == 0. +// Emptyf asserts that the given value is "empty". +// +// [Zero values] are "empty". +// +// Arrays are "empty" if every element is the zero value of the type (stricter than "empty"). +// +// Slices, maps and channels with zero length are "empty". +// +// Pointer values are "empty" if the pointer is nil or if the pointed value is "empty". // // a.Emptyf(obj, "error message %s", "formatted") +// +// [Zero values]: https://go.dev/ref/spec#The_zero_value func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -225,10 +243,8 @@ func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string // Error asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if a.Error(err) { -// assert.Equal(t, expectedError, err) -// } +// actualObj, err := SomeFunction() +// a.Error(err) func (a *Assertions) Error(err error, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -298,10 +314,8 @@ func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...inter // Errorf asserts that a function returned an error (i.e. not `nil`). // -// actualObj, err := SomeFunction() -// if a.Errorf(err, "error message %s", "formatted") { -// assert.Equal(t, expectedErrorf, err) -// } +// actualObj, err := SomeFunction() +// a.Errorf(err, "error message %s", "formatted") func (a *Assertions) Errorf(err error, msg string, args ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -869,7 +883,29 @@ func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...in IsNonIncreasingf(a.t, object, msg, args...) } +// IsNotType asserts that the specified objects are not of the same type. +// +// a.IsNotType(&NotMyStruct{}, &MyStruct{}) +func (a *Assertions) IsNotType(theType interface{}, object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNotType(a.t, theType, object, msgAndArgs...) +} + +// IsNotTypef asserts that the specified objects are not of the same type. +// +// a.IsNotTypef(&NotMyStruct{}, &MyStruct{}, "error message %s", "formatted") +func (a *Assertions) IsNotTypef(theType interface{}, object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNotTypef(a.t, theType, object, msg, args...) +} + // IsType asserts that the specified objects are of the same type. +// +// a.IsType(&MyStruct{}, &MyStruct{}) func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -878,6 +914,8 @@ func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAnd } // IsTypef asserts that the specified objects are of the same type. +// +// a.IsTypef(&MyStruct{}, &MyStruct{}, "error message %s", "formatted") func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1163,8 +1201,7 @@ func (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg NotElementsMatchf(a.t, listA, listB, msg, args...) } -// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmpty asserts that the specified object is NOT [Empty]. // // if a.NotEmpty(obj) { // assert.Equal(t, "two", obj[1]) @@ -1176,8 +1213,7 @@ func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) { NotEmpty(a.t, object, msgAndArgs...) } -// NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either -// a slice or a channel with len == 0. +// NotEmptyf asserts that the specified object is NOT [Empty]. // // if a.NotEmptyf(obj, "error message %s", "formatted") { // assert.Equal(t, "two", obj[1]) @@ -1379,12 +1415,15 @@ func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg stri NotSamef(a.t, expected, actual, msg, args...) } -// NotSubset asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubset asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.NotSubset([1, 3, 4], [1, 2]) // a.NotSubset({"x": 1, "y": 2}, {"z": 3}) +// a.NotSubset([1, 3, 4], {1: "one", 2: "two"}) +// a.NotSubset({"x": 1, "y": 2}, ["z"]) func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1392,12 +1431,15 @@ func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs NotSubset(a.t, list, subset, msgAndArgs...) } -// NotSubsetf asserts that the specified list(array, slice...) or map does NOT -// contain all elements given in the specified subset list(array, slice...) or -// map. +// NotSubsetf asserts that the list (array, slice, or map) does NOT contain all +// elements given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.NotSubsetf([1, 3, 4], [1, 2], "error message %s", "formatted") // a.NotSubsetf({"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted") +// a.NotSubsetf([1, 3, 4], {1: "one", 2: "two"}, "error message %s", "formatted") +// a.NotSubsetf({"x": 1, "y": 2}, ["z"], "error message %s", "formatted") func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1557,11 +1599,15 @@ func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, Samef(a.t, expected, actual, msg, args...) } -// Subset asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subset asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.Subset([1, 2, 3], [1, 2]) // a.Subset({"x": 1, "y": 2}, {"x": 1}) +// a.Subset([1, 2, 3], {1: "one", 2: "two"}) +// a.Subset({"x": 1, "y": 2}, ["x"]) func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1569,11 +1615,15 @@ func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ... Subset(a.t, list, subset, msgAndArgs...) } -// Subsetf asserts that the specified list(array, slice...) or map contains all -// elements given in the specified subset list(array, slice...) or map. +// Subsetf asserts that the list (array, slice, or map) contains all elements +// given in the subset (array, slice, or map). +// Map elements are key-value pairs unless compared with an array or slice where +// only the map key is evaluated. // // a.Subsetf([1, 2, 3], [1, 2], "error message %s", "formatted") // a.Subsetf({"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted") +// a.Subsetf([1, 2, 3], {1: "one", 2: "two"}, "error message %s", "formatted") +// a.Subsetf({"x": 1, "y": 2}, ["x"], "error message %s", "formatted") func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() diff --git a/vendor/modules.txt b/vendor/modules.txt index 557205dda2..dc5f9f3c69 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -489,7 +489,7 @@ github.com/sirupsen/logrus # github.com/spf13/pflag v1.0.6 ## explicit; go 1.12 github.com/spf13/pflag -# github.com/stretchr/testify v1.10.0 +# github.com/stretchr/testify v1.11.1 ## explicit; go 1.17 github.com/stretchr/testify/assert github.com/stretchr/testify/assert/yaml