Fix tests using internal types for generic printing

This commit is contained in:
Jordan Liggitt 2016-12-09 13:38:44 -05:00
parent cc7a44f545
commit 12806be2bf
No known key found for this signature in database
GPG Key ID: 24E7ADF9A3B42012
2 changed files with 35 additions and 15 deletions

View File

@ -1252,11 +1252,13 @@ func (f *factory) PrintObject(cmd *cobra.Command, mapper meta.RESTMapper, obj ru
} }
func (f *factory) PrinterForMapping(cmd *cobra.Command, mapping *meta.RESTMapping, withNamespace bool) (kubectl.ResourcePrinter, error) { func (f *factory) PrinterForMapping(cmd *cobra.Command, mapping *meta.RESTMapping, withNamespace bool) (kubectl.ResourcePrinter, error) {
printer, ok, err := PrinterForCommand(cmd) printer, generic, err := PrinterForCommand(cmd)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if ok {
// Make sure we output versioned data for generic printers
if generic {
clientConfig, err := f.ClientConfig() clientConfig, err := f.ClientConfig()
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -118,24 +118,28 @@ func TestPrinter(t *testing.T) {
Format string Format string
FormatArgument string FormatArgument string
Input runtime.Object Input runtime.Object
OutputVersions []schema.GroupVersion
Expect string Expect string
}{ }{
{"test json", "json", "", simpleTest, "{\n \"Data\": \"foo\"\n}\n"}, {"test json", "json", "", simpleTest, nil, "{\n \"Data\": \"foo\"\n}\n"},
{"test yaml", "yaml", "", simpleTest, "Data: foo\n"}, {"test yaml", "yaml", "", simpleTest, nil, "Data: foo\n"},
{"test template", "template", "{{if .id}}{{.id}}{{end}}{{if .metadata.name}}{{.metadata.name}}{{end}}", {"test template", "template", "{{if .id}}{{.id}}{{end}}{{if .metadata.name}}{{.metadata.name}}{{end}}",
podTest, "foo"}, podTest, []schema.GroupVersion{v1.SchemeGroupVersion}, "foo"},
{"test jsonpath", "jsonpath", "{.metadata.name}", podTest, "foo"}, {"test jsonpath", "jsonpath", "{.metadata.name}", podTest, []schema.GroupVersion{v1.SchemeGroupVersion}, "foo"},
{"test jsonpath list", "jsonpath", "{.items[*].metadata.name}", podListTest, "foo bar"}, {"test jsonpath list", "jsonpath", "{.items[*].metadata.name}", podListTest, []schema.GroupVersion{v1.SchemeGroupVersion}, "foo bar"},
{"test jsonpath empty list", "jsonpath", "{.items[*].metadata.name}", emptyListTest, ""}, {"test jsonpath empty list", "jsonpath", "{.items[*].metadata.name}", emptyListTest, []schema.GroupVersion{v1.SchemeGroupVersion}, ""},
{"test name", "name", "", podTest, "pod/foo\n"}, {"test name", "name", "", podTest, []schema.GroupVersion{v1.SchemeGroupVersion}, "pod/foo\n"},
{"emits versioned objects", "template", "{{.kind}}", testapi, "Pod"}, {"emits versioned objects", "template", "{{.kind}}", testapi, []schema.GroupVersion{v1.SchemeGroupVersion}, "Pod"},
} }
for _, test := range printerTests { for _, test := range printerTests {
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
printer, found, err := GetPrinter(test.Format, test.FormatArgument, false) printer, generic, err := GetPrinter(test.Format, test.FormatArgument, false)
if err != nil || !found { if err != nil {
t.Errorf("in %s, unexpected error: %#v", test.Name, err) t.Errorf("in %s, unexpected error: %#v", test.Name, err)
} }
if generic && len(test.OutputVersions) > 0 {
printer = NewVersionedPrinter(printer, api.Scheme, test.OutputVersions...)
}
if err := printer.PrintObj(test.Input, buf); err != nil { if err := printer.PrintObj(test.Input, buf); err != nil {
t.Errorf("in %s, unexpected error: %#v", test.Name, err) t.Errorf("in %s, unexpected error: %#v", test.Name, err)
} }
@ -496,18 +500,32 @@ func TestTemplateStrings(t *testing.T) {
func TestPrinters(t *testing.T) { func TestPrinters(t *testing.T) {
om := func(name string) api.ObjectMeta { return api.ObjectMeta{Name: name} } om := func(name string) api.ObjectMeta { return api.ObjectMeta{Name: name} }
templatePrinter, err := NewTemplatePrinter([]byte("{{.name}}"))
var (
err error
templatePrinter ResourcePrinter
templatePrinter2 ResourcePrinter
jsonpathPrinter ResourcePrinter
)
templatePrinter, err = NewTemplatePrinter([]byte("{{.name}}"))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
templatePrinter2, err := NewTemplatePrinter([]byte("{{len .items}}")) templatePrinter = NewVersionedPrinter(templatePrinter, api.Scheme, v1.SchemeGroupVersion)
templatePrinter2, err = NewTemplatePrinter([]byte("{{len .items}}"))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
jsonpathPrinter, err := NewJSONPathPrinter("{.metadata.name}") templatePrinter2 = NewVersionedPrinter(templatePrinter2, api.Scheme, v1.SchemeGroupVersion)
jsonpathPrinter, err = NewJSONPathPrinter("{.metadata.name}")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
jsonpathPrinter = NewVersionedPrinter(jsonpathPrinter, api.Scheme, v1.SchemeGroupVersion)
printers := map[string]ResourcePrinter{ printers := map[string]ResourcePrinter{
"humanReadable": NewHumanReadablePrinter(PrintOptions{ "humanReadable": NewHumanReadablePrinter(PrintOptions{
NoHeaders: true, NoHeaders: true,