fix(tiller): fix TOML panic
This fixes a TOML panic by replacing one parser library with another. The older library did not gracefully handle reflection issues, and so was prone to panic. The new one is not great, but it doesn't seem to panic. Closes #2271
This commit is contained in:
parent
3a943696b7
commit
46035c35c4
|
@ -1,5 +1,5 @@
|
||||||
hash: e9366bddb36a7120a832959c89f72f75d56b9f10f84820420795c668d9cb0987
|
hash: 1933241d076be316f3ef64e587e5400c2c884ebaa68565339796c7803619c8a4
|
||||||
updated: 2017-04-27T14:23:27.66000871-06:00
|
updated: 2017-04-28T15:58:28.450420107-06:00
|
||||||
imports:
|
imports:
|
||||||
- name: bitbucket.org/ww/goautoneg
|
- name: bitbucket.org/ww/goautoneg
|
||||||
version: 75cd24fc2f2c2a2088577d12123ddee5f54e0675
|
version: 75cd24fc2f2c2a2088577d12123ddee5f54e0675
|
||||||
|
@ -20,6 +20,8 @@ imports:
|
||||||
version: 3ac7bf7a47d159a033b107610db8a1b6575507a4
|
version: 3ac7bf7a47d159a033b107610db8a1b6575507a4
|
||||||
subpackages:
|
subpackages:
|
||||||
- quantile
|
- quantile
|
||||||
|
- name: github.com/BurntSushi/toml
|
||||||
|
version: b26d9c308763d68093482582cea63d69be07a0f0
|
||||||
- name: github.com/chai2010/gettext-go
|
- name: github.com/chai2010/gettext-go
|
||||||
version: bf70f2a70fb1b1f36d90d671a72795984eab0fcb
|
version: bf70f2a70fb1b1f36d90d671a72795984eab0fcb
|
||||||
- name: github.com/coreos/go-oidc
|
- name: github.com/coreos/go-oidc
|
||||||
|
@ -169,7 +171,7 @@ imports:
|
||||||
- name: github.com/Masterminds/sprig
|
- name: github.com/Masterminds/sprig
|
||||||
version: 23597e5f6ad0e4d590e71314bfd0251a4a3cf849
|
version: 23597e5f6ad0e4d590e71314bfd0251a4a3cf849
|
||||||
- name: github.com/Masterminds/vcs
|
- name: github.com/Masterminds/vcs
|
||||||
version: 795e20f901c3d561de52811fb3488a2cb2c8588b
|
version: 3084677c2c188840777bff30054f2b553729d329
|
||||||
- name: github.com/mattn/go-runewidth
|
- name: github.com/mattn/go-runewidth
|
||||||
version: d6bea18f789704b5f83375793155289da36a3c7f
|
version: d6bea18f789704b5f83375793155289da36a3c7f
|
||||||
- name: github.com/matttproud/golang_protobuf_extensions
|
- name: github.com/matttproud/golang_protobuf_extensions
|
||||||
|
@ -180,10 +182,6 @@ imports:
|
||||||
version: ad45545899c7b13c020ea92b2072220eefad42b8
|
version: ad45545899c7b13c020ea92b2072220eefad42b8
|
||||||
- name: github.com/naoina/go-stringutil
|
- name: github.com/naoina/go-stringutil
|
||||||
version: 6b638e95a32d0c1131db0e7fe83775cbea4a0d0b
|
version: 6b638e95a32d0c1131db0e7fe83775cbea4a0d0b
|
||||||
- name: github.com/naoina/toml
|
|
||||||
version: 751171607256bb66e64c9f0220c00662420c38e9
|
|
||||||
subpackages:
|
|
||||||
- ast
|
|
||||||
- name: github.com/pborman/uuid
|
- name: github.com/pborman/uuid
|
||||||
version: ca53cad383cad2479bbba7f7a1a05797ec1386e4
|
version: ca53cad383cad2479bbba7f7a1a05797ec1386e4
|
||||||
- name: github.com/prometheus/client_golang
|
- name: github.com/prometheus/client_golang
|
||||||
|
|
|
@ -38,8 +38,8 @@ import:
|
||||||
version: ^0.2.1
|
version: ^0.2.1
|
||||||
- package: github.com/evanphx/json-patch
|
- package: github.com/evanphx/json-patch
|
||||||
- package: github.com/facebookgo/symwalk
|
- package: github.com/facebookgo/symwalk
|
||||||
- package: github.com/naoina/toml
|
- package: github.com/BurntSushi/toml
|
||||||
version: ~0.1.0
|
version: ~0.3.0
|
||||||
- package: github.com/naoina/go-stringutil
|
- package: github.com/naoina/go-stringutil
|
||||||
version: ~0.1.0
|
version: ~0.1.0
|
||||||
- package: github.com/chai2010/gettext-go
|
- package: github.com/chai2010/gettext-go
|
||||||
|
|
|
@ -16,6 +16,7 @@ limitations under the License.
|
||||||
package chartutil
|
package chartutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"path"
|
"path"
|
||||||
|
@ -23,9 +24,9 @@ import (
|
||||||
|
|
||||||
yaml "gopkg.in/yaml.v2"
|
yaml "gopkg.in/yaml.v2"
|
||||||
|
|
||||||
|
"github.com/BurntSushi/toml"
|
||||||
"github.com/gobwas/glob"
|
"github.com/gobwas/glob"
|
||||||
"github.com/golang/protobuf/ptypes/any"
|
"github.com/golang/protobuf/ptypes/any"
|
||||||
"github.com/naoina/toml"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Files is a map of files in a chart that can be accessed from a template.
|
// Files is a map of files in a chart that can be accessed from a template.
|
||||||
|
@ -197,12 +198,13 @@ func FromYaml(str string) map[string]interface{} {
|
||||||
//
|
//
|
||||||
// This is designed to be called from a template.
|
// This is designed to be called from a template.
|
||||||
func ToToml(v interface{}) string {
|
func ToToml(v interface{}) string {
|
||||||
data, err := toml.Marshal(v)
|
b := bytes.NewBuffer(nil)
|
||||||
|
e := toml.NewEncoder(b)
|
||||||
|
err := e.Encode(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Swallow errors inside of a template.
|
return err.Error()
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
return string(data)
|
return b.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToJson takes an interface, marshals it to json, and returns a string. It will
|
// ToJson takes an interface, marshals it to json, and returns a string. It will
|
||||||
|
|
|
@ -112,9 +112,9 @@ func TestToYaml(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestToToml(t *testing.T) {
|
func TestToToml(t *testing.T) {
|
||||||
expect := "foo=\"bar\"\n"
|
expect := "foo = \"bar\"\n"
|
||||||
v := struct {
|
v := struct {
|
||||||
Foo string `json:"foo"`
|
Foo string `toml:"foo"`
|
||||||
}{
|
}{
|
||||||
Foo: "bar",
|
Foo: "bar",
|
||||||
}
|
}
|
||||||
|
@ -122,6 +122,18 @@ func TestToToml(t *testing.T) {
|
||||||
if got := ToToml(v); got != expect {
|
if got := ToToml(v); got != expect {
|
||||||
t.Errorf("Expected %q, got %q", expect, got)
|
t.Errorf("Expected %q, got %q", expect, got)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Regression for https://github.com/kubernetes/helm/issues/2271
|
||||||
|
dict := map[string]map[string]string{
|
||||||
|
"mast": {
|
||||||
|
"sail": "white",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
got := ToToml(dict)
|
||||||
|
expect = "[mast]\n sail = \"white\"\n"
|
||||||
|
if got != expect {
|
||||||
|
t.Errorf("Expected:\n%s\nGot\n%s\n", expect, got)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFromYaml(t *testing.T) {
|
func TestFromYaml(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue