From fbd87aafc54cd9c3e3d2595bbfef351c42f7a0c8 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Tue, 10 Oct 2023 11:23:39 +0200 Subject: [PATCH 01/13] Use shell.TestingTStreams in upgrade tests --- test/upgrade/installation/shell.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/upgrade/installation/shell.go b/test/upgrade/installation/shell.go index 273453cf151e..3124fbe67b55 100644 --- a/test/upgrade/installation/shell.go +++ b/test/upgrade/installation/shell.go @@ -18,8 +18,9 @@ package installation import ( "os" + "testing" - "knative.dev/hack/shell" + "knative.dev/pkg/test/shell" pkgupgrade "knative.dev/pkg/test/upgrade" ) @@ -36,19 +37,20 @@ func LatestRelease() pkgupgrade.Operation { func install(installName, shellFunc string) pkgupgrade.Operation { return pkgupgrade.NewOperation(installName, func(c pkgupgrade.Context) { c.Log.Info("Running shell function: ", shellFunc) - if err := callShellFunction(shellFunc); err != nil { + if err := callShellFunction(shellFunc, c.T); err != nil { c.T.Error(err) } }) } -func callShellFunction(funcName string) error { +func callShellFunction(funcName string, t *testing.T) error { loc, err := shell.NewProjectLocation("../../..") if err != nil { return err } exec := shell.NewExecutor(shell.ExecutorConfig{ ProjectLocation: loc, + Streams: shell.TestingTStreams(t), Environ: os.Environ(), }) fn := shell.Function{ From b42deeaf48c40700aee551182a6c45484bc75d9d Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Tue, 10 Oct 2023 11:32:59 +0200 Subject: [PATCH 02/13] TMP: Use mgencurs fork of knative.dev/pkg --- go.mod | 2 + .../knative.dev/hack/shell/LICENSE | 201 ------------------ .../{hack => pkg/test}/shell/executor.go | 33 ++- .../{hack => pkg/test}/shell/fail-example.sh | 0 .../{hack => pkg/test}/shell/prefixer.go | 0 .../{hack => pkg/test}/shell/project.go | 4 +- .../{hack => pkg/test}/shell/types.go | 14 +- vendor/modules.txt | 2 + 8 files changed, 48 insertions(+), 208 deletions(-) delete mode 100644 third_party/VENDOR-LICENSE/knative.dev/hack/shell/LICENSE rename vendor/knative.dev/{hack => pkg/test}/shell/executor.go (87%) rename vendor/knative.dev/{hack => pkg/test}/shell/fail-example.sh (100%) rename vendor/knative.dev/{hack => pkg/test}/shell/prefixer.go (100%) rename vendor/knative.dev/{hack => pkg/test}/shell/project.go (93%) rename vendor/knative.dev/{hack => pkg/test}/shell/types.go (90%) diff --git a/go.mod b/go.mod index 0b105069be46..207c4c27573f 100644 --- a/go.mod +++ b/go.mod @@ -153,3 +153,5 @@ require ( sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) + +replace knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231010091720-974d18ba37f9 diff --git a/third_party/VENDOR-LICENSE/knative.dev/hack/shell/LICENSE b/third_party/VENDOR-LICENSE/knative.dev/hack/shell/LICENSE deleted file mode 100644 index 261eeb9e9f8b..000000000000 --- a/third_party/VENDOR-LICENSE/knative.dev/hack/shell/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/knative.dev/hack/shell/executor.go b/vendor/knative.dev/pkg/test/shell/executor.go similarity index 87% rename from vendor/knative.dev/hack/shell/executor.go rename to vendor/knative.dev/pkg/test/shell/executor.go index 059631dd579e..04c76401c4d0 100644 --- a/vendor/knative.dev/hack/shell/executor.go +++ b/vendor/knative.dev/pkg/test/shell/executor.go @@ -17,11 +17,13 @@ limitations under the License. package shell import ( + "bytes" "errors" "fmt" "os" "os/exec" "strings" + "testing" "time" ) @@ -42,6 +44,15 @@ func NewExecutor(config ExecutorConfig) Executor { } } +// TestingTStreams returns Streams which writes to t.Log and marks +// the test as failed if anything is written to Streams.Err. +func TestingTStreams(t testing.TB) Streams { + return Streams{ + Out: testingWriter{t: t}, + Err: testingWriter{t: t, markFailed: true}, + } +} + // RunScript executes a shell script with args. func (s *streamingExecutor) RunScript(script Script, args ...string) error { err := validate(s.ExecutorConfig) @@ -149,10 +160,10 @@ func withTempScript(contents string, fn func(bin string) error) error { if err != nil { return err } - defer func() { - // clean up - _ = os.Remove(tmpfile.Name()) - }() + //defer func() { + // // clean up + // _ = os.Remove(tmpfile.Name()) + //}() return fn(tmpfile.Name()) } @@ -186,3 +197,17 @@ func quoteArgs(args []string) string { } return strings.Join(quoted, " ") } + +func (w testingWriter) Write(p []byte) (n int, err error) { + n = len(p) + + // Strip trailing newline because t.Log always adds one. + p = bytes.TrimRight(p, "\n") + + w.t.Logf("%s", p) + if w.markFailed { + w.t.Fail() + } + + return n, nil +} diff --git a/vendor/knative.dev/hack/shell/fail-example.sh b/vendor/knative.dev/pkg/test/shell/fail-example.sh similarity index 100% rename from vendor/knative.dev/hack/shell/fail-example.sh rename to vendor/knative.dev/pkg/test/shell/fail-example.sh diff --git a/vendor/knative.dev/hack/shell/prefixer.go b/vendor/knative.dev/pkg/test/shell/prefixer.go similarity index 100% rename from vendor/knative.dev/hack/shell/prefixer.go rename to vendor/knative.dev/pkg/test/shell/prefixer.go diff --git a/vendor/knative.dev/hack/shell/project.go b/vendor/knative.dev/pkg/test/shell/project.go similarity index 93% rename from vendor/knative.dev/hack/shell/project.go rename to vendor/knative.dev/pkg/test/shell/project.go index a6df6c4a665f..498cc3490373 100644 --- a/vendor/knative.dev/hack/shell/project.go +++ b/vendor/knative.dev/pkg/test/shell/project.go @@ -31,7 +31,7 @@ var ( // ErrCallerNotAllowed is raised when user tries to use this shell-out package // outside of allowed places. This package is deprecated from start and was // introduced to allow rewriting of shell code to Golang in small chunks. - ErrCallerNotAllowed = errors.New("don't try use knative.dev/hack/shell package outside of allowed places") + ErrCallerNotAllowed = errors.New("don't try use knative.dev/pkg/test/shell package outside of allowed places") ) // NewProjectLocation creates a ProjectLocation that is used to calculate @@ -68,7 +68,7 @@ type callerLocation struct { func isCallsiteAllowed(funcName string) error { validPaths := []string{ "knative.+/test/upgrade", - "knative(:?\\.dev/|-)hack/shell", + "knative(:?\\.dev/|-)pkg/test/shell", } for _, validPath := range validPaths { r := regexp.MustCompile(validPath) diff --git a/vendor/knative.dev/hack/shell/types.go b/vendor/knative.dev/pkg/test/shell/types.go similarity index 90% rename from vendor/knative.dev/hack/shell/types.go rename to vendor/knative.dev/pkg/test/shell/types.go index 8e34515206dd..58aa745e23e3 100644 --- a/vendor/knative.dev/hack/shell/types.go +++ b/vendor/knative.dev/pkg/test/shell/types.go @@ -16,7 +16,10 @@ limitations under the License. package shell -import "io" +import ( + "io" + "testing" +) // ProjectLocation represents a project location on a file system. type ProjectLocation interface { @@ -44,6 +47,15 @@ type ExecutorConfig struct { Environ []string } +// testingWriter writes to the given testing.TB. +type testingWriter struct { + t testing.TB + + // If true, the test will be marked as failed if this testingWriter is + // ever used. + markFailed bool +} + // StreamType represets either output or error stream. type StreamType int diff --git a/vendor/modules.txt b/vendor/modules.txt index e4fb0f5a66e5..d96a74660817 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1436,6 +1436,7 @@ knative.dev/pkg/test/logstream knative.dev/pkg/test/logstream/v2 knative.dev/pkg/test/migrate knative.dev/pkg/test/monitoring +knative.dev/pkg/test/shell knative.dev/pkg/test/spoof knative.dev/pkg/test/upgrade knative.dev/pkg/test/vegeta/pacers @@ -1470,3 +1471,4 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml +# knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231010091720-974d18ba37f9 From 5f7ef74b53ee6f07f3e43635394f7d822ee22c8f Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Tue, 10 Oct 2023 11:36:21 +0200 Subject: [PATCH 03/13] Induce error --- test/e2e-common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e-common.sh b/test/e2e-common.sh index 0f48e4cdc6f9..d537a2f46735 100644 --- a/test/e2e-common.sh +++ b/test/e2e-common.sh @@ -496,7 +496,7 @@ function install_head_reuse_ingress() { header "Installing Knative head release and reusing ingress" # Keep the existing ingress and do not upgrade it. The ingress upgrade # makes ongoing requests fail. - install HEAD latest-release \ + install-nonexistent HEAD latest-release \ || fail_test "Knative head release installation failed" } From 1091c5c02bb5e820fb9ba0e2ece3edfa494649c9 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Tue, 10 Oct 2023 12:01:02 +0200 Subject: [PATCH 04/13] Revert "Induce error" This reverts commit f5a5b50ad6d98902061b6b6a16c32fae89afeb4a. --- test/e2e-common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e-common.sh b/test/e2e-common.sh index d537a2f46735..0f48e4cdc6f9 100644 --- a/test/e2e-common.sh +++ b/test/e2e-common.sh @@ -496,7 +496,7 @@ function install_head_reuse_ingress() { header "Installing Knative head release and reusing ingress" # Keep the existing ingress and do not upgrade it. The ingress upgrade # makes ongoing requests fail. - install-nonexistent HEAD latest-release \ + install HEAD latest-release \ || fail_test "Knative head release installation failed" } From 7ac81f3c727b66645cde9fc566d56da6579d8106 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Wed, 11 Oct 2023 10:14:32 +0200 Subject: [PATCH 05/13] Update deps --- go.mod | 2 +- go.sum | 6 +++++ vendor/knative.dev/pkg/hack/update-codegen.sh | 2 +- vendor/knative.dev/pkg/test/shell/executor.go | 24 ++++++++----------- .../pkg/test/shell/fail-example.sh | 2 +- vendor/knative.dev/pkg/test/shell/prefixer.go | 2 +- vendor/knative.dev/pkg/test/shell/project.go | 2 +- vendor/knative.dev/pkg/test/shell/types.go | 16 ++++++------- vendor/modules.txt | 6 ++++- 9 files changed, 34 insertions(+), 28 deletions(-) diff --git a/go.mod b/go.mod index 207c4c27573f..3bff6bdc1c83 100644 --- a/go.mod +++ b/go.mod @@ -154,4 +154,4 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) -replace knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231010091720-974d18ba37f9 +replace knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231011073333-7e238a11a09e diff --git a/go.sum b/go.sum index a96dba270b40..b906eb3273eb 100644 --- a/go.sum +++ b/go.sum @@ -929,11 +929,17 @@ knative.dev/caching v0.0.0-20231012110827-8551914fdf65 h1:Uc8C/3ymQGO/JDLwiWojhf knative.dev/caching v0.0.0-20231012110827-8551914fdf65/go.mod h1:93dIqn2QXQP179R+gZKUFF7RaZFxJcL6ioXR04imKy0= knative.dev/hack v0.0.0-20231010131532-fc76874b28c6 h1:K9saPnpWTK1xH/Dpx1aE4CA+4GR7AXSxQthwLXEf+zM= knative.dev/hack v0.0.0-20231010131532-fc76874b28c6/go.mod h1:yk2OjGDsbEnQjfxdm0/HJKS2WqTLEFg/N6nUs6Rqx3Q= +<<<<<<< HEAD knative.dev/networking v0.0.0-20231012062439-c0863403c83b h1:yGtVPNHek3rmKb50k7G9fG/NuuC4FRzESVrWmPFU9AM= knative.dev/networking v0.0.0-20231012062439-c0863403c83b/go.mod h1:uEvP4spV82HGB8loxo8nH/LGmwsd9jUGWvDVC+tH4O4= knative.dev/pkg v0.0.0-20231012104454-9051a454f03f h1:flYmL48DIXsEw2wIEcDB69cw3Ju+aAlANUGmNrGitYs= knative.dev/pkg v0.0.0-20231012104454-9051a454f03f/go.mod h1:0HqD8pZppFF34znDJnN6fGzuFq9ulJnelX64ciHD+PE= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +======= +knative.dev/networking v0.0.0-20231010132642-13dbe2012208 h1:kmaGnpE58Fu+M9sxF+qxifEG+lzBeM/9cBvuXLWGtOY= +knative.dev/networking v0.0.0-20231010132642-13dbe2012208/go.mod h1:LAT8cu/PGOtik5ABZhhl6h45QrNRXj0uqlpIP0dmLnU= +pgregory.net/rapid v1.0.0 h1:iQaM2w5PZ6xvt6x7hbd7tiDS+nk7YPp5uCaEba+T/F4= +>>>>>>> c129b3284 (Update deps) rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/knative.dev/pkg/hack/update-codegen.sh b/vendor/knative.dev/pkg/hack/update-codegen.sh index 2fb36989fe16..3d0945344fc9 100644 --- a/vendor/knative.dev/pkg/hack/update-codegen.sh +++ b/vendor/knative.dev/pkg/hack/update-codegen.sh @@ -51,7 +51,7 @@ EXTERNAL_INFORMER_PKG="k8s.io/client-go/informers" \ k8s.io/api \ "${K8S_TYPES}" \ --go-header-file ${REPO_ROOT_DIR}/hack/boilerplate/boilerplate.go.txt \ - --force-genreconciler-kinds "Namespace,ConfigMap,Deployment,Secret,Service,Pod,CronJob,NetworkPolicy,Node,ValidatingWebhookConfiguration,MutatingWebhookConfiguration,ServiceAccount" + --force-genreconciler-kinds "Namespace,ConfigMap,Deployment,Secret,Pod,CronJob,NetworkPolicy,Node,ValidatingWebhookConfiguration,MutatingWebhookConfiguration,ServiceAccount" OUTPUT_PKG="knative.dev/pkg/client/injection/apiextensions" \ VERSIONED_CLIENTSET_PKG="k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" \ diff --git a/vendor/knative.dev/pkg/test/shell/executor.go b/vendor/knative.dev/pkg/test/shell/executor.go index 04c76401c4d0..bc2213f83fdc 100644 --- a/vendor/knative.dev/pkg/test/shell/executor.go +++ b/vendor/knative.dev/pkg/test/shell/executor.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -23,7 +23,6 @@ import ( "os" "os/exec" "strings" - "testing" "time" ) @@ -44,12 +43,12 @@ func NewExecutor(config ExecutorConfig) Executor { } } -// TestingTStreams returns Streams which writes to t.Log and marks -// the test as failed if anything is written to Streams.Err. -func TestingTStreams(t testing.TB) Streams { +// TestingTStreams returns Streams which writes to test log. +func TestingTStreams(t TestingT) Streams { + tWriter := testingWriter{t: t} return Streams{ - Out: testingWriter{t: t}, - Err: testingWriter{t: t, markFailed: true}, + Out: tWriter, + Err: tWriter, } } @@ -160,10 +159,10 @@ func withTempScript(contents string, fn func(bin string) error) error { if err != nil { return err } - //defer func() { - // // clean up - // _ = os.Remove(tmpfile.Name()) - //}() + defer func() { + // clean up + _ = os.Remove(tmpfile.Name()) + }() return fn(tmpfile.Name()) } @@ -205,9 +204,6 @@ func (w testingWriter) Write(p []byte) (n int, err error) { p = bytes.TrimRight(p, "\n") w.t.Logf("%s", p) - if w.markFailed { - w.t.Fail() - } return n, nil } diff --git a/vendor/knative.dev/pkg/test/shell/fail-example.sh b/vendor/knative.dev/pkg/test/shell/fail-example.sh index 551ce662a340..4815aef9de1a 100644 --- a/vendor/knative.dev/pkg/test/shell/fail-example.sh +++ b/vendor/knative.dev/pkg/test/shell/fail-example.sh @@ -6,7 +6,7 @@ # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vendor/knative.dev/pkg/test/shell/prefixer.go b/vendor/knative.dev/pkg/test/shell/prefixer.go index 273ee1cc4fff..f267c1e3b42f 100644 --- a/vendor/knative.dev/pkg/test/shell/prefixer.go +++ b/vendor/knative.dev/pkg/test/shell/prefixer.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vendor/knative.dev/pkg/test/shell/project.go b/vendor/knative.dev/pkg/test/shell/project.go index 498cc3490373..2d5ded547c70 100644 --- a/vendor/knative.dev/pkg/test/shell/project.go +++ b/vendor/knative.dev/pkg/test/shell/project.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vendor/knative.dev/pkg/test/shell/types.go b/vendor/knative.dev/pkg/test/shell/types.go index 58aa745e23e3..94a4a792d088 100644 --- a/vendor/knative.dev/pkg/test/shell/types.go +++ b/vendor/knative.dev/pkg/test/shell/types.go @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -18,7 +18,6 @@ package shell import ( "io" - "testing" ) // ProjectLocation represents a project location on a file system. @@ -47,13 +46,14 @@ type ExecutorConfig struct { Environ []string } -// testingWriter writes to the given testing.TB. -type testingWriter struct { - t testing.TB +// TestingT is used by testingWriter and allows passing testing.T. +type TestingT interface { + Logf(format string, args ...any) +} - // If true, the test will be marked as failed if this testingWriter is - // ever used. - markFailed bool +// testingWriter implements io.Writer and writes to given testing.T log. +type testingWriter struct { + t TestingT } // StreamType represets either output or error stream. diff --git a/vendor/modules.txt b/vendor/modules.txt index d96a74660817..ca7e894725ca 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1301,8 +1301,12 @@ knative.dev/caching/pkg/client/listers/caching/v1alpha1 # knative.dev/hack v0.0.0-20231010131532-fc76874b28c6 ## explicit; go 1.18 knative.dev/hack +<<<<<<< HEAD knative.dev/hack/shell # knative.dev/networking v0.0.0-20231012062439-c0863403c83b +======= +# knative.dev/networking v0.0.0-20231010132642-13dbe2012208 +>>>>>>> c129b3284 (Update deps) ## explicit; go 1.18 knative.dev/networking/config knative.dev/networking/pkg @@ -1471,4 +1475,4 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231010091720-974d18ba37f9 +# knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231011073333-7e238a11a09e From bf6022234d2f8f1c553a91b0182b14b40acd2c91 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Tue, 10 Oct 2023 11:36:21 +0200 Subject: [PATCH 06/13] Induce error --- test/e2e-common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e-common.sh b/test/e2e-common.sh index 0f48e4cdc6f9..d537a2f46735 100644 --- a/test/e2e-common.sh +++ b/test/e2e-common.sh @@ -496,7 +496,7 @@ function install_head_reuse_ingress() { header "Installing Knative head release and reusing ingress" # Keep the existing ingress and do not upgrade it. The ingress upgrade # makes ongoing requests fail. - install HEAD latest-release \ + install-nonexistent HEAD latest-release \ || fail_test "Knative head release installation failed" } From d443d7b29b23030b2bbbd9a7c361ce8e1df116f9 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Thu, 12 Oct 2023 08:51:50 +0200 Subject: [PATCH 07/13] Update deps --- go.mod | 2 +- .../pkg/test/{ => upgrade}/shell/executor.go | 25 +++--- .../test/{ => upgrade}/shell/fail-example.sh | 0 .../pkg/test/upgrade/shell/logstream.diff | 79 +++++++++++++++++++ .../pkg/test/{ => upgrade}/shell/prefixer.go | 0 .../pkg/test/{ => upgrade}/shell/project.go | 4 +- .../pkg/test/{ => upgrade}/shell/types.go | 5 +- vendor/modules.txt | 4 +- 8 files changed, 101 insertions(+), 18 deletions(-) rename vendor/knative.dev/pkg/test/{ => upgrade}/shell/executor.go (91%) rename vendor/knative.dev/pkg/test/{ => upgrade}/shell/fail-example.sh (100%) create mode 100644 vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff rename vendor/knative.dev/pkg/test/{ => upgrade}/shell/prefixer.go (100%) rename vendor/knative.dev/pkg/test/{ => upgrade}/shell/project.go (95%) rename vendor/knative.dev/pkg/test/{ => upgrade}/shell/types.go (93%) diff --git a/go.mod b/go.mod index 3bff6bdc1c83..2c6404b977d7 100644 --- a/go.mod +++ b/go.mod @@ -154,4 +154,4 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) -replace knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231011073333-7e238a11a09e +replace knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231012064552-b0c1be67cae4 diff --git a/vendor/knative.dev/pkg/test/shell/executor.go b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go similarity index 91% rename from vendor/knative.dev/pkg/test/shell/executor.go rename to vendor/knative.dev/pkg/test/upgrade/shell/executor.go index bc2213f83fdc..df5739586cd0 100644 --- a/vendor/knative.dev/pkg/test/shell/executor.go +++ b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go @@ -35,16 +35,23 @@ const ( // ErrNoProjectLocation is returned if user didnt provided the project location. var ErrNoProjectLocation = errors.New("project location isn't provided") -// NewExecutor creates a new executor from given config. -func NewExecutor(config ExecutorConfig) Executor { - configureDefaultValues(&config) +// NewExecutor creates a new executor. +func NewExecutor(t TestingT, loc ProjectLocation, opts ...Option) Executor { + config := &ExecutorConfig{ + ProjectLocation: loc, + Streams: testingTStreams(t), + } + for _, opt := range opts { + opt(config) + } + configureDefaultValues(config) return &streamingExecutor{ - ExecutorConfig: config, + ExecutorConfig: *config, } } -// TestingTStreams returns Streams which writes to test log. -func TestingTStreams(t TestingT) Streams { +// testingTStreams returns Streams which writes to test log. +func testingTStreams(t TestingT) Streams { tWriter := testingWriter{t: t} return Streams{ Out: tWriter, @@ -88,12 +95,6 @@ func validate(config ExecutorConfig) error { } func configureDefaultValues(config *ExecutorConfig) { - if config.Out == nil { - config.Out = os.Stdout - } - if config.Err == nil { - config.Err = os.Stderr - } if config.LabelOut == "" { config.LabelOut = defaultLabelOut } diff --git a/vendor/knative.dev/pkg/test/shell/fail-example.sh b/vendor/knative.dev/pkg/test/upgrade/shell/fail-example.sh similarity index 100% rename from vendor/knative.dev/pkg/test/shell/fail-example.sh rename to vendor/knative.dev/pkg/test/upgrade/shell/fail-example.sh diff --git a/vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff b/vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff new file mode 100644 index 000000000000..76306f853421 --- /dev/null +++ b/vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff @@ -0,0 +1,79 @@ +diff --git a/test/shell/executor.go b/test/shell/executor.go +index f347321a..03da568d 100644 +--- a/test/shell/executor.go ++++ b/test/shell/executor.go +@@ -24,6 +24,8 @@ import ( + "os/exec" + "strings" + "time" ++ ++ "knative.dev/pkg/test/logging" + ) + + const ( +@@ -43,13 +45,12 @@ func NewExecutor(config ExecutorConfig) Executor { + } + } + +-// TestingTStreams returns Streams which writes to t.Log and marks +-// the test as failed if anything is written to Streams.Err. +-func TestingTStreams(t TestingT) Streams { +- tWriter := testingWriter{t: t} ++// LogStreams returns Streams which writes to given FormatLogger. ++func LogStreams(logFn logging.FormatLogger) Streams { ++ writer := logWriter{logf: logFn} + return Streams{ +- Out: tWriter, +- Err: tWriter, ++ Out: writer, ++ Err: writer, + } + } + +@@ -198,13 +199,13 @@ func quoteArgs(args []string) string { + return strings.Join(quoted, " ") + } + +-func (w testingWriter) Write(p []byte) (n int, err error) { ++func (w logWriter) Write(p []byte) (n int, err error) { + n = len(p) + + // Strip trailing newline because t.Log always adds one. + p = bytes.TrimRight(p, "\n") + +- w.t.Logf("%s", p) ++ w.logf("%s", p) + + return n, nil + } +diff --git a/test/shell/types.go b/test/shell/types.go +index fb6e2a19..2dda1996 100644 +--- a/test/shell/types.go ++++ b/test/shell/types.go +@@ -18,6 +18,8 @@ package shell + + import ( + "io" ++ ++ "knative.dev/pkg/test/logging" + ) + + // ProjectLocation represents a project location on a file system. +@@ -46,14 +48,9 @@ type ExecutorConfig struct { + Environ []string + } + +-// TestingT is used by testingWriter and allows passing testing.T. +-type TestingT interface { +- Logf(format string, args ...any) +-} +- +-// testingWriter writes to the given testing.TB. +-type testingWriter struct { +- t TestingT ++// logWriter implements io.Writer and writes to the given logf. ++type logWriter struct { ++ logf logging.FormatLogger + } + + // StreamType represets either output or error stream. diff --git a/vendor/knative.dev/pkg/test/shell/prefixer.go b/vendor/knative.dev/pkg/test/upgrade/shell/prefixer.go similarity index 100% rename from vendor/knative.dev/pkg/test/shell/prefixer.go rename to vendor/knative.dev/pkg/test/upgrade/shell/prefixer.go diff --git a/vendor/knative.dev/pkg/test/shell/project.go b/vendor/knative.dev/pkg/test/upgrade/shell/project.go similarity index 95% rename from vendor/knative.dev/pkg/test/shell/project.go rename to vendor/knative.dev/pkg/test/upgrade/shell/project.go index 2d5ded547c70..c58bc713c3cf 100644 --- a/vendor/knative.dev/pkg/test/shell/project.go +++ b/vendor/knative.dev/pkg/test/upgrade/shell/project.go @@ -31,7 +31,7 @@ var ( // ErrCallerNotAllowed is raised when user tries to use this shell-out package // outside of allowed places. This package is deprecated from start and was // introduced to allow rewriting of shell code to Golang in small chunks. - ErrCallerNotAllowed = errors.New("don't try use knative.dev/pkg/test/shell package outside of allowed places") + ErrCallerNotAllowed = errors.New("don't try use knative.dev/pkg/test/upgrade/shell package outside of allowed places") ) // NewProjectLocation creates a ProjectLocation that is used to calculate @@ -68,7 +68,7 @@ type callerLocation struct { func isCallsiteAllowed(funcName string) error { validPaths := []string{ "knative.+/test/upgrade", - "knative(:?\\.dev/|-)pkg/test/shell", + "knative(:?\\.dev/|-)pkg/test/upgrade/shell", } for _, validPath := range validPaths { r := regexp.MustCompile(validPath) diff --git a/vendor/knative.dev/pkg/test/shell/types.go b/vendor/knative.dev/pkg/test/upgrade/shell/types.go similarity index 93% rename from vendor/knative.dev/pkg/test/shell/types.go rename to vendor/knative.dev/pkg/test/upgrade/shell/types.go index 94a4a792d088..14bbbac05a89 100644 --- a/vendor/knative.dev/pkg/test/shell/types.go +++ b/vendor/knative.dev/pkg/test/upgrade/shell/types.go @@ -20,6 +20,9 @@ import ( "io" ) +// Option overrides configuration options in ExecutorConfig. +type Option func(*ExecutorConfig) + // ProjectLocation represents a project location on a file system. type ProjectLocation interface { RootPath() string @@ -38,7 +41,7 @@ type Function struct { FunctionName string } -// ExecutorConfig holds a executor configuration options. +// ExecutorConfig holds executor configuration options. type ExecutorConfig struct { ProjectLocation Streams diff --git a/vendor/modules.txt b/vendor/modules.txt index ca7e894725ca..25f0303adae4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1440,9 +1440,9 @@ knative.dev/pkg/test/logstream knative.dev/pkg/test/logstream/v2 knative.dev/pkg/test/migrate knative.dev/pkg/test/monitoring -knative.dev/pkg/test/shell knative.dev/pkg/test/spoof knative.dev/pkg/test/upgrade +knative.dev/pkg/test/upgrade/shell knative.dev/pkg/test/vegeta/pacers knative.dev/pkg/test/zipkin knative.dev/pkg/tracing @@ -1475,4 +1475,4 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231011073333-7e238a11a09e +# knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231012064552-b0c1be67cae4 From fb060f5ce98c1c0ac2d4f45a36d5e7df5ecf8609 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Thu, 12 Oct 2023 08:52:15 +0200 Subject: [PATCH 08/13] Update usage of shell.NewExecutor --- test/upgrade/installation/shell.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/test/upgrade/installation/shell.go b/test/upgrade/installation/shell.go index 3124fbe67b55..86b27845fb5f 100644 --- a/test/upgrade/installation/shell.go +++ b/test/upgrade/installation/shell.go @@ -17,11 +17,10 @@ limitations under the License. package installation import ( - "os" "testing" - "knative.dev/pkg/test/shell" pkgupgrade "knative.dev/pkg/test/upgrade" + "knative.dev/pkg/test/upgrade/shell" ) // Head installs Knative Serving from the HEAD of the default branch. @@ -48,11 +47,7 @@ func callShellFunction(funcName string, t *testing.T) error { if err != nil { return err } - exec := shell.NewExecutor(shell.ExecutorConfig{ - ProjectLocation: loc, - Streams: shell.TestingTStreams(t), - Environ: os.Environ(), - }) + exec := shell.NewExecutor(t, loc) fn := shell.Function{ Script: shell.Script{ Label: funcName, From cd5a16e26afb99006c8b5c23f6948de8a4abe732 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Mon, 16 Oct 2023 08:45:25 +0200 Subject: [PATCH 09/13] Update deps --- go.mod | 2 - go.sum | 5 -- vendor/knative.dev/pkg/hack/update-codegen.sh | 2 +- .../pkg/test/upgrade/shell/executor.go | 19 ----- .../pkg/test/upgrade/shell/logstream.diff | 79 ------------------- vendor/modules.txt | 1 - 6 files changed, 1 insertion(+), 107 deletions(-) delete mode 100644 vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff diff --git a/go.mod b/go.mod index 2c6404b977d7..0b105069be46 100644 --- a/go.mod +++ b/go.mod @@ -153,5 +153,3 @@ require ( sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) - -replace knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231012064552-b0c1be67cae4 diff --git a/go.sum b/go.sum index b906eb3273eb..e0a9422c6203 100644 --- a/go.sum +++ b/go.sum @@ -929,17 +929,12 @@ knative.dev/caching v0.0.0-20231012110827-8551914fdf65 h1:Uc8C/3ymQGO/JDLwiWojhf knative.dev/caching v0.0.0-20231012110827-8551914fdf65/go.mod h1:93dIqn2QXQP179R+gZKUFF7RaZFxJcL6ioXR04imKy0= knative.dev/hack v0.0.0-20231010131532-fc76874b28c6 h1:K9saPnpWTK1xH/Dpx1aE4CA+4GR7AXSxQthwLXEf+zM= knative.dev/hack v0.0.0-20231010131532-fc76874b28c6/go.mod h1:yk2OjGDsbEnQjfxdm0/HJKS2WqTLEFg/N6nUs6Rqx3Q= -<<<<<<< HEAD knative.dev/networking v0.0.0-20231012062439-c0863403c83b h1:yGtVPNHek3rmKb50k7G9fG/NuuC4FRzESVrWmPFU9AM= knative.dev/networking v0.0.0-20231012062439-c0863403c83b/go.mod h1:uEvP4spV82HGB8loxo8nH/LGmwsd9jUGWvDVC+tH4O4= knative.dev/pkg v0.0.0-20231012104454-9051a454f03f h1:flYmL48DIXsEw2wIEcDB69cw3Ju+aAlANUGmNrGitYs= knative.dev/pkg v0.0.0-20231012104454-9051a454f03f/go.mod h1:0HqD8pZppFF34znDJnN6fGzuFq9ulJnelX64ciHD+PE= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -======= -knative.dev/networking v0.0.0-20231010132642-13dbe2012208 h1:kmaGnpE58Fu+M9sxF+qxifEG+lzBeM/9cBvuXLWGtOY= -knative.dev/networking v0.0.0-20231010132642-13dbe2012208/go.mod h1:LAT8cu/PGOtik5ABZhhl6h45QrNRXj0uqlpIP0dmLnU= pgregory.net/rapid v1.0.0 h1:iQaM2w5PZ6xvt6x7hbd7tiDS+nk7YPp5uCaEba+T/F4= ->>>>>>> c129b3284 (Update deps) rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/knative.dev/pkg/hack/update-codegen.sh b/vendor/knative.dev/pkg/hack/update-codegen.sh index 3d0945344fc9..2fb36989fe16 100644 --- a/vendor/knative.dev/pkg/hack/update-codegen.sh +++ b/vendor/knative.dev/pkg/hack/update-codegen.sh @@ -51,7 +51,7 @@ EXTERNAL_INFORMER_PKG="k8s.io/client-go/informers" \ k8s.io/api \ "${K8S_TYPES}" \ --go-header-file ${REPO_ROOT_DIR}/hack/boilerplate/boilerplate.go.txt \ - --force-genreconciler-kinds "Namespace,ConfigMap,Deployment,Secret,Pod,CronJob,NetworkPolicy,Node,ValidatingWebhookConfiguration,MutatingWebhookConfiguration,ServiceAccount" + --force-genreconciler-kinds "Namespace,ConfigMap,Deployment,Secret,Service,Pod,CronJob,NetworkPolicy,Node,ValidatingWebhookConfiguration,MutatingWebhookConfiguration,ServiceAccount" OUTPUT_PKG="knative.dev/pkg/client/injection/apiextensions" \ VERSIONED_CLIENTSET_PKG="k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" \ diff --git a/vendor/knative.dev/pkg/test/upgrade/shell/executor.go b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go index df5739586cd0..d41ccc765a77 100644 --- a/vendor/knative.dev/pkg/test/upgrade/shell/executor.go +++ b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go @@ -18,7 +18,6 @@ package shell import ( "bytes" - "errors" "fmt" "os" "os/exec" @@ -32,9 +31,6 @@ const ( executeMode = 0700 ) -// ErrNoProjectLocation is returned if user didnt provided the project location. -var ErrNoProjectLocation = errors.New("project location isn't provided") - // NewExecutor creates a new executor. func NewExecutor(t TestingT, loc ProjectLocation, opts ...Option) Executor { config := &ExecutorConfig{ @@ -61,10 +57,6 @@ func testingTStreams(t TestingT) Streams { // RunScript executes a shell script with args. func (s *streamingExecutor) RunScript(script Script, args ...string) error { - err := validate(s.ExecutorConfig) - if err != nil { - return err - } cnt := script.scriptContent(s.ProjectLocation, args) return withTempScript(cnt, func(bin string) error { return stream(bin, s.ExecutorConfig, script.Label) @@ -73,10 +65,6 @@ func (s *streamingExecutor) RunScript(script Script, args ...string) error { // RunFunction executes a shell function with args. func (s *streamingExecutor) RunFunction(fn Function, args ...string) error { - err := validate(s.ExecutorConfig) - if err != nil { - return err - } cnt := fn.scriptContent(s.ProjectLocation, args) return withTempScript(cnt, func(bin string) error { return stream(bin, s.ExecutorConfig, fn.Label) @@ -87,13 +75,6 @@ type streamingExecutor struct { ExecutorConfig } -func validate(config ExecutorConfig) error { - if config.ProjectLocation == nil { - return ErrNoProjectLocation - } - return nil -} - func configureDefaultValues(config *ExecutorConfig) { if config.LabelOut == "" { config.LabelOut = defaultLabelOut diff --git a/vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff b/vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff deleted file mode 100644 index 76306f853421..000000000000 --- a/vendor/knative.dev/pkg/test/upgrade/shell/logstream.diff +++ /dev/null @@ -1,79 +0,0 @@ -diff --git a/test/shell/executor.go b/test/shell/executor.go -index f347321a..03da568d 100644 ---- a/test/shell/executor.go -+++ b/test/shell/executor.go -@@ -24,6 +24,8 @@ import ( - "os/exec" - "strings" - "time" -+ -+ "knative.dev/pkg/test/logging" - ) - - const ( -@@ -43,13 +45,12 @@ func NewExecutor(config ExecutorConfig) Executor { - } - } - --// TestingTStreams returns Streams which writes to t.Log and marks --// the test as failed if anything is written to Streams.Err. --func TestingTStreams(t TestingT) Streams { -- tWriter := testingWriter{t: t} -+// LogStreams returns Streams which writes to given FormatLogger. -+func LogStreams(logFn logging.FormatLogger) Streams { -+ writer := logWriter{logf: logFn} - return Streams{ -- Out: tWriter, -- Err: tWriter, -+ Out: writer, -+ Err: writer, - } - } - -@@ -198,13 +199,13 @@ func quoteArgs(args []string) string { - return strings.Join(quoted, " ") - } - --func (w testingWriter) Write(p []byte) (n int, err error) { -+func (w logWriter) Write(p []byte) (n int, err error) { - n = len(p) - - // Strip trailing newline because t.Log always adds one. - p = bytes.TrimRight(p, "\n") - -- w.t.Logf("%s", p) -+ w.logf("%s", p) - - return n, nil - } -diff --git a/test/shell/types.go b/test/shell/types.go -index fb6e2a19..2dda1996 100644 ---- a/test/shell/types.go -+++ b/test/shell/types.go -@@ -18,6 +18,8 @@ package shell - - import ( - "io" -+ -+ "knative.dev/pkg/test/logging" - ) - - // ProjectLocation represents a project location on a file system. -@@ -46,14 +48,9 @@ type ExecutorConfig struct { - Environ []string - } - --// TestingT is used by testingWriter and allows passing testing.T. --type TestingT interface { -- Logf(format string, args ...any) --} -- --// testingWriter writes to the given testing.TB. --type testingWriter struct { -- t TestingT -+// logWriter implements io.Writer and writes to the given logf. -+type logWriter struct { -+ logf logging.FormatLogger - } - - // StreamType represets either output or error stream. diff --git a/vendor/modules.txt b/vendor/modules.txt index 25f0303adae4..1e78430abbe5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1475,4 +1475,3 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# knative.dev/pkg => github.com/mgencur/pkg v0.0.0-20231012064552-b0c1be67cae4 From 52e151a41f5e290867ceed4073bb49a7fe9df60d Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Mon, 16 Oct 2023 08:49:00 +0200 Subject: [PATCH 10/13] Try printing each line separately --- vendor/knative.dev/pkg/test/upgrade/shell/executor.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vendor/knative.dev/pkg/test/upgrade/shell/executor.go b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go index d41ccc765a77..020f0d3eddf5 100644 --- a/vendor/knative.dev/pkg/test/upgrade/shell/executor.go +++ b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go @@ -185,7 +185,9 @@ func (w testingWriter) Write(p []byte) (n int, err error) { // Strip trailing newline because t.Log always adds one. p = bytes.TrimRight(p, "\n") - w.t.Logf("%s", p) + for _, line := range strings.Split(string(p), "\n") { + w.t.Logf(line) + } return n, nil } From 5722efccf3a0a400b458f488cba533e86a9c5261 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Mon, 16 Oct 2023 08:56:29 +0200 Subject: [PATCH 11/13] Update deps --- go.sum | 1 - vendor/modules.txt | 5 ----- 2 files changed, 6 deletions(-) diff --git a/go.sum b/go.sum index e0a9422c6203..a96dba270b40 100644 --- a/go.sum +++ b/go.sum @@ -934,7 +934,6 @@ knative.dev/networking v0.0.0-20231012062439-c0863403c83b/go.mod h1:uEvP4spV82HG knative.dev/pkg v0.0.0-20231012104454-9051a454f03f h1:flYmL48DIXsEw2wIEcDB69cw3Ju+aAlANUGmNrGitYs= knative.dev/pkg v0.0.0-20231012104454-9051a454f03f/go.mod h1:0HqD8pZppFF34znDJnN6fGzuFq9ulJnelX64ciHD+PE= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.0.0 h1:iQaM2w5PZ6xvt6x7hbd7tiDS+nk7YPp5uCaEba+T/F4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/modules.txt b/vendor/modules.txt index 1e78430abbe5..368dd22d4aac 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1301,12 +1301,7 @@ knative.dev/caching/pkg/client/listers/caching/v1alpha1 # knative.dev/hack v0.0.0-20231010131532-fc76874b28c6 ## explicit; go 1.18 knative.dev/hack -<<<<<<< HEAD -knative.dev/hack/shell # knative.dev/networking v0.0.0-20231012062439-c0863403c83b -======= -# knative.dev/networking v0.0.0-20231010132642-13dbe2012208 ->>>>>>> c129b3284 (Update deps) ## explicit; go 1.18 knative.dev/networking/config knative.dev/networking/pkg From f7f9b85b4ce3669ffb8c980446e2e3cd6ba434f4 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Mon, 16 Oct 2023 09:26:28 +0200 Subject: [PATCH 12/13] Revert "Try printing each line separately" This reverts commit 52e151a41f5e290867ceed4073bb49a7fe9df60d. --- vendor/knative.dev/pkg/test/upgrade/shell/executor.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/vendor/knative.dev/pkg/test/upgrade/shell/executor.go b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go index 020f0d3eddf5..d41ccc765a77 100644 --- a/vendor/knative.dev/pkg/test/upgrade/shell/executor.go +++ b/vendor/knative.dev/pkg/test/upgrade/shell/executor.go @@ -185,9 +185,7 @@ func (w testingWriter) Write(p []byte) (n int, err error) { // Strip trailing newline because t.Log always adds one. p = bytes.TrimRight(p, "\n") - for _, line := range strings.Split(string(p), "\n") { - w.t.Logf(line) - } + w.t.Logf("%s", p) return n, nil } From c12de81015eeea20a150816e95102c6e65843123 Mon Sep 17 00:00:00 2001 From: Martin Gencur Date: Mon, 16 Oct 2023 09:26:34 +0200 Subject: [PATCH 13/13] Revert "Induce error" This reverts commit bf6022234d2f8f1c553a91b0182b14b40acd2c91. --- test/e2e-common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e-common.sh b/test/e2e-common.sh index d537a2f46735..0f48e4cdc6f9 100644 --- a/test/e2e-common.sh +++ b/test/e2e-common.sh @@ -496,7 +496,7 @@ function install_head_reuse_ingress() { header "Installing Knative head release and reusing ingress" # Keep the existing ingress and do not upgrade it. The ingress upgrade # makes ongoing requests fail. - install-nonexistent HEAD latest-release \ + install HEAD latest-release \ || fail_test "Knative head release installation failed" }