refactor(yaml): upgrade from gopkg.in/yaml.v2 to v3
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
		
							parent
							
								
									867bef0f03
								
							
						
					
					
						commit
						f7f04e7c8a
					
				| 
						 | 
					@ -570,18 +570,17 @@ Helmfile uses some OS environment variables to override default behaviour:
 | 
				
			||||||
* `HELMFILE_ENVIRONMENT` - specify [Helmfile environment](https://helmfile.readthedocs.io/en/latest/#environment), it has lower priority than CLI argument `--environment`
 | 
					* `HELMFILE_ENVIRONMENT` - specify [Helmfile environment](https://helmfile.readthedocs.io/en/latest/#environment), it has lower priority than CLI argument `--environment`
 | 
				
			||||||
* `HELMFILE_TEMPDIR` - specify directory to store temporary files
 | 
					* `HELMFILE_TEMPDIR` - specify directory to store temporary files
 | 
				
			||||||
* `HELMFILE_UPGRADE_NOTICE_DISABLED` - expecting any non-empty value to skip the check for the latest version of Helmfile in [helmfile version](https://helmfile.readthedocs.io/en/latest/#version)
 | 
					* `HELMFILE_UPGRADE_NOTICE_DISABLED` - expecting any non-empty value to skip the check for the latest version of Helmfile in [helmfile version](https://helmfile.readthedocs.io/en/latest/#version)
 | 
				
			||||||
* `HELMFILE_GOCCY_GOYAML` - use *goccy/go-yaml* instead of *gopkg.in/yaml.v2*.  It's `false` by default in Helmfile v0.x and `true` by default for Helmfile v1.x.
 | 
					* `HELMFILE_GOCCY_GOYAML` - use *goccy/go-yaml* instead of *gopkg.in/yaml.v3*.  It's `false` by default in Helmfile until *goccy/go-yaml* is stable enough. 
 | 
				
			||||||
* `HELMFILE_CACHE_HOME` - specify directory to store cached files for remote operations
 | 
					* `HELMFILE_CACHE_HOME` - specify directory to store cached files for remote operations
 | 
				
			||||||
* `HELMFILE_FILE_PATH` - specify the path to the helmfile.yaml file
 | 
					* `HELMFILE_FILE_PATH` - specify the path to the helmfile.yaml file
 | 
				
			||||||
* `HELMFILE_INTERACTIVE` - enable interactive mode, expecting `true` lower case. The same as `--interactive` CLI flag
 | 
					* `HELMFILE_INTERACTIVE` - enable interactive mode, expecting `true` lower case. The same as `--interactive` CLI flag
 | 
				
			||||||
* `HELMFILE_ENABLE_GOCCY_GOYAML_JSON_STYLE`: - enable JSON style for *goccy/go-yaml* instead of *gopkg.in/yaml.v2*.  It's `false` by default in Helmfile. it will add quotes to string values.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## CLI Reference
 | 
					## CLI Reference
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
Declaratively deploy your Kubernetes manifests, Kustomize configs, and Charts as Helm releases in one shot
 | 
					Declaratively deploy your Kubernetes manifests, Kustomize configs, and Charts as Helm releases in one shot
 | 
				
			||||||
V1 mode = false
 | 
					V1 mode = false
 | 
				
			||||||
YAML library = gopkg.in/yaml.v2
 | 
					YAML library = gopkg.in/yaml.v3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Usage:
 | 
					Usage:
 | 
				
			||||||
  helmfile [command]
 | 
					  helmfile [command]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										4
									
								
								go.mod
								
								
								
								
							| 
						 | 
					@ -28,7 +28,7 @@ require (
 | 
				
			||||||
	go.uber.org/zap v1.27.0
 | 
						go.uber.org/zap v1.27.0
 | 
				
			||||||
	golang.org/x/sync v0.14.0
 | 
						golang.org/x/sync v0.14.0
 | 
				
			||||||
	golang.org/x/term v0.32.0
 | 
						golang.org/x/term v0.32.0
 | 
				
			||||||
	gopkg.in/yaml.v2 v2.4.0
 | 
						gopkg.in/yaml.v3 v3.0.1
 | 
				
			||||||
	helm.sh/helm/v3 v3.17.3
 | 
						helm.sh/helm/v3 v3.17.3
 | 
				
			||||||
	k8s.io/apimachinery v0.33.0
 | 
						k8s.io/apimachinery v0.33.0
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -307,7 +307,7 @@ require (
 | 
				
			||||||
	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
 | 
						gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
 | 
				
			||||||
	gopkg.in/gookit/color.v1 v1.1.6 // indirect
 | 
						gopkg.in/gookit/color.v1 v1.1.6 // indirect
 | 
				
			||||||
	gopkg.in/inf.v0 v0.9.1 // indirect
 | 
						gopkg.in/inf.v0 v0.9.1 // indirect
 | 
				
			||||||
	gopkg.in/yaml.v3 v3.0.1 // indirect
 | 
						gopkg.in/yaml.v2 v2.4.0 // indirect
 | 
				
			||||||
	k8s.io/api v0.33.0 // indirect
 | 
						k8s.io/api v0.33.0 // indirect
 | 
				
			||||||
	k8s.io/apiextensions-apiserver v0.32.2 // indirect
 | 
						k8s.io/apiextensions-apiserver v0.32.2 // indirect
 | 
				
			||||||
	k8s.io/cli-runtime v0.32.2 // indirect
 | 
						k8s.io/cli-runtime v0.32.2 // indirect
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -423,7 +423,7 @@ releases:
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Run("fail due to unknown field with gopkg.in/yaml.v2", func(t *testing.T) {
 | 
						t.Run("fail due to unknown field with gopkg.in/yaml.v3", func(t *testing.T) {
 | 
				
			||||||
		check(t, testcase{
 | 
							check(t, testcase{
 | 
				
			||||||
			goccyGoYaml: false,
 | 
								goccyGoYaml: false,
 | 
				
			||||||
			error: `in ./helmfile.yaml: failed to read helmfile.yaml: reading document at index 1. Started seeing this since Helmfile v1? Add the .gotmpl file extension: yaml: unmarshal errors:
 | 
								error: `in ./helmfile.yaml: failed to read helmfile.yaml: reading document at index 1. Started seeing this since Helmfile v1? Add the .gotmpl file extension: yaml: unmarshal errors:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4165,7 +4165,7 @@ func TestSetValuesTemplate(t *testing.T) {
 | 
				
			||||||
		testSetValuesTemplate(t, true)
 | 
							testSetValuesTemplate(t, true)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Run("with gopkg.in/yaml.v2", func(t *testing.T) {
 | 
						t.Run("with gopkg.in/yaml.v3", func(t *testing.T) {
 | 
				
			||||||
		testSetValuesTemplate(t, false)
 | 
							testSetValuesTemplate(t, false)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -4175,7 +4175,7 @@ func TestSetStringValuesTemplate(t *testing.T) {
 | 
				
			||||||
		testSetStringValuesTemplate(t, true)
 | 
							testSetStringValuesTemplate(t, true)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Run("with gopkg.in/yaml.v2", func(t *testing.T) {
 | 
						t.Run("with gopkg.in/yaml.v3", func(t *testing.T) {
 | 
				
			||||||
		testSetStringValuesTemplate(t, false)
 | 
							testSetStringValuesTemplate(t, false)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,5 +15,4 @@ const (
 | 
				
			||||||
	GoccyGoYaml           = "HELMFILE_GOCCY_GOYAML"
 | 
						GoccyGoYaml           = "HELMFILE_GOCCY_GOYAML"
 | 
				
			||||||
	CacheHome             = "HELMFILE_CACHE_HOME"
 | 
						CacheHome             = "HELMFILE_CACHE_HOME"
 | 
				
			||||||
	Interactive           = "HELMFILE_INTERACTIVE"
 | 
						Interactive           = "HELMFILE_INTERACTIVE"
 | 
				
			||||||
	EnableGoccyGoYamlJSONStyle = "HELMFILE_ENABLE_GOCCY_GOYAML_JSON_STYLE"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,13 +9,13 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// GoccyGoYaml is set to true in order to let Helmfile use
 | 
						// GoccyGoYaml is set to true in order to let Helmfile use
 | 
				
			||||||
	// goccy/go-yaml instead of gopkg.in/yaml.v2.
 | 
						// goccy/go-yaml instead of gopkg.in/yaml.v3.
 | 
				
			||||||
	// It's false by default in Helmfile v0.x and true by default for Helmfile v1.x.
 | 
						// It's false by default in Helmfile until the GoccyGoYaml is ready to be used
 | 
				
			||||||
	GoccyGoYaml bool
 | 
						GoccyGoYaml bool
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Info() string {
 | 
					func Info() string {
 | 
				
			||||||
	yamlLib := "gopkg.in/yaml.v2"
 | 
						yamlLib := "gopkg.in/yaml.v3"
 | 
				
			||||||
	if GoccyGoYaml {
 | 
						if GoccyGoYaml {
 | 
				
			||||||
		yamlLib = "goccy/go-yaml"
 | 
							yamlLib = "goccy/go-yaml"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,6 @@ func init() {
 | 
				
			||||||
	case "false":
 | 
						case "false":
 | 
				
			||||||
		GoccyGoYaml = false
 | 
							GoccyGoYaml = false
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		GoccyGoYaml = true
 | 
							GoccyGoYaml = false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,14 +4,12 @@ import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/fs"
 | 
						"io/fs"
 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	goruntime "runtime"
 | 
						goruntime "runtime"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/stretchr/testify/require"
 | 
						"github.com/stretchr/testify/require"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/helmfile/helmfile/pkg/envvar"
 | 
					 | 
				
			||||||
	"github.com/helmfile/helmfile/pkg/filesystem"
 | 
						"github.com/helmfile/helmfile/pkg/filesystem"
 | 
				
			||||||
	"github.com/helmfile/helmfile/pkg/runtime"
 | 
						"github.com/helmfile/helmfile/pkg/runtime"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -193,12 +191,10 @@ func TestToYaml(t *testing.T) {
 | 
				
			||||||
		input    any
 | 
							input    any
 | 
				
			||||||
		expected string
 | 
							expected string
 | 
				
			||||||
		wantErr  bool
 | 
							wantErr  bool
 | 
				
			||||||
		enableJsonStyle bool
 | 
					 | 
				
			||||||
	}{
 | 
						}{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// https://github.com/helmfile/helmfile/issues/2024
 | 
								// https://github.com/helmfile/helmfile/issues/2024
 | 
				
			||||||
			name:  "test unmarshalling issue 2024",
 | 
								name:  "test unmarshalling issue 2024",
 | 
				
			||||||
			enableJsonStyle: true,
 | 
					 | 
				
			||||||
			input: map[string]any{"thisShouldBeString": "01234567890123456789"},
 | 
								input: map[string]any{"thisShouldBeString": "01234567890123456789"},
 | 
				
			||||||
			expected: `'thisShouldBeString': '01234567890123456789'
 | 
								expected: `'thisShouldBeString': '01234567890123456789'
 | 
				
			||||||
`,
 | 
					`,
 | 
				
			||||||
| 
						 | 
					@ -247,12 +243,6 @@ func TestToYaml(t *testing.T) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, tt := range tests {
 | 
						for _, tt := range tests {
 | 
				
			||||||
		t.Run(tt.name, func(t *testing.T) {
 | 
							t.Run(tt.name, func(t *testing.T) {
 | 
				
			||||||
			if tt.enableJsonStyle {
 | 
					 | 
				
			||||||
				_ = os.Setenv(envvar.EnableGoccyGoYamlJSONStyle, "true")
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			defer func() {
 | 
					 | 
				
			||||||
				_ = os.Unsetenv(envvar.EnableGoccyGoYamlJSONStyle)
 | 
					 | 
				
			||||||
			}()
 | 
					 | 
				
			||||||
			actual, err := ToYaml(tt.input)
 | 
								actual, err := ToYaml(tt.input)
 | 
				
			||||||
			if tt.wantErr {
 | 
								if tt.wantErr {
 | 
				
			||||||
				require.Error(t, err)
 | 
									require.Error(t, err)
 | 
				
			||||||
| 
						 | 
					@ -372,7 +362,7 @@ func TestFromYaml(t *testing.T) {
 | 
				
			||||||
		testFromYaml(t, true)
 | 
							testFromYaml(t, true)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Run("with gopkg.in/yaml.v2", func(t *testing.T) {
 | 
						t.Run("with gopkg.in/yaml.v3", func(t *testing.T) {
 | 
				
			||||||
		testFromYaml(t, false)
 | 
							testFromYaml(t, false)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,12 +3,10 @@ package yaml
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/goccy/go-yaml"
 | 
						"github.com/goccy/go-yaml"
 | 
				
			||||||
	v2 "gopkg.in/yaml.v2"
 | 
						v3 "gopkg.in/yaml.v3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/helmfile/helmfile/pkg/envvar"
 | 
					 | 
				
			||||||
	"github.com/helmfile/helmfile/pkg/runtime"
 | 
						"github.com/helmfile/helmfile/pkg/runtime"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,15 +18,10 @@ type Encoder interface {
 | 
				
			||||||
// NewEncoder creates and returns a function that is used to encode a Go object to a YAML document
 | 
					// NewEncoder creates and returns a function that is used to encode a Go object to a YAML document
 | 
				
			||||||
func NewEncoder(w io.Writer) Encoder {
 | 
					func NewEncoder(w io.Writer) Encoder {
 | 
				
			||||||
	if runtime.GoccyGoYaml {
 | 
						if runtime.GoccyGoYaml {
 | 
				
			||||||
		yamlEncoderOpts := []yaml.EncodeOption{}
 | 
							return yaml.NewEncoder(w)
 | 
				
			||||||
		// enable JSON style if the envvar is set
 | 
					 | 
				
			||||||
		if os.Getenv(envvar.EnableGoccyGoYamlJSONStyle) == "true" {
 | 
					 | 
				
			||||||
			yamlEncoderOpts = append(yamlEncoderOpts, yaml.JSON(), yaml.Flow(false))
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return yaml.NewEncoder(w, yamlEncoderOpts...)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return v2.NewEncoder(w)
 | 
						return v3.NewEncoder(w)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Unmarshal(data []byte, v any) error {
 | 
					func Unmarshal(data []byte, v any) error {
 | 
				
			||||||
| 
						 | 
					@ -36,7 +29,7 @@ func Unmarshal(data []byte, v any) error {
 | 
				
			||||||
		return yaml.Unmarshal(data, v)
 | 
							return yaml.Unmarshal(data, v)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return v2.Unmarshal(data, v)
 | 
						return v3.Unmarshal(data, v)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewDecoder creates and returns a function that is used to decode a YAML document
 | 
					// NewDecoder creates and returns a function that is used to decode a YAML document
 | 
				
			||||||
| 
						 | 
					@ -62,8 +55,8 @@ func NewDecoder(data []byte, strict bool) func(any) error {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	decoder := v2.NewDecoder(bytes.NewReader(data))
 | 
						decoder := v3.NewDecoder(bytes.NewReader(data))
 | 
				
			||||||
	decoder.SetStrict(strict)
 | 
						decoder.KnownFields(strict)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return func(v any) error {
 | 
						return func(v any) error {
 | 
				
			||||||
		return decoder.Decode(v)
 | 
							return decoder.Decode(v)
 | 
				
			||||||
| 
						 | 
					@ -78,11 +71,6 @@ func Marshal(v any) ([]byte, error) {
 | 
				
			||||||
			yaml.UseSingleQuote(true),
 | 
								yaml.UseSingleQuote(true),
 | 
				
			||||||
			yaml.UseLiteralStyleIfMultiline(true),
 | 
								yaml.UseLiteralStyleIfMultiline(true),
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// enable JSON style if the envvar is set
 | 
					 | 
				
			||||||
		if os.Getenv(envvar.EnableGoccyGoYamlJSONStyle) == "true" {
 | 
					 | 
				
			||||||
			yamlEncoderOpts = append(yamlEncoderOpts, yaml.JSON(), yaml.Flow(false))
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		yamlEncoder := yaml.NewEncoder(
 | 
							yamlEncoder := yaml.NewEncoder(
 | 
				
			||||||
			&b,
 | 
								&b,
 | 
				
			||||||
			yamlEncoderOpts...,
 | 
								yamlEncoderOpts...,
 | 
				
			||||||
| 
						 | 
					@ -94,5 +82,5 @@ func Marshal(v any) ([]byte, error) {
 | 
				
			||||||
		return b.Bytes(), err
 | 
							return b.Bytes(), err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return v2.Marshal(v)
 | 
						return v3.Marshal(v)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@ func testYamlMarshal(t *testing.T, goccyGoYaml bool) {
 | 
				
			||||||
	if goccyGoYaml {
 | 
						if goccyGoYaml {
 | 
				
			||||||
		yamlLibraryName = "goccy/go-yaml"
 | 
							yamlLibraryName = "goccy/go-yaml"
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		yamlLibraryName = "gopkg.in/yaml.v2"
 | 
							yamlLibraryName = "gopkg.in/yaml.v3"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	v := runtime.GoccyGoYaml
 | 
						v := runtime.GoccyGoYaml
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ func testYamlMarshal(t *testing.T, goccyGoYaml bool) {
 | 
				
			||||||
			}},
 | 
								}},
 | 
				
			||||||
			expected: map[string]string{
 | 
								expected: map[string]string{
 | 
				
			||||||
				"goccy/go-yaml":    "name: John\ninfo:\n- age: 20\n  address: New York\n  annotation: 'on'\n",
 | 
									"goccy/go-yaml":    "name: John\ninfo:\n- age: 20\n  address: New York\n  annotation: 'on'\n",
 | 
				
			||||||
				"gopkg.in/yaml.v2": "name: John\ninfo:\n- age: 20\n  address: New York\n  annotation: \"on\"\n",
 | 
									"gopkg.in/yaml.v3": "name: John\ninfo:\n- age: 20\n  address: New York\n  annotation: \"on\"\n",
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -67,7 +67,7 @@ func TestYamlMarshal(t *testing.T) {
 | 
				
			||||||
		testYamlMarshal(t, true)
 | 
							testYamlMarshal(t, true)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Run("with gopkg.in/yaml.v2", func(t *testing.T) {
 | 
						t.Run("with gopkg.in/yaml.v3", func(t *testing.T) {
 | 
				
			||||||
		testYamlMarshal(t, false)
 | 
							testYamlMarshal(t, false)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ func TestHelmfileTemplateWithBuildCommand(t *testing.T) {
 | 
				
			||||||
		testHelmfileTemplateWithBuildCommand(t, true)
 | 
							testHelmfileTemplateWithBuildCommand(t, true)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Run("with gopkg.in/yaml.v2", func(t *testing.T) {
 | 
						t.Run("with gopkg.in/yaml.v3", func(t *testing.T) {
 | 
				
			||||||
		testHelmfileTemplateWithBuildCommand(t, false)
 | 
							testHelmfileTemplateWithBuildCommand(t, false)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue