mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
commit
eecb848dcb
35 changed files with 54 additions and 55 deletions
|
|
@ -274,7 +274,7 @@ Like any good open source project, we use Pull Requests (PRs) to track code chan
|
|||
|
||||
#### Documentation PRs
|
||||
|
||||
Documentation PRs should be made on the docs repo: <https://github.com/helm/helm-www>. Keeping Helm's documentation up to date is highly desirable, and it is recommend all user facing changes. Accurate and helpful documentation is critical for effectively communicating Helm's behavior to a wide audience.
|
||||
Documentation PRs should be made on the docs repo: <https://github.com/helm/helm-www>. Keeping Helm's documentation up to date is highly desirable, and is recommended for all user facing changes. Accurate and helpful documentation is critical for effectively communicating Helm's behavior to a wide audience.
|
||||
|
||||
Small, ad-hoc changes/PRs to Helm which introduce user facing changes, which would benefit from documentation changes, should apply the `docs needed` label. Larger changes associated with a HIP should track docs via that HIP. The `docs needed` label doesn't block PRs, and maintainers/PR reviewers should apply discretion judging in whether the `docs needed` label should be applied.
|
||||
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ func addPluginCommands(plugin *plugin.Plugin, baseCmd *cobra.Command, cmds *plug
|
|||
f.BoolP(longs[i], shorts[i], false, "")
|
||||
} else {
|
||||
// Create a long flag with the same name as the short flag.
|
||||
// Not a perfect solution, but its better than ignoring the extra short flags.
|
||||
// Not a perfect solution, but it's better than ignoring the extra short flags.
|
||||
f.BoolP(shorts[i], shorts[i], false, "")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@ func checkForExpiredRepos(repofile string) {
|
|||
}
|
||||
|
||||
// parse repo file.
|
||||
// Ignore the error because it is okay for a repo file to be unparseable at this
|
||||
// Ignore the error because it is okay for a repo file to be unparsable at this
|
||||
// stage. Later checks will trap the error and respond accordingly.
|
||||
repoFile, err := repo.LoadFile(repofile)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ func (o *searchRepoOptions) setupSearchedVersion() {
|
|||
if o.devel { // search for releases and prereleases (alpha, beta, and release candidate releases).
|
||||
debug("setting version to >0.0.0-0")
|
||||
o.version = ">0.0.0-0"
|
||||
} else { // search only for stable releases, prerelease versions will be skip
|
||||
} else { // search only for stable releases, prerelease versions will be skipped
|
||||
debug("setting version to >0.0.0")
|
||||
o.version = ">0.0.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ Note that the `common.service` template defines two parameters:
|
|||
- A template name containing the service definition overrides
|
||||
|
||||
A limitation of the Go template library is that a template can only take a
|
||||
single argument. The `list` function is used to workaround this by constructing
|
||||
single argument. The `list` function is used to work around this by constructing
|
||||
a list or array of arguments that is passed to the template.
|
||||
|
||||
The `common.service` template is responsible for rendering the templates with
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ Note that the `common.service` template defines two parameters:
|
|||
- A template name containing the service definition overrides
|
||||
|
||||
A limitation of the Go template library is that a template can only take a
|
||||
single argument. The `list` function is used to workaround this by constructing
|
||||
single argument. The `list` function is used to work around this by constructing
|
||||
a list or array of arguments that is passed to the template.
|
||||
|
||||
The `common.service` template is responsible for rendering the templates with
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ func (r *Resolver) Resolve(reqs []*chart.Dependency, repoNames map[string]string
|
|||
Repository: d.Repository,
|
||||
Version: version,
|
||||
}
|
||||
// The version are already sorted and hence the first one to satisfy the constraint is used
|
||||
// The versions are already sorted and hence the first one to satisfy the constraint is used
|
||||
for _, ver := range vs {
|
||||
v, err := semver.NewVersion(ver.Version)
|
||||
// OCI does not need URLs
|
||||
|
|
|
|||
2
internal/third_party/dep/fs/fs.go
vendored
2
internal/third_party/dep/fs/fs.go
vendored
|
|
@ -260,7 +260,7 @@ func fixLongPath(path string) string {
|
|||
// minus 12)." Since MAX_PATH is 260, 260 - 12 = 248.
|
||||
//
|
||||
// The MSDN docs appear to say that a normal path that is 248 bytes long
|
||||
// will work; empirically the path must be less then 248 bytes long.
|
||||
// will work; empirically the path must be less than 248 bytes long.
|
||||
if len(path) < 248 {
|
||||
// Don't fix. (This is how Go 1.7 and earlier worked,
|
||||
// not automatically generating the \\?\ form)
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ func CertPoolFromFile(filename string) (*x509.CertPool, error) {
|
|||
return cp, nil
|
||||
}
|
||||
|
||||
// CertFromFilePair returns an tls.Certificate containing the
|
||||
// CertFromFilePair returns a tls.Certificate containing the
|
||||
// certificates public/private key pair from a pair of given PEM-encoded files.
|
||||
// Returns an error if the file could not be read, a certificate could not
|
||||
// be parsed, or if the file does not contain any certificates
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ import (
|
|||
"helm.sh/helm/v3/pkg/storage/driver"
|
||||
)
|
||||
|
||||
// NOTESFILE_SUFFIX that we want to treat special. It goes through the templating engine
|
||||
// notesFileSuffix that we want to treat special. It goes through the templating engine
|
||||
// but it's not a yaml file (resource) hence can't have hooks, etc. And the user actually
|
||||
// wants to see this file after rendering in the status command. However, it must be a suffix
|
||||
// since there can be filepath in front of it.
|
||||
|
|
@ -307,7 +307,7 @@ func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals ma
|
|||
}
|
||||
|
||||
if driver.ContainsSystemLabels(i.Labels) {
|
||||
return nil, fmt.Errorf("user suplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels())
|
||||
return nil, fmt.Errorf("user supplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels())
|
||||
}
|
||||
|
||||
rel := i.createRelease(chrt, vals, i.Labels)
|
||||
|
|
@ -389,7 +389,7 @@ func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals ma
|
|||
}
|
||||
}
|
||||
|
||||
// If Replace is true, we need to supercede the last release.
|
||||
// If Replace is true, we need to supersede the last release.
|
||||
if i.Replace {
|
||||
if err := i.replaceRelease(rel); err != nil {
|
||||
return nil, err
|
||||
|
|
@ -631,7 +631,7 @@ func createOrOpenFile(filename string, append bool) (*os.File, error) {
|
|||
return os.Create(filename)
|
||||
}
|
||||
|
||||
// check if the directory exists to create file. creates if don't exists
|
||||
// check if the directory exists to create file. creates if doesn't exist
|
||||
func ensureDirectoryForFile(file string) error {
|
||||
baseDir := path.Dir(file)
|
||||
_, err := os.Stat(baseDir)
|
||||
|
|
|
|||
|
|
@ -469,8 +469,8 @@ func TestInstallRelease_Atomic(t *testing.T) {
|
|||
failer.WaitError = fmt.Errorf("I timed out")
|
||||
instAction.cfg.KubeClient = failer
|
||||
instAction.Atomic = true
|
||||
// disabling hooks to avoid an early fail when the
|
||||
// the WaitForDelete is called on the pre-delete hook execution
|
||||
// disabling hooks to avoid an early fail when
|
||||
// WaitForDelete is called on the pre-delete hook execution
|
||||
instAction.DisableHooks = true
|
||||
vals := map[string]interface{}{}
|
||||
|
||||
|
|
@ -479,7 +479,7 @@ func TestInstallRelease_Atomic(t *testing.T) {
|
|||
is.Contains(err.Error(), "I timed out")
|
||||
is.Contains(err.Error(), "atomic")
|
||||
|
||||
// Now make sure it isn't in storage any more
|
||||
// Now make sure it isn't in storage anymore
|
||||
_, err = instAction.cfg.Releases.Get(res.Name, res.Version)
|
||||
is.Error(err)
|
||||
is.Equal(err, driver.ErrReleaseNotFound)
|
||||
|
|
@ -522,7 +522,7 @@ func TestInstallRelease_Atomic_Interrupted(t *testing.T) {
|
|||
is.Contains(err.Error(), "atomic")
|
||||
is.Contains(err.Error(), "uninstalled")
|
||||
|
||||
// Now make sure it isn't in storage any more
|
||||
// Now make sure it isn't in storage anymore
|
||||
_, err = instAction.cfg.Releases.Get(res.Name, res.Version)
|
||||
is.Error(err)
|
||||
is.Equal(err, driver.ErrReleaseNotFound)
|
||||
|
|
@ -796,5 +796,5 @@ func TestInstallWithSystemLabels(t *testing.T) {
|
|||
t.Fatal("expected an error")
|
||||
}
|
||||
|
||||
is.Equal(fmt.Errorf("user suplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels()), err)
|
||||
is.Equal(fmt.Errorf("user supplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels()), err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ externalDatabase:
|
|||
## Database host
|
||||
host: localhost
|
||||
|
||||
## non-root Username for Wordpress Database
|
||||
## non-root Username for WordPress Database
|
||||
user: bn_wordpress
|
||||
|
||||
## Database password
|
||||
|
|
@ -102,7 +102,7 @@ mariadb:
|
|||
db:
|
||||
name: bitnami_wordpress
|
||||
user: bn_wordpress
|
||||
## If the password is not specified, mariadb will generates a random password
|
||||
## If the password is not specified, mariadb will generate a random password
|
||||
##
|
||||
# password:
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ readinessProbe:
|
|||
successThreshold: 1
|
||||
|
||||
## Configure the ingress resource that allows you to access the
|
||||
## Wordpress installation. Set up the URL
|
||||
## WordPress installation. Set up the URL
|
||||
## ref: http://kubernetes.io/docs/user-guide/ingress/
|
||||
##
|
||||
ingress:
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ func (u *Upgrade) prepareUpgrade(name string, chart *chart.Chart, vals map[strin
|
|||
}
|
||||
|
||||
if driver.ContainsSystemLabels(u.Labels) {
|
||||
return nil, nil, fmt.Errorf("user suplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels())
|
||||
return nil, nil, fmt.Errorf("user supplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels())
|
||||
}
|
||||
|
||||
// Store an upgraded release.
|
||||
|
|
|
|||
|
|
@ -533,7 +533,7 @@ func TestUpgradeRelease_SystemLabels(t *testing.T) {
|
|||
t.Fatal("expected an error")
|
||||
}
|
||||
|
||||
is.Equal(fmt.Errorf("user suplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels()), err)
|
||||
is.Equal(fmt.Errorf("user supplied labels contains system reserved label name. System labels: %+v", driver.GetSystemLabels()), err)
|
||||
}
|
||||
|
||||
func TestUpgradeRelease_DryRun(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ func ensureArchive(name string, raw *os.File) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// isGZipApplication checks whether the achieve is of the application/x-gzip type.
|
||||
// isGZipApplication checks whether the archive is of the application/x-gzip type.
|
||||
func isGZipApplication(data []byte) bool {
|
||||
sig := []byte("\x1F\x8B\x08")
|
||||
return bytes.HasPrefix(data, sig)
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ func processDependencyEnabled(c *chart.Chart, v map[string]interface{}, path str
|
|||
// If any dependency is not a part of Chart.yaml
|
||||
// then this should be added to chartDependencies.
|
||||
// However, if the dependency is already specified in Chart.yaml
|
||||
// we should not add it, as it would be anyways processed from Chart.yaml
|
||||
// we should not add it, as it would be processed from Chart.yaml anyway.
|
||||
|
||||
Loop:
|
||||
for _, existing := range c.Dependencies() {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ func TestExpand(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
// os.Stat can return different values for directories, based on the OS
|
||||
// for Linux, for example, os.Stat alwaty returns the size of the directory
|
||||
// for Linux, for example, os.Stat always returns the size of the directory
|
||||
// (value-4096) regardless of the size of the contents of the directory
|
||||
mode := expect.Mode()
|
||||
if !mode.IsDir() {
|
||||
|
|
@ -112,7 +112,7 @@ func TestExpandFile(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
// os.Stat can return different values for directories, based on the OS
|
||||
// for Linux, for example, os.Stat alwaty returns the size of the directory
|
||||
// for Linux, for example, os.Stat always returns the size of the directory
|
||||
// (value-4096) regardless of the size of the contents of the directory
|
||||
mode := expect.Mode()
|
||||
if !mode.IsDir() {
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ func (o Format) Write(out io.Writer, w Writer) error {
|
|||
}
|
||||
|
||||
// ParseFormat takes a raw string and returns the matching Format.
|
||||
// If the format does not exists, ErrInvalidFormatType is returned
|
||||
// If the format does not exist, ErrInvalidFormatType is returned
|
||||
func ParseFormat(s string) (out Format, err error) {
|
||||
switch s {
|
||||
case Table.String():
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ func (m *Manager) Update() error {
|
|||
// has some information about them and, when possible, the index files
|
||||
// locally.
|
||||
// TODO(mattfarina): Repositories should be explicitly added by end users
|
||||
// rather than automattic. In Helm v4 require users to add repositories. They
|
||||
// rather than automatic. In Helm v4 require users to add repositories. They
|
||||
// should have to add them in order to make sure they are aware of the
|
||||
// repositories and opt-in to any locations, for security.
|
||||
repoNames, err = m.ensureMissingRepos(repoNames, req)
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ func tplFun(parent *template.Template, includedNames map[string]int, strict bool
|
|||
})
|
||||
|
||||
// We need a .New template, as template text which is just blanks
|
||||
// or comments after parsing out defines just addes new named
|
||||
// or comments after parsing out defines just adds new named
|
||||
// template definitions without changing the main template.
|
||||
// https://pkg.go.dev/text/template#Template.Parse
|
||||
// Use the parent's name for lack of a better way to identify the tpl
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ func getAPIResourceForGVK(gvk schema.GroupVersionKind, config *rest.Config) (met
|
|||
return res, err
|
||||
}
|
||||
for _, resource := range resList.APIResources {
|
||||
// if a resource contains a "/" it's referencing a subresource. we don't support suberesource for now.
|
||||
// if a resource contains a "/" it's referencing a subresource. we don't support subresource for now.
|
||||
if resource.Kind == gvk.Kind && !strings.Contains(resource.Name, "/") {
|
||||
res = resource
|
||||
res.Group = gvk.Group
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ const (
|
|||
DataHomeEnvVar = "HELM_DATA_HOME"
|
||||
)
|
||||
|
||||
// lazypath is an lazy-loaded path buffer for the XDG base directory specification.
|
||||
// lazypath is a lazy-loaded path buffer for the XDG base directory specification.
|
||||
type lazypath string
|
||||
|
||||
func (l lazypath) path(helmEnvVar, xdgEnvVar string, defaultFn func() string, elem ...string) string {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ The formatting rules are as follows:
|
|||
|
||||
- Parsing is line-by-line
|
||||
- Empty lines are ignored
|
||||
- Lines the begin with # (comments) will be ignored
|
||||
- Lines that begin with # (comments) will be ignored
|
||||
- Leading and trailing spaces are always ignored
|
||||
- Inline comments are NOT supported ('foo* # Any foo' does not contain a comment)
|
||||
- There is no support for multi-line patterns
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ func (c *Client) getKubeClient() (*kubernetes.Clientset, error) {
|
|||
func (c *Client) IsReachable() error {
|
||||
client, err := c.getKubeClient()
|
||||
if err == genericclioptions.ErrEmptyConfig {
|
||||
// re-replace kubernetes ErrEmptyConfig error with a friendy error
|
||||
// re-replace kubernetes ErrEmptyConfig error with a friendly error
|
||||
// moar workarounds for Kubernetes API breaking.
|
||||
return errors.New("Kubernetes cluster unreachable")
|
||||
}
|
||||
|
|
@ -634,7 +634,7 @@ func createPatch(target *resource.Info, current runtime.Object) ([]byte, types.P
|
|||
// Get a versioned object
|
||||
versionedObject := AsVersioned(target)
|
||||
|
||||
// Unstructured objects, such as CRDs, may not have an not registered error
|
||||
// Unstructured objects, such as CRDs, may not have a not registered error
|
||||
// returned from ConvertToVersion. Anything that's unstructured should
|
||||
// use the jsonpatch.CreateMergePatch. Strategic Merge Patch is not supported
|
||||
// on objects like CRDs.
|
||||
|
|
|
|||
|
|
@ -426,7 +426,7 @@ func (c *ReadyChecker) statefulSetReady(sts *appsv1.StatefulSet) bool {
|
|||
return false
|
||||
}
|
||||
// This check only makes sense when all partitions are being upgraded otherwise during a
|
||||
// partioned rolling upgrade, this condition will never evaluate to true, leading to
|
||||
// partitioned rolling upgrade, this condition will never evaluate to true, leading to
|
||||
// error.
|
||||
if partition == 0 && sts.Status.CurrentRevision != sts.Status.UpdateRevision {
|
||||
c.log("StatefulSet is not ready: %s/%s. currentRevision %s does not yet match updateRevision %s", sts.Namespace, sts.Name, sts.Status.CurrentRevision, sts.Status.UpdateRevision)
|
||||
|
|
|
|||
|
|
@ -65,8 +65,7 @@ func GetTagMatchingVersionOrConstraint(tags []string, versionString string) (str
|
|||
// If string is empty, set wildcard constraint
|
||||
constraint, _ = semver.NewConstraint("*")
|
||||
} else {
|
||||
// when customer input exact version, check whether have exact match
|
||||
// one first
|
||||
// when customer inputs specific version, check whether there's an exact match first
|
||||
for _, v := range tags {
|
||||
if versionString == v {
|
||||
return v, nil
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@ const (
|
|||
StatusSuperseded Status = "superseded"
|
||||
// StatusFailed indicates that the release was not successfully deployed.
|
||||
StatusFailed Status = "failed"
|
||||
// StatusUninstalling indicates that a uninstall operation is underway.
|
||||
// StatusUninstalling indicates that an uninstall operation is underway.
|
||||
StatusUninstalling Status = "uninstalling"
|
||||
// StatusPendingInstall indicates that an install operation is underway.
|
||||
StatusPendingInstall Status = "pending-install"
|
||||
// StatusPendingUpgrade indicates that an upgrade operation is underway.
|
||||
StatusPendingUpgrade Status = "pending-upgrade"
|
||||
// StatusPendingRollback indicates that an rollback operation is underway.
|
||||
// StatusPendingRollback indicates that a rollback operation is underway.
|
||||
StatusPendingRollback Status = "pending-rollback"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ func TestFindChartInAuthAndTLSAndPassRepoURL(t *testing.T) {
|
|||
t.Errorf("%s is not the valid URL", chartURL)
|
||||
}
|
||||
|
||||
// If the insecureSkipTLsverify is false, it will return an error that contains "x509: certificate signed by unknown authority".
|
||||
// If the insecureSkipTLSVerify is false, it will return an error that contains "x509: certificate signed by unknown authority".
|
||||
_, err = FindChartInAuthAndTLSAndPassRepoURL(srv.URL, "", "", "nginx", "0.1.0", "", "", "", false, false, getter.All(&cli.EnvSettings{}))
|
||||
// Go communicates with the platform and different platforms return different messages. Go itself tests darwin
|
||||
// differently for its message. On newer versions of Darwin the message includes the "Acme Co" portion while older
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ func (i IndexFile) Get(name, version string) (*ChartVersion, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// when customer input exact version, check whether have exact match one first
|
||||
// when customer inputs specific version, check whether there's an exact match first
|
||||
if len(version) != 0 {
|
||||
for _, ver := range vs {
|
||||
if version == ver.Version {
|
||||
|
|
@ -397,7 +397,7 @@ func jsonOrYamlUnmarshal(b []byte, i interface{}) error {
|
|||
// the error isn't important for index loading
|
||||
//
|
||||
// In particular, charts may introduce validations that don't impact repository indexes
|
||||
// And repository indexes may be generated by older/non-complient software, which doesn't
|
||||
// And repository indexes may be generated by older/non-compliant software, which doesn't
|
||||
// conform to all validations.
|
||||
func ignoreSkippableChartValidationError(err error) error {
|
||||
verr, ok := err.(chart.ValidationError)
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ func (mock *MockConfigMapsInterface) Get(_ context.Context, name string, _ metav
|
|||
return object, nil
|
||||
}
|
||||
|
||||
// List returns the a of ConfigMaps.
|
||||
// List returns all ConfigMaps.
|
||||
func (mock *MockConfigMapsInterface) List(_ context.Context, opts metav1.ListOptions) (*v1.ConfigMapList, error) {
|
||||
var list v1.ConfigMapList
|
||||
|
||||
|
|
@ -206,7 +206,7 @@ func (mock *MockSecretsInterface) Get(_ context.Context, name string, _ metav1.G
|
|||
return object, nil
|
||||
}
|
||||
|
||||
// List returns the a of Secret.
|
||||
// List returns all Secrets.
|
||||
func (mock *MockSecretsInterface) List(_ context.Context, opts metav1.ListOptions) (*v1.SecretList, error) {
|
||||
var list v1.SecretList
|
||||
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ const (
|
|||
|
||||
// Following limits based on k8s labels limits - https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set
|
||||
const (
|
||||
sqlCustomLabelsTableKeyMaxLenght = 253 + 1 + 63
|
||||
sqlCustomLabelsTableValueMaxLenght = 63
|
||||
sqlCustomLabelsTableKeyMaxLength = 253 + 1 + 63
|
||||
sqlCustomLabelsTableValueMaxLength = 63
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -119,7 +119,7 @@ func (s *SQL) checkAlreadyApplied(migrations []*migrate.Migration) bool {
|
|||
}
|
||||
}
|
||||
|
||||
// check if all migrations appliyed
|
||||
// check if all migrations applied
|
||||
if len(migrationsIDs) != 0 {
|
||||
for id := range migrationsIDs {
|
||||
s.Log("checkAlreadyApplied: find unapplied migration (id: %v)", id)
|
||||
|
|
@ -204,7 +204,7 @@ func (s *SQL) ensureDBSetup() error {
|
|||
CREATE TABLE %s (
|
||||
%s VARCHAR(64),
|
||||
%s VARCHAR(67),
|
||||
%s VARCHAR(%d),
|
||||
%s VARCHAR(%d),
|
||||
%s VARCHAR(%d)
|
||||
);
|
||||
CREATE INDEX ON %s (%s, %s);
|
||||
|
|
@ -216,9 +216,9 @@ func (s *SQL) ensureDBSetup() error {
|
|||
sqlCustomLabelsTableReleaseKeyColumn,
|
||||
sqlCustomLabelsTableReleaseNamespaceColumn,
|
||||
sqlCustomLabelsTableKeyColumn,
|
||||
sqlCustomLabelsTableKeyMaxLenght,
|
||||
sqlCustomLabelsTableKeyMaxLength,
|
||||
sqlCustomLabelsTableValueColumn,
|
||||
sqlCustomLabelsTableValueMaxLenght,
|
||||
sqlCustomLabelsTableValueMaxLength,
|
||||
sqlCustomLabelsTableName,
|
||||
sqlCustomLabelsTableReleaseKeyColumn,
|
||||
sqlCustomLabelsTableReleaseNamespaceColumn,
|
||||
|
|
|
|||
|
|
@ -543,7 +543,7 @@ func mockGetReleaseCustomLabels(mock sqlmock.Sqlmock, key string, namespace stri
|
|||
eq.WillReturnRows(returnRows).RowsWillBeClosed()
|
||||
}
|
||||
|
||||
func TestSqlChechkAppliedMigrations(t *testing.T) {
|
||||
func TestSqlCheckAppliedMigrations(t *testing.T) {
|
||||
cases := []struct {
|
||||
migrationsToApply []*migrate.Migration
|
||||
appliedMigrationsIDs []string
|
||||
|
|
|
|||
|
|
@ -436,7 +436,7 @@ func (t *parser) listItem(list []interface{}, i, nestedNameLevel int) ([]interfa
|
|||
|
||||
// check for an empty value
|
||||
// read and consume optional spaces until comma or EOF (empty val) or any other char (not empty val)
|
||||
// comma and spaces are consumed, while any other char is not cosumed
|
||||
// comma and spaces are consumed, while any other char is not consumed
|
||||
func (t *parser) emptyVal() (bool, error) {
|
||||
for {
|
||||
r, _, e := t.sc.ReadRune()
|
||||
|
|
|
|||
|
|
@ -626,7 +626,7 @@ func TestParseJSON(t *testing.T) {
|
|||
},
|
||||
err: false,
|
||||
},
|
||||
{ // null assigment, and no value assigned (equivalent to null)
|
||||
{ // null assignment, and no value assigned (equivalent to null)
|
||||
input: "outer.inner1=,outer.inner3={\"aa\":\"1\",\"bb\":2,\"cc\":[1,2,3]},outer.inner3.cc[1]=null",
|
||||
got: map[string]interface{}{
|
||||
"outer": map[string]interface{}{
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
// Package time contains a wrapper for time.Time in the standard library and
|
||||
// associated methods. This package mainly exists to workaround an issue in Go
|
||||
// associated methods. This package mainly exists to work around an issue in Go
|
||||
// where the serializer doesn't omit an empty value for time:
|
||||
// https://github.com/golang/go/issues/11939. As such, this can be removed if a
|
||||
// proposal is ever accepted for Go
|
||||
|
|
|
|||
Loading…
Reference in a new issue