Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package chart-testing for openSUSE:Factory checked in at 2026-10-07 19:33:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chart-testing (Old) and /work/SRC/openSUSE:Factory/.chart-testing.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chart-testing" Wed Oct 7 19:33:46 2026 rev:14 rq:1382918 version:3.15.0 Changes: -------- --- /work/SRC/openSUSE:Factory/chart-testing/chart-testing.changes 2025-10-09 15:08:30.435695965 +0200 +++ /work/SRC/openSUSE:Factory/.chart-testing.new.3698736/chart-testing.changes 2026-10-07 19:34:13.598704279 +0200 @@ -1,0 +2,41 @@ +Wed Oct 07 05:17:48 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 3.15.0: + * build(deps): Bump helm.sh/helm/v3 from 3.18.6 to 3.19.2 in #785 + * build(deps): Bump alpine from 3.22 to 3.23 in the docker group + in #794 + * build(deps): Bump github.com/spf13/cobra from 1.10.1 to 1.10.2 + in the gomod group in #792 + * build(deps): Bump golangci/golangci-lint-action from 8.0.0 to + 9.2.0 in #798 + * build(deps): Bump helm.sh/helm/v3 from 3.19.2 to 3.19.4 in the + gomod group in #795 + * build(deps): Bump helm.sh/helm/v3 from 3.19.4 to 3.19.5 in the + gomod group in #803 + * build(deps): Bump helm.sh/helm/v3 from 3.19.5 to 3.20.1 in #823 + * build(deps): Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 + in #820 + * build(deps): Bump docker/login-action from 3.7.0 to 4.0.0 in + #821 + * build(deps): Bump docker/setup-buildx-action from 3.12.0 to + 4.0.0 in #818 + * build(deps): Bump goreleaser/goreleaser-action from 6.4.0 to + 7.0.0 in #822 + * build(deps): Bump the gomod group with 2 updates in #830 + * build(deps): Bump azure/setup-helm from 4.3.1 to 5.0.0 in #825 + * chore: bump to Go 1.26, harden release workflow, tidy code in + #835 + * build(deps): Bump helm.sh/helm/v3 from 3.20.2 to 3.21.0 in #836 + * build(deps): Bump github.com/mattn/go-shellwords from 1.0.13 to + 1.0.14 in the gomod group across 1 directory in #860 + * build(deps): Bump alpine from 3.23 to 3.24 in the docker group + across 1 directory in #843 + * fix: honor --release-name instead of generating a random + release name in #841 + * build(deps): Bump helm.sh/helm/v3 from 3.21.0 to 3.22.0 in #864 + * build(deps): Bump github.com/mattn/go-shellwords from 1.0.14 to + 1.0.15 in the gomod group in #862 + * build(deps): Bump github.com/mattn/go-shellwords from 1.0.15 to + 1.0.16 in the gomod group in #866 + +------------------------------------------------------------------- Old: ---- chart-testing-3.14.0.obscpio New: ---- chart-testing-3.15.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chart-testing.spec ++++++ --- /var/tmp/diff_new_pack.zWYAWb/_old 2026-10-07 19:34:15.197771616 +0200 +++ /var/tmp/diff_new_pack.zWYAWb/_new 2026-10-07 19:34:15.200771743 +0200 @@ -1,7 +1,7 @@ # # spec file for package chart-testing # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %define name_of_binary ct Name: chart-testing -Version: 3.14.0 +Version: 3.15.0 Release: 0 Summary: CLI tool for linting and testing Helm charts Group: Development/Languages/Other ++++++ _service ++++++ --- /var/tmp/diff_new_pack.zWYAWb/_old 2026-10-07 19:34:15.283775238 +0200 +++ /var/tmp/diff_new_pack.zWYAWb/_new 2026-10-07 19:34:15.294775701 +0200 @@ -1,9 +1,9 @@ <services> <service name="obs_scm" mode="manual"> - <param name="url">https://github.com/helm/chart-testing</param> + <param name="url">https://github.com/helm/chart-testing.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v3.14.0</param> + <param name="revision">refs/tags/v3.15.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.zWYAWb/_old 2026-10-07 19:34:15.351778101 +0200 +++ /var/tmp/diff_new_pack.zWYAWb/_new 2026-10-07 19:34:15.361778523 +0200 @@ -1,6 +1,8 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/helm/chart-testing</param> - <param name="changesrevision">2651b49048950c5473b1f533c900d17614bc6aa0</param></service></servicedata> + <param name="changesrevision">2651b49048950c5473b1f533c900d17614bc6aa0</param></service><service name="tar_scm"> + <param name="url">https://github.com/helm/chart-testing.git</param> + <param name="changesrevision">c65afcebd6649d48179fc8b30db34fa9b1459cce</param></service></servicedata> (No newline at EOF) ++++++ chart-testing-3.14.0.obscpio -> chart-testing-3.15.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/.goreleaser.yml new/chart-testing-3.15.0/.goreleaser.yml --- old/chart-testing-3.14.0/.goreleaser.yml 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/.goreleaser.yml 2026-10-06 10:27:25.000000000 +0200 @@ -58,7 +58,7 @@ - "quay.io/helmpack/chart-testing" tags: - "{{ .Tag }}" - - "latest" + - "{{ if not .Prerelease }}latest{{ end }}" labels: "org.opencontainers.image.version": "{{ .Version }}" "org.opencontainers.image.revision": "{{ .Commit }}" @@ -75,16 +75,18 @@ signs: - id: all - signature: "${artifact}.sig" - certificate: "${artifact}.pem" + signature: "${artifact}.sigstore.json" cmd: cosign - args: ["sign-blob", "--output-signature", "${artifact}.sig", "--output-certificate", "${artifact}.pem", "${artifact}"] + args: ["sign-blob", "--bundle=${signature}", "${artifact}", "--yes"] artifacts: all docker_signs: - id: images cmd: cosign - args: ["sign", "${artifact}"] + args: ["sign", "${artifact}@${digest}", "--yes"] + +release: + prerelease: auto changelog: use: github-native diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/Dockerfile new/chart-testing-3.15.0/Dockerfile --- old/chart-testing-3.14.0/Dockerfile 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/Dockerfile 2026-10-06 10:27:25.000000000 +0200 @@ -1,4 +1,4 @@ -FROM alpine:3.22 +FROM alpine:3.24 RUN apk --no-cache add \ bash \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/e2e-kind.sh new/chart-testing-3.15.0/e2e-kind.sh --- old/chart-testing-3.14.0/e2e-kind.sh 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/e2e-kind.sh 2026-10-06 10:27:25.000000000 +0200 @@ -7,11 +7,11 @@ CLUSTER_NAME=chart-testing readonly CLUSTER_NAME -K8S_VERSION=v1.22.9 +K8S_VERSION=v1.37.0@sha256:a1ed56cfb0e7b93589bdf97c8cd566405a265939e3620fc4f5de89adff580ae5 readonly K8S_VERSION create_kind_cluster() { - kind create cluster --name "$CLUSTER_NAME" --image "kindest/node:$K8S_VERSION" --wait 60s + kind create cluster --name "${CLUSTER_NAME}" --image "kindest/node:${K8S_VERSION}" --wait 60s kubectl cluster-info || kubectl cluster-info dump echo @@ -29,7 +29,7 @@ } cleanup() { - kind delete cluster --name "$CLUSTER_NAME" + kind delete cluster --name "${CLUSTER_NAME}" echo 'Done!' } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/go.mod new/chart-testing-3.15.0/go.mod --- old/chart-testing-3.14.0/go.mod 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/go.mod 2026-10-06 10:27:25.000000000 +0200 @@ -1,25 +1,24 @@ module github.com/helm/chart-testing/v3 -go 1.24.0 +go 1.27 require ( github.com/MakeNowJust/heredoc v1.0.0 github.com/Masterminds/semver v1.5.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-retryablehttp v0.7.8 - github.com/mattn/go-shellwords v1.0.12 + github.com/mattn/go-shellwords v1.0.16 github.com/mitchellh/go-homedir v1.1.0 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/spf13/viper v1.21.0 - github.com/stretchr/testify v1.11.1 + github.com/stretchr/testify v1.12.1 gopkg.in/yaml.v2 v2.4.0 - helm.sh/helm/v3 v3.18.6 + helm.sh/helm/v3 v3.22.0 ) require ( github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -27,17 +26,15 @@ github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.10.0 // indirect - github.com/stretchr/objx v0.5.2 // indirect + github.com/stretchr/objx v0.5.3 // indirect github.com/subosito/gotenv v1.6.0 // indirect - go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/text v0.41.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/go.sum new/chart-testing-3.15.0/go.sum --- old/chart-testing-3.14.0/go.sum 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/go.sum 2026-10-06 10:27:25.000000000 +0200 @@ -4,8 +4,6 @@ github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= @@ -14,8 +12,8 @@ github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -40,16 +38,14 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= -github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-shellwords v1.0.16 h1:RRxAaRzU1YbzOSCj9NJqg2/VIbSWv0dnPoD3EwE8kxI= +github.com/mattn/go-shellwords v1.0.16/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -62,31 +58,30 @@ github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -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/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -helm.sh/helm/v3 v3.18.6 h1:S/2CqcYnNfLckkHLI0VgQbxgcDaU3N4A/46E3n9wSNY= -helm.sh/helm/v3 v3.18.6/go.mod h1:L/dXDR2r539oPlFP1PJqKAC1CUgqHJDLkxKpDGrWnyg= +helm.sh/helm/v3 v3.22.0 h1:n1if5iQgHYsujPAcO5oonH/KiSNUmqmUF0iGVjSF3AU= +helm.sh/helm/v3 v3.22.0/go.mod h1:EVl/147Ai2z13JOykbO1Jn9HRaXyU7uHlbAJmODq/Fg= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/pkg/chart/chart.go new/chart-testing-3.15.0/pkg/chart/chart.go --- old/chart-testing-3.14.0/pkg/chart/chart.go 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/pkg/chart/chart.go 2026-10-06 10:27:25.000000000 +0200 @@ -19,6 +19,7 @@ "fmt" "os" "path/filepath" + "slices" "strings" "github.com/Masterminds/semver" @@ -144,7 +145,7 @@ // // RunCommand renders cmdTemplate as go template using data and executes the resulting command type CmdExecutor interface { - RunCommand(cmdTemplate string, data interface{}) error + RunCommand(cmdTemplate string, data any) error } // DirectoryLister is the interface @@ -206,24 +207,29 @@ } // CreateInstallParams generates a randomized release name and namespace based on the chart path -// and optional buildID. If release_name is specified, the release name is set to that string instead. +// and optional buildID. If releaseName is non-empty it is used verbatim as the release name +// (Helm validates release-name syntax); otherwise a randomized "<name>-<suffix>" form is used. // If a buildID is specified, it will be part of the generated namespace. func (c *Chart) CreateInstallParams(buildID string, releaseName string) (release string, namespace string) { release = filepath.Base(c.Path()) if release == "." || release == "/" { - if releaseName != "" { - release = releaseName - } else { - yaml := c.Yaml() - release = yaml.Name - } + yaml := c.Yaml() + release = yaml.Name } namespace = release if buildID != "" { namespace = fmt.Sprintf("%s-%s", namespace, buildID) } randomSuffix := util.RandomString(10) - release = util.SanitizeName(fmt.Sprintf("%s-%s", release, randomSuffix), maxNameLength) + if releaseName != "" { + // An explicit --release-name is used verbatim so the release name is + // stable and predictable. Previously it was honored only when the chart + // path resolved to "." or "/", and a random suffix was appended + // unconditionally, which made --release-name appear to be ignored (#198). + release = releaseName + } else { + release = util.SanitizeName(fmt.Sprintf("%s-%s", release, randomSuffix), maxNameLength) + } namespace = util.SanitizeName(fmt.Sprintf("%s-%s", namespace, randomSuffix), maxNameLength) return } @@ -253,12 +259,6 @@ loadRules func(string) (*helmignore.Rules, error) } -// TestResults holds results and overall status -type TestResults struct { - OverallSuccess bool - TestResults []TestResult -} - // TestResult holds test results for a specific chart type TestResult struct { Chart *Chart @@ -368,10 +368,7 @@ } } - testResults := TestResults{ - OverallSuccess: true, - TestResults: results, - } + overallSuccess := true // Checkout previous chart revisions and build their dependencies if t.config.Upgrade { @@ -410,11 +407,11 @@ result := action(chart) if result.Error != nil { - testResults.OverallSuccess = false + overallSuccess = false } results = append(results, result) } - if testResults.OverallSuccess { + if overallSuccess { return results, nil } @@ -764,7 +761,7 @@ changedChartFiles := map[string][]string{} for _, file := range allChangedChartFiles { pathElements := strings.SplitN(filepath.ToSlash(file), "/", 3) - if len(pathElements) < 2 || util.StringSliceContains(cfg.ExcludedCharts, pathElements[1]) { + if len(pathElements) < 2 || slices.Contains(cfg.ExcludedCharts, pathElements[1]) { continue } dir := filepath.Dir(file) @@ -774,7 +771,7 @@ if err == nil { if len(chartDirElement) > 1 { chartDirName := chartDirElement[len(chartDirElement)-1] - if util.StringSliceContains(cfg.ExcludedCharts, chartDirName) { + if slices.Contains(cfg.ExcludedCharts, chartDirName) { continue } } @@ -818,7 +815,7 @@ dirs, err := t.directoryLister.ListChildDirs(chartParentDir, func(dir string) bool { _, err := t.utils.LookupChartDir(cfg.ChartDirs, dir) - return err == nil && !util.StringSliceContains(cfg.ExcludedCharts, filepath.Base(dir)) + return err == nil && !slices.Contains(cfg.ExcludedCharts, filepath.Base(dir)) }) if err != nil { return nil, fmt.Errorf("failed reading chart directories: %w", err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/pkg/chart/chart_test.go new/chart-testing-3.15.0/pkg/chart/chart_test.go --- old/chart-testing-3.14.0/pkg/chart/chart_test.go 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/pkg/chart/chart_test.go 2026-10-06 10:27:25.000000000 +0200 @@ -569,3 +569,23 @@ }) } } + +func TestChart_CreateInstallParams(t *testing.T) { + chrt, err := NewChart("test_charts/simple-deployment") + assert.Nil(t, err) + + // An explicit release name (--release-name) must be used verbatim, with no + // random suffix appended, so the resulting release name is stable and + // predictable (#198). + release, namespace := chrt.CreateInstallParams("build-id", "my-release") + assert.Equal(t, "my-release", release) + // The namespace is still derived from the chart directory and randomized, + // independent of --release-name. + assert.True(t, strings.HasPrefix(namespace, "simple-deployment-build-id-")) + assert.NotEqual(t, "my-release", namespace) + + // Without a release name the release keeps its historical randomized form. + release, _ = chrt.CreateInstallParams("", "") + assert.True(t, strings.HasPrefix(release, "simple-deployment-")) + assert.NotEqual(t, "simple-deployment", release) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/pkg/config/config.go new/chart-testing-3.15.0/pkg/config/config.go --- old/chart-testing-3.14.0/pkg/config/config.go 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/pkg/config/config.go 2026-10-06 10:27:25.000000000 +0200 @@ -90,7 +90,7 @@ if flagName != "config" && flagName != "help" { if err := v.BindPFlag(flagName, flag); err != nil { // can't really happen - panic(fmt.Sprintf("failed binding flag %q: %v\n", flagName, err.Error())) + panic(fmt.Sprintf("failed binding flag %q: %v\n", flagName, err)) } } }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/pkg/config/config_test.go new/chart-testing-3.15.0/pkg/config/config_test.go --- old/chart-testing-3.14.0/pkg/config/config_test.go 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/pkg/config/config_test.go 2026-10-06 10:27:25.000000000 +0200 @@ -15,7 +15,6 @@ package config import ( - "os" "path/filepath" "testing" "time" @@ -34,6 +33,7 @@ } func loadAndAssertConfigFromFile(t *testing.T, configFile string) { + t.Helper() cfg, _ := LoadConfiguration(configFile, &cobra.Command{ Use: "install", }, true) @@ -43,25 +43,25 @@ require.Equal(t, "pr-42", cfg.BuildID) require.Equal(t, "my-lint-conf.yaml", cfg.LintConf) require.Equal(t, "my-chart-yaml-schema.yaml", cfg.ChartYamlSchema) - require.Equal(t, true, cfg.ValidateMaintainers) - require.Equal(t, true, cfg.ValidateChartSchema) - require.Equal(t, true, cfg.ValidateYaml) - require.Equal(t, true, cfg.CheckVersionIncrement) - require.Equal(t, false, cfg.ProcessAllCharts) + require.True(t, cfg.ValidateMaintainers) + require.True(t, cfg.ValidateChartSchema) + require.True(t, cfg.ValidateYaml) + require.True(t, cfg.CheckVersionIncrement) + require.False(t, cfg.ProcessAllCharts) require.Equal(t, []string{"incubator=https://incubator"}, cfg.ChartRepos) require.Equal(t, []string{"incubator=--username test"}, cfg.HelmRepoExtraArgs) require.Equal(t, []string{"stable", "incubator"}, cfg.ChartDirs) require.Equal(t, []string{"common"}, cfg.ExcludedCharts) require.Equal(t, "--timeout 300s", cfg.HelmExtraArgs) require.Equal(t, "--quiet", cfg.HelmLintExtraArgs) - require.Equal(t, true, cfg.Upgrade) - require.Equal(t, true, cfg.SkipMissingValues) + require.True(t, cfg.Upgrade) + require.True(t, cfg.SkipMissingValues) require.Equal(t, "default", cfg.Namespace) require.Equal(t, "release", cfg.ReleaseLabel) - require.Equal(t, true, cfg.ExcludeDeprecated) + require.True(t, cfg.ExcludeDeprecated) require.Equal(t, 120*time.Second, cfg.KubectlTimeout) - require.Equal(t, true, cfg.SkipCleanUp) - require.Equal(t, true, cfg.UseHelmignore) + require.True(t, cfg.SkipCleanUp) + require.True(t, cfg.UseHelmignore) } func Test_findConfigFile(t *testing.T) { @@ -96,13 +96,7 @@ for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if tt.envVar != "" { - err := os.Setenv("CT_CONFIG_DIR", tt.envVar) - require.NoError(t, err) - - t.Cleanup(func() { - err := os.Unsetenv("CT_CONFIG_DIR") - require.NoError(t, err) - }) + t.Setenv("CT_CONFIG_DIR", tt.envVar) } configSearchLocations = []string{tt.defaultDir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/pkg/tool/kubectl.go new/chart-testing-3.15.0/pkg/tool/kubectl.go --- old/chart-testing-3.14.0/pkg/tool/kubectl.go 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/pkg/tool/kubectl.go 2026-10-06 10:27:25.000000000 +0200 @@ -78,7 +78,7 @@ return err } - namespaceUpdate := map[string]interface{}{} + namespaceUpdate := map[string]any{} err = json.Unmarshal([]byte(cmdOutput), &namespaceUpdate) if err != nil { fmt.Println("Error in unmarshalling the payload:", err) @@ -103,7 +103,7 @@ } req.Header.Set("Content-Type", "application/json") - errMsg := "Error removing finalizer from namespace" + errMsg := "error removing finalizer from namespace" client := retryablehttp.NewClient() client.Logger = nil if resp, err := client.Do(req); err != nil { @@ -154,8 +154,7 @@ return err } - deployments := strings.Fields(output) - for _, deployment := range deployments { + for deployment := range strings.FieldsSeq(output) { deployment = strings.Trim(deployment, "'") err = k.exec.RunProcess("kubectl", fmt.Sprintf("--request-timeout=%s", k.timeout), @@ -188,15 +187,15 @@ jsonString, _ := k.exec.RunProcessAndCaptureStdout("kubectl", fmt.Sprintf("--request-timeout=%s", k.timeout), "get", "deployment", deployment, "--namespace", namespace, "--output=json") - var deploymentMap map[string]interface{} + var deploymentMap map[string]any err := json.Unmarshal([]byte(jsonString), &deploymentMap) if err != nil { return nil, err } - spec := deploymentMap["spec"].(map[string]interface{}) - selector := spec["selector"].(map[string]interface{}) - matchLabels := selector["matchLabels"].(map[string]interface{}) + spec := deploymentMap["spec"].(map[string]any) + selector := spec["selector"].(map[string]any) + matchLabels := selector["matchLabels"].(map[string]any) var ls string for name, value := range matchLabels { if ls != "" { @@ -209,7 +208,8 @@ } func (k Kubectl) GetPods(args ...string) ([]string, error) { - kubectlArgs := []string{"get", "pods"} + kubectlArgs := make([]string, 0, 2+len(args)) + kubectlArgs = append(kubectlArgs, "get", "pods") kubectlArgs = append(kubectlArgs, args...) pods, err := k.exec.RunProcessAndCaptureStdout("kubectl", fmt.Sprintf("--request-timeout=%s", k.timeout), kubectlArgs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/pkg/util/util.go new/chart-testing-3.15.0/pkg/util/util.go --- old/chart-testing-3.14.0/pkg/util/util.go 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/pkg/util/util.go 2026-10-06 10:27:25.000000000 +0200 @@ -25,7 +25,6 @@ "path/filepath" "regexp" "strings" - "time" "github.com/Masterminds/semver" "github.com/hashicorp/go-multierror" @@ -46,15 +45,11 @@ Maintainers []Maintainer } -func Flatten(items []interface{}) ([]string, error) { +func Flatten(items []any) ([]string, error) { return doFlatten([]string{}, items) } -func init() { - rand.New(rand.NewSource(time.Now().UnixNano())) // nolint: gosec -} - -func doFlatten(result []string, items interface{}) ([]string, error) { +func doFlatten(result []string, items any) ([]string, error) { var err error switch v := items.(type) { @@ -62,7 +57,7 @@ result = append(result, v) case []string: result = append(result, v...) - case []interface{}: + case []any: for _, item := range v { result, err = doFlatten(result, item) if err != nil { @@ -76,15 +71,6 @@ return result, err } -func StringSliceContains(slice []string, s string) bool { - for _, element := range slice { - if s == element { - return true - } - } - return false -} - func FileExists(file string) bool { if _, err := os.Stat(file); err != nil { return false @@ -243,10 +229,10 @@ func GetRandomPort() (int, error) { listener, err := net.Listen("tcp", ":0") // nolint: gosec - defer listener.Close() // nolint: staticcheck if err != nil { return 0, err } + defer listener.Close() // nolint: errcheck return listener.Addr().(*net.TCPAddr).Port, nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chart-testing-3.14.0/pkg/util/util_test.go new/chart-testing-3.15.0/pkg/util/util_test.go --- old/chart-testing-3.14.0/pkg/util/util_test.go 2025-10-08 16:10:04.000000000 +0200 +++ new/chart-testing-3.15.0/pkg/util/util_test.go 2026-10-06 10:27:25.000000000 +0200 @@ -24,13 +24,13 @@ func TestFlatten(t *testing.T) { var testDataSlice = []struct { - input []interface{} + input []any expected []string }{ - {[]interface{}{"foo", "bar", []string{"bla", "blubb"}}, []string{"foo", "bar", "bla", "blubb"}}, - {[]interface{}{"foo", "bar", "bla", "blubb"}, []string{"foo", "bar", "bla", "blubb"}}, - {[]interface{}{"foo", "bar", []interface{}{"bla", []string{"blubb"}}}, []string{"foo", "bar", "bla", "blubb"}}, - {[]interface{}{"foo", 42, []interface{}{"bla", []string{"blubb"}}}, nil}, + {[]any{"foo", "bar", []string{"bla", "blubb"}}, []string{"foo", "bar", "bla", "blubb"}}, + {[]any{"foo", "bar", "bla", "blubb"}, []string{"foo", "bar", "bla", "blubb"}}, + {[]any{"foo", "bar", []any{"bla", []string{"blubb"}}}, []string{"foo", "bar", "bla", "blubb"}}, + {[]any{"foo", 42, []any{"bla", []string{"blubb"}}}, nil}, } for index, testData := range testDataSlice { @@ -38,9 +38,9 @@ actual, err := Flatten(testData.input) assert.Equal(t, testData.expected, actual) if testData.expected != nil { - assert.Nil(t, err) + assert.NoError(t, err) } else { - assert.NotNil(t, err) + assert.Error(t, err) } }) } ++++++ chart-testing.obsinfo ++++++ --- /var/tmp/diff_new_pack.zWYAWb/_old 2026-10-07 19:34:15.646790524 +0200 +++ /var/tmp/diff_new_pack.zWYAWb/_new 2026-10-07 19:34:15.653790819 +0200 @@ -1,5 +1,5 @@ name: chart-testing -version: 3.14.0 -mtime: 1759932604 -commit: 2651b49048950c5473b1f533c900d17614bc6aa0 +version: 3.15.0 +mtime: 1791275245 +commit: c65afcebd6649d48179fc8b30db34fa9b1459cce ++++++ vendor.tar.gz ++++++ ++++ 83334 lines of diff (skipped)
