123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- package inspect
- import (
- "bytes"
- "strings"
- "testing"
- "github.com/docker/docker/utils/templates"
- )
- type testElement struct {
- DNS string `json:"Dns"`
- }
- func TestTemplateInspectorDefault(t *testing.T) {
- b := new(bytes.Buffer)
- tmpl, err := templates.Parse("{{.DNS}}")
- if err != nil {
- t.Fatal(err)
- }
- i := NewTemplateInspector(b, tmpl)
- if err := i.Inspect(testElement{"0.0.0.0"}, nil); err != nil {
- t.Fatal(err)
- }
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- if b.String() != "0.0.0.0\n" {
- t.Fatalf("Expected `0.0.0.0\\n`, got `%s`", b.String())
- }
- }
- func TestTemplateInspectorEmpty(t *testing.T) {
- b := new(bytes.Buffer)
- tmpl, err := templates.Parse("{{.DNS}}")
- if err != nil {
- t.Fatal(err)
- }
- i := NewTemplateInspector(b, tmpl)
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- if b.String() != "\n" {
- t.Fatalf("Expected `\\n`, got `%s`", b.String())
- }
- }
- func TestTemplateInspectorTemplateError(t *testing.T) {
- b := new(bytes.Buffer)
- tmpl, err := templates.Parse("{{.Foo}}")
- if err != nil {
- t.Fatal(err)
- }
- i := NewTemplateInspector(b, tmpl)
- err = i.Inspect(testElement{"0.0.0.0"}, nil)
- if err == nil {
- t.Fatal("Expected error got nil")
- }
- if !strings.HasPrefix(err.Error(), "Template parsing error") {
- t.Fatalf("Expected template error, got %v", err)
- }
- }
- func TestTemplateInspectorRawFallback(t *testing.T) {
- b := new(bytes.Buffer)
- tmpl, err := templates.Parse("{{.Dns}}")
- if err != nil {
- t.Fatal(err)
- }
- i := NewTemplateInspector(b, tmpl)
- if err := i.Inspect(testElement{"0.0.0.0"}, []byte(`{"Dns": "0.0.0.0"}`)); err != nil {
- t.Fatal(err)
- }
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- if b.String() != "0.0.0.0\n" {
- t.Fatalf("Expected `0.0.0.0\\n`, got `%s`", b.String())
- }
- }
- func TestTemplateInspectorRawFallbackError(t *testing.T) {
- b := new(bytes.Buffer)
- tmpl, err := templates.Parse("{{.Dns}}")
- if err != nil {
- t.Fatal(err)
- }
- i := NewTemplateInspector(b, tmpl)
- err = i.Inspect(testElement{"0.0.0.0"}, []byte(`{"Foo": "0.0.0.0"}`))
- if err == nil {
- t.Fatal("Expected error got nil")
- }
- if !strings.HasPrefix(err.Error(), "Template parsing error") {
- t.Fatalf("Expected template error, got %v", err)
- }
- }
- func TestTemplateInspectorMultiple(t *testing.T) {
- b := new(bytes.Buffer)
- tmpl, err := templates.Parse("{{.DNS}}")
- if err != nil {
- t.Fatal(err)
- }
- i := NewTemplateInspector(b, tmpl)
- if err := i.Inspect(testElement{"0.0.0.0"}, nil); err != nil {
- t.Fatal(err)
- }
- if err := i.Inspect(testElement{"1.1.1.1"}, nil); err != nil {
- t.Fatal(err)
- }
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- if b.String() != "0.0.0.0\n1.1.1.1\n" {
- t.Fatalf("Expected `0.0.0.0\\n1.1.1.1\\n`, got `%s`", b.String())
- }
- }
- func TestIndentedInspectorDefault(t *testing.T) {
- b := new(bytes.Buffer)
- i := NewIndentedInspector(b)
- if err := i.Inspect(testElement{"0.0.0.0"}, nil); err != nil {
- t.Fatal(err)
- }
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- expected := `[
- {
- "Dns": "0.0.0.0"
- }
- ]
- `
- if b.String() != expected {
- t.Fatalf("Expected `%s`, got `%s`", expected, b.String())
- }
- }
- func TestIndentedInspectorMultiple(t *testing.T) {
- b := new(bytes.Buffer)
- i := NewIndentedInspector(b)
- if err := i.Inspect(testElement{"0.0.0.0"}, nil); err != nil {
- t.Fatal(err)
- }
- if err := i.Inspect(testElement{"1.1.1.1"}, nil); err != nil {
- t.Fatal(err)
- }
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- expected := `[
- {
- "Dns": "0.0.0.0"
- },
- {
- "Dns": "1.1.1.1"
- }
- ]
- `
- if b.String() != expected {
- t.Fatalf("Expected `%s`, got `%s`", expected, b.String())
- }
- }
- func TestIndentedInspectorEmpty(t *testing.T) {
- b := new(bytes.Buffer)
- i := NewIndentedInspector(b)
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- expected := "[]\n"
- if b.String() != expected {
- t.Fatalf("Expected `%s`, got `%s`", expected, b.String())
- }
- }
- func TestIndentedInspectorRawElements(t *testing.T) {
- b := new(bytes.Buffer)
- i := NewIndentedInspector(b)
- if err := i.Inspect(testElement{"0.0.0.0"}, []byte(`{"Dns": "0.0.0.0", "Node": "0"}`)); err != nil {
- t.Fatal(err)
- }
- if err := i.Inspect(testElement{"1.1.1.1"}, []byte(`{"Dns": "1.1.1.1", "Node": "1"}`)); err != nil {
- t.Fatal(err)
- }
- if err := i.Flush(); err != nil {
- t.Fatal(err)
- }
- expected := `[
- {
- "Dns": "0.0.0.0",
- "Node": "0"
- },
- {
- "Dns": "1.1.1.1",
- "Node": "1"
- }
- ]
- `
- if b.String() != expected {
- t.Fatalf("Expected `%s`, got `%s`", expected, b.String())
- }
- }
|