Switch from glide to govendor
This commit is contained in:
		
							
								
								
									
										4
									
								
								vendor/github.com/go-logfmt/logfmt/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/go-logfmt/logfmt/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +0,0 @@
 | 
			
		||||
_testdata/
 | 
			
		||||
_testdata2/
 | 
			
		||||
logfmt-fuzz.zip
 | 
			
		||||
logfmt.test.exe
 | 
			
		||||
							
								
								
									
										15
									
								
								vendor/github.com/go-logfmt/logfmt/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/go-logfmt/logfmt/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,15 +0,0 @@
 | 
			
		||||
language: go
 | 
			
		||||
sudo: false
 | 
			
		||||
go:
 | 
			
		||||
  - 1.3
 | 
			
		||||
  - 1.4
 | 
			
		||||
  - 1.5
 | 
			
		||||
  - 1.6
 | 
			
		||||
  - tip
 | 
			
		||||
 | 
			
		||||
before_install:
 | 
			
		||||
  - go get github.com/mattn/goveralls
 | 
			
		||||
  - go get golang.org/x/tools/cmd/cover
 | 
			
		||||
 | 
			
		||||
script:
 | 
			
		||||
  - goveralls -service=travis-ci
 | 
			
		||||
							
								
								
									
										75
									
								
								vendor/github.com/go-logfmt/logfmt/decode-bench_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								vendor/github.com/go-logfmt/logfmt/decode-bench_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,75 +0,0 @@
 | 
			
		||||
package logfmt
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	kr "github.com/kr/logfmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func BenchmarkDecodeKeyval(b *testing.B) {
 | 
			
		||||
	const rows = 10000
 | 
			
		||||
	data := []byte{}
 | 
			
		||||
	for i := 0; i < rows; i++ {
 | 
			
		||||
		data = append(data, "a=1 b=\"bar\" ƒ=2h3s r=\"esc\\tmore stuff\" d x=sf   \n"...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	b.SetBytes(int64(len(data)))
 | 
			
		||||
	b.ResetTimer()
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
		var (
 | 
			
		||||
			dec = NewDecoder(bytes.NewReader(data))
 | 
			
		||||
			j   = 0
 | 
			
		||||
		)
 | 
			
		||||
		for dec.ScanRecord() {
 | 
			
		||||
			for dec.ScanKeyval() {
 | 
			
		||||
			}
 | 
			
		||||
			j++
 | 
			
		||||
		}
 | 
			
		||||
		if err := dec.Err(); err != nil {
 | 
			
		||||
			b.Errorf("got %v, want %v", err, nil)
 | 
			
		||||
		}
 | 
			
		||||
		if j != rows {
 | 
			
		||||
			b.Errorf("got %v, want %v", j, rows)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func BenchmarkKRDecode(b *testing.B) {
 | 
			
		||||
	const rows = 10000
 | 
			
		||||
	data := []byte{}
 | 
			
		||||
	for i := 0; i < rows; i++ {
 | 
			
		||||
		data = append(data, "a=1 b=\"bar\" ƒ=2h3s r=\"esc\\tmore stuff\" d x=sf   \n"...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	b.SetBytes(int64(len(data)))
 | 
			
		||||
	b.ResetTimer()
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
		var (
 | 
			
		||||
			s   = bufio.NewScanner(bytes.NewReader(data))
 | 
			
		||||
			err error
 | 
			
		||||
			j   = 0
 | 
			
		||||
			dh  discardHandler
 | 
			
		||||
		)
 | 
			
		||||
		for err == nil && s.Scan() {
 | 
			
		||||
			err = kr.Unmarshal(s.Bytes(), &dh)
 | 
			
		||||
			j++
 | 
			
		||||
		}
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			err = s.Err()
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			b.Errorf("got %v, want %v", err, nil)
 | 
			
		||||
		}
 | 
			
		||||
		if j != rows {
 | 
			
		||||
			b.Errorf("got %v, want %v", j, rows)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type discardHandler struct{}
 | 
			
		||||
 | 
			
		||||
func (discardHandler) HandleLogfmt(key, val []byte) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										184
									
								
								vendor/github.com/go-logfmt/logfmt/decode_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										184
									
								
								vendor/github.com/go-logfmt/logfmt/decode_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,184 +0,0 @@
 | 
			
		||||
package logfmt
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type kv struct {
 | 
			
		||||
	k, v []byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s kv) String() string {
 | 
			
		||||
	return fmt.Sprintf("{k:%q v:%q}", s.k, s.v)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDecoder_scan(t *testing.T) {
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		data string
 | 
			
		||||
		want [][]kv
 | 
			
		||||
	}{
 | 
			
		||||
		{"", nil},
 | 
			
		||||
		{"\n\n", [][]kv{nil, nil}},
 | 
			
		||||
		{`x= `, [][]kv{{{[]byte("x"), nil}}}},
 | 
			
		||||
		{`y=`, [][]kv{{{[]byte("y"), nil}}}},
 | 
			
		||||
		{`y`, [][]kv{{{[]byte("y"), nil}}}},
 | 
			
		||||
		{`y=f`, [][]kv{{{[]byte("y"), []byte("f")}}}},
 | 
			
		||||
		{"y=\"\\tf\"", [][]kv{{{[]byte("y"), []byte("\tf")}}}},
 | 
			
		||||
		{"a=1\n", [][]kv{{{[]byte("a"), []byte("1")}}}},
 | 
			
		||||
		{
 | 
			
		||||
			`a=1 b="bar" ƒ=2h3s r="esc\t" d x=sf   `,
 | 
			
		||||
			[][]kv{{
 | 
			
		||||
				{[]byte("a"), []byte("1")},
 | 
			
		||||
				{[]byte("b"), []byte("bar")},
 | 
			
		||||
				{[]byte("ƒ"), []byte("2h3s")},
 | 
			
		||||
				{[]byte("r"), []byte("esc\t")},
 | 
			
		||||
				{[]byte("d"), nil},
 | 
			
		||||
				{[]byte("x"), []byte("sf")},
 | 
			
		||||
			}},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"y=f\ny=g",
 | 
			
		||||
			[][]kv{
 | 
			
		||||
				{{[]byte("y"), []byte("f")}},
 | 
			
		||||
				{{[]byte("y"), []byte("g")}},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"y=f  \n\x1e y=g",
 | 
			
		||||
			[][]kv{
 | 
			
		||||
				{{[]byte("y"), []byte("f")}},
 | 
			
		||||
				{{[]byte("y"), []byte("g")}},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"y= d y=g",
 | 
			
		||||
			[][]kv{{
 | 
			
		||||
				{[]byte("y"), nil},
 | 
			
		||||
				{[]byte("d"), nil},
 | 
			
		||||
				{[]byte("y"), []byte("g")},
 | 
			
		||||
			}},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"y=\"f\"\ny=g",
 | 
			
		||||
			[][]kv{
 | 
			
		||||
				{{[]byte("y"), []byte("f")}},
 | 
			
		||||
				{{[]byte("y"), []byte("g")}},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"y=\"f\\n\"y=g",
 | 
			
		||||
			[][]kv{{
 | 
			
		||||
				{[]byte("y"), []byte("f\n")},
 | 
			
		||||
				{[]byte("y"), []byte("g")},
 | 
			
		||||
			}},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		var got [][]kv
 | 
			
		||||
		dec := NewDecoder(strings.NewReader(test.data))
 | 
			
		||||
 | 
			
		||||
		for dec.ScanRecord() {
 | 
			
		||||
			var kvs []kv
 | 
			
		||||
			for dec.ScanKeyval() {
 | 
			
		||||
				k := dec.Key()
 | 
			
		||||
				v := dec.Value()
 | 
			
		||||
				if k != nil {
 | 
			
		||||
					kvs = append(kvs, kv{k, v})
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			got = append(got, kvs)
 | 
			
		||||
		}
 | 
			
		||||
		if err := dec.Err(); err != nil {
 | 
			
		||||
			t.Errorf("got err: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		if !reflect.DeepEqual(got, test.want) {
 | 
			
		||||
			t.Errorf("\n  in: %q\n got: %+v\nwant: %+v", test.data, got, test.want)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDecoder_errors(t *testing.T) {
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		data string
 | 
			
		||||
		want error
 | 
			
		||||
	}{
 | 
			
		||||
		{"a=1\n=bar", &SyntaxError{Msg: "unexpected '='", Line: 2, Pos: 1}},
 | 
			
		||||
		{"a=1\n\"k\"=bar", &SyntaxError{Msg: "unexpected '\"'", Line: 2, Pos: 1}},
 | 
			
		||||
		{"a=1\nk\"ey=bar", &SyntaxError{Msg: "unexpected '\"'", Line: 2, Pos: 2}},
 | 
			
		||||
		{"a=1\nk=b\"ar", &SyntaxError{Msg: "unexpected '\"'", Line: 2, Pos: 4}},
 | 
			
		||||
		{"a=1\nk=b =ar", &SyntaxError{Msg: "unexpected '='", Line: 2, Pos: 5}},
 | 
			
		||||
		{"a==", &SyntaxError{Msg: "unexpected '='", Line: 1, Pos: 3}},
 | 
			
		||||
		{"a=1\nk=b=ar", &SyntaxError{Msg: "unexpected '='", Line: 2, Pos: 4}},
 | 
			
		||||
		{"a=\"1", &SyntaxError{Msg: "unterminated quoted value", Line: 1, Pos: 5}},
 | 
			
		||||
		{"a=\"1\\", &SyntaxError{Msg: "unterminated quoted value", Line: 1, Pos: 6}},
 | 
			
		||||
		{"a=\"\\t1", &SyntaxError{Msg: "unterminated quoted value", Line: 1, Pos: 7}},
 | 
			
		||||
		{"a=\"\\u1\"", &SyntaxError{Msg: "invalid quoted value", Line: 1, Pos: 8}},
 | 
			
		||||
		{"a\ufffd=bar", &SyntaxError{Msg: "invalid key", Line: 1, Pos: 5}},
 | 
			
		||||
		{"\x80=bar", &SyntaxError{Msg: "invalid key", Line: 1, Pos: 2}},
 | 
			
		||||
		{"\x80", &SyntaxError{Msg: "invalid key", Line: 1, Pos: 2}},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		dec := NewDecoder(strings.NewReader(test.data))
 | 
			
		||||
 | 
			
		||||
		for dec.ScanRecord() {
 | 
			
		||||
			for dec.ScanKeyval() {
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if got, want := dec.Err(), test.want; !reflect.DeepEqual(got, want) {
 | 
			
		||||
			t.Errorf("got: %v, want: %v", got, want)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDecoder_decode_encode(t *testing.T) {
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		in, out string
 | 
			
		||||
	}{
 | 
			
		||||
		{"", ""},
 | 
			
		||||
		{"\n", "\n"},
 | 
			
		||||
		{"\n  \n", "\n\n"},
 | 
			
		||||
		{
 | 
			
		||||
			"a=1\nb=2\n",
 | 
			
		||||
			"a=1\nb=2\n",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"a=1 b=\"bar\" ƒ=2h3s r=\"esc\\t\" d x=sf   ",
 | 
			
		||||
			"a=1 b=bar ƒ=2h3s r=\"esc\\t\" d= x=sf\n",
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		dec := NewDecoder(strings.NewReader(test.in))
 | 
			
		||||
		buf := bytes.Buffer{}
 | 
			
		||||
		enc := NewEncoder(&buf)
 | 
			
		||||
 | 
			
		||||
		var err error
 | 
			
		||||
	loop:
 | 
			
		||||
		for dec.ScanRecord() && err == nil {
 | 
			
		||||
			for dec.ScanKeyval() {
 | 
			
		||||
				if dec.Key() == nil {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
				if err = enc.EncodeKeyval(dec.Key(), dec.Value()); err != nil {
 | 
			
		||||
					break loop
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			enc.EndRecord()
 | 
			
		||||
		}
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			err = dec.Err()
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			t.Errorf("got err: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		if got, want := buf.String(), test.out; got != want {
 | 
			
		||||
			t.Errorf("\n got: %q\nwant: %q", got, want)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										233
									
								
								vendor/github.com/go-logfmt/logfmt/encode_internal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										233
									
								
								vendor/github.com/go-logfmt/logfmt/encode_internal_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,233 +0,0 @@
 | 
			
		||||
package logfmt
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"testing"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestSafeString(t *testing.T) {
 | 
			
		||||
	_, ok := safeString((*stringStringer)(nil))
 | 
			
		||||
	if got, want := ok, false; got != want {
 | 
			
		||||
		t.Errorf(" got %v, want %v", got, want)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestSafeMarshal(t *testing.T) {
 | 
			
		||||
	kb, err := safeMarshal((*stringMarshaler)(nil))
 | 
			
		||||
	if got := kb; got != nil {
 | 
			
		||||
		t.Errorf(" got %v, want nil", got)
 | 
			
		||||
	}
 | 
			
		||||
	if got, want := err, error(nil); got != want {
 | 
			
		||||
		t.Errorf(" got %v, want %v", got, want)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestWriteKeyStrings(t *testing.T) {
 | 
			
		||||
	keygen := []func(string) interface{}{
 | 
			
		||||
		func(s string) interface{} { return s },
 | 
			
		||||
		func(s string) interface{} { return stringData(s) },
 | 
			
		||||
		func(s string) interface{} { return stringStringer(s) },
 | 
			
		||||
		func(s string) interface{} { return stringMarshaler(s) },
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	data := []struct {
 | 
			
		||||
		key  string
 | 
			
		||||
		want string
 | 
			
		||||
		err  error
 | 
			
		||||
	}{
 | 
			
		||||
		{key: "k", want: "k"},
 | 
			
		||||
		{key: `\`, want: `\`},
 | 
			
		||||
		{key: "\n", err: ErrInvalidKey},
 | 
			
		||||
		{key: "\x00", err: ErrInvalidKey},
 | 
			
		||||
		{key: "\x10", err: ErrInvalidKey},
 | 
			
		||||
		{key: "\x1F", err: ErrInvalidKey},
 | 
			
		||||
		{key: "", err: ErrInvalidKey},
 | 
			
		||||
		{key: " ", err: ErrInvalidKey},
 | 
			
		||||
		{key: "=", err: ErrInvalidKey},
 | 
			
		||||
		{key: `"`, err: ErrInvalidKey},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, g := range keygen {
 | 
			
		||||
		for _, d := range data {
 | 
			
		||||
			w := &bytes.Buffer{}
 | 
			
		||||
			key := g(d.key)
 | 
			
		||||
			err := writeKey(w, key)
 | 
			
		||||
			if err != d.err {
 | 
			
		||||
				t.Errorf("%#v (%[1]T): got error: %v, want error: %v", key, err, d.err)
 | 
			
		||||
			}
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if got, want := w.String(), d.want; got != want {
 | 
			
		||||
				t.Errorf("%#v (%[1]T): got '%s', want '%s'", key, got, want)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestWriteKey(t *testing.T) {
 | 
			
		||||
	var (
 | 
			
		||||
		nilPtr *int
 | 
			
		||||
		one    = 1
 | 
			
		||||
		ptr    = &one
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	data := []struct {
 | 
			
		||||
		key  interface{}
 | 
			
		||||
		want string
 | 
			
		||||
		err  error
 | 
			
		||||
	}{
 | 
			
		||||
		{key: nil, err: ErrNilKey},
 | 
			
		||||
		{key: nilPtr, err: ErrNilKey},
 | 
			
		||||
		{key: (*stringStringer)(nil), err: ErrNilKey},
 | 
			
		||||
		{key: (*stringMarshaler)(nil), err: ErrNilKey},
 | 
			
		||||
		{key: (*stringerMarshaler)(nil), err: ErrNilKey},
 | 
			
		||||
		{key: ptr, want: "1"},
 | 
			
		||||
 | 
			
		||||
		{key: errorMarshaler{}, err: &MarshalerError{Type: reflect.TypeOf(errorMarshaler{}), Err: errMarshaling}},
 | 
			
		||||
		{key: make(chan int), err: ErrUnsupportedKeyType},
 | 
			
		||||
		{key: []int{}, err: ErrUnsupportedKeyType},
 | 
			
		||||
		{key: map[int]int{}, err: ErrUnsupportedKeyType},
 | 
			
		||||
		{key: [2]int{}, err: ErrUnsupportedKeyType},
 | 
			
		||||
		{key: struct{}{}, err: ErrUnsupportedKeyType},
 | 
			
		||||
		{key: fmt.Sprint, err: ErrUnsupportedKeyType},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, d := range data {
 | 
			
		||||
		w := &bytes.Buffer{}
 | 
			
		||||
		err := writeKey(w, d.key)
 | 
			
		||||
		if !reflect.DeepEqual(err, d.err) {
 | 
			
		||||
			t.Errorf("%#v: got error: %v, want error: %v", d.key, err, d.err)
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if got, want := w.String(), d.want; got != want {
 | 
			
		||||
			t.Errorf("%#v: got '%s', want '%s'", d.key, got, want)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestWriteValueStrings(t *testing.T) {
 | 
			
		||||
	keygen := []func(string) interface{}{
 | 
			
		||||
		func(s string) interface{} { return s },
 | 
			
		||||
		func(s string) interface{} { return errors.New(s) },
 | 
			
		||||
		func(s string) interface{} { return stringData(s) },
 | 
			
		||||
		func(s string) interface{} { return stringStringer(s) },
 | 
			
		||||
		func(s string) interface{} { return stringMarshaler(s) },
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	data := []struct {
 | 
			
		||||
		value string
 | 
			
		||||
		want  string
 | 
			
		||||
		err   error
 | 
			
		||||
	}{
 | 
			
		||||
		{value: "", want: ""},
 | 
			
		||||
		{value: "v", want: "v"},
 | 
			
		||||
		{value: " ", want: `" "`},
 | 
			
		||||
		{value: "=", want: `"="`},
 | 
			
		||||
		{value: `\`, want: `\`},
 | 
			
		||||
		{value: `"`, want: `"\""`},
 | 
			
		||||
		{value: `\"`, want: `"\\\""`},
 | 
			
		||||
		{value: "\n", want: `"\n"`},
 | 
			
		||||
		{value: "\x00", want: `"\u0000"`},
 | 
			
		||||
		{value: "\x10", want: `"\u0010"`},
 | 
			
		||||
		{value: "\x1F", want: `"\u001f"`},
 | 
			
		||||
		{value: "µ", want: `µ`},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, g := range keygen {
 | 
			
		||||
		for _, d := range data {
 | 
			
		||||
			w := &bytes.Buffer{}
 | 
			
		||||
			value := g(d.value)
 | 
			
		||||
			err := writeValue(w, value)
 | 
			
		||||
			if err != d.err {
 | 
			
		||||
				t.Errorf("%#v (%[1]T): got error: %v, want error: %v", value, err, d.err)
 | 
			
		||||
			}
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if got, want := w.String(), d.want; got != want {
 | 
			
		||||
				t.Errorf("%#v (%[1]T): got '%s', want '%s'", value, got, want)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestWriteValue(t *testing.T) {
 | 
			
		||||
	var (
 | 
			
		||||
		nilPtr *int
 | 
			
		||||
		one    = 1
 | 
			
		||||
		ptr    = &one
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	data := []struct {
 | 
			
		||||
		value interface{}
 | 
			
		||||
		want  string
 | 
			
		||||
		err   error
 | 
			
		||||
	}{
 | 
			
		||||
		{value: nil, want: "null"},
 | 
			
		||||
		{value: nilPtr, want: "null"},
 | 
			
		||||
		{value: (*stringStringer)(nil), want: "null"},
 | 
			
		||||
		{value: (*stringMarshaler)(nil), want: "null"},
 | 
			
		||||
		{value: (*stringerMarshaler)(nil), want: "null"},
 | 
			
		||||
		{value: ptr, want: "1"},
 | 
			
		||||
 | 
			
		||||
		{value: errorMarshaler{}, err: &MarshalerError{Type: reflect.TypeOf(errorMarshaler{}), Err: errMarshaling}},
 | 
			
		||||
		{value: make(chan int), err: ErrUnsupportedValueType},
 | 
			
		||||
		{value: []int{}, err: ErrUnsupportedValueType},
 | 
			
		||||
		{value: map[int]int{}, err: ErrUnsupportedValueType},
 | 
			
		||||
		{value: [2]int{}, err: ErrUnsupportedValueType},
 | 
			
		||||
		{value: struct{}{}, err: ErrUnsupportedValueType},
 | 
			
		||||
		{value: fmt.Sprint, err: ErrUnsupportedValueType},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, d := range data {
 | 
			
		||||
		w := &bytes.Buffer{}
 | 
			
		||||
		err := writeValue(w, d.value)
 | 
			
		||||
		if !reflect.DeepEqual(err, d.err) {
 | 
			
		||||
			t.Errorf("%#v: got error: %v, want error: %v", d.value, err, d.err)
 | 
			
		||||
		}
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if got, want := w.String(), d.want; got != want {
 | 
			
		||||
			t.Errorf("%#v: got '%s', want '%s'", d.value, got, want)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type stringData string
 | 
			
		||||
 | 
			
		||||
type stringStringer string
 | 
			
		||||
 | 
			
		||||
func (s stringStringer) String() string {
 | 
			
		||||
	return string(s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type stringMarshaler string
 | 
			
		||||
 | 
			
		||||
func (s stringMarshaler) MarshalText() ([]byte, error) {
 | 
			
		||||
	return []byte(s), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type stringerMarshaler string
 | 
			
		||||
 | 
			
		||||
func (s stringerMarshaler) String() string {
 | 
			
		||||
	return "String() called"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s stringerMarshaler) MarshalText() ([]byte, error) {
 | 
			
		||||
	return []byte(s), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var errMarshaling = errors.New("marshal error")
 | 
			
		||||
 | 
			
		||||
type errorMarshaler struct{}
 | 
			
		||||
 | 
			
		||||
func (errorMarshaler) MarshalText() ([]byte, error) {
 | 
			
		||||
	return nil, errMarshaling
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										206
									
								
								vendor/github.com/go-logfmt/logfmt/encode_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										206
									
								
								vendor/github.com/go-logfmt/logfmt/encode_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,206 +0,0 @@
 | 
			
		||||
package logfmt_test
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-logfmt/logfmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestEncodeKeyval(t *testing.T) {
 | 
			
		||||
	data := []struct {
 | 
			
		||||
		key, value interface{}
 | 
			
		||||
		want       string
 | 
			
		||||
		err        error
 | 
			
		||||
	}{
 | 
			
		||||
		{key: "k", value: "v", want: "k=v"},
 | 
			
		||||
		{key: "k", value: nil, want: "k=null"},
 | 
			
		||||
		{key: `\`, value: "v", want: `\=v`},
 | 
			
		||||
		{key: "k", value: "", want: "k="},
 | 
			
		||||
		{key: "k", value: "null", want: `k="null"`},
 | 
			
		||||
		{key: "k", value: "<nil>", want: `k=<nil>`},
 | 
			
		||||
		{key: "k", value: true, want: "k=true"},
 | 
			
		||||
		{key: "k", value: 1, want: "k=1"},
 | 
			
		||||
		{key: "k", value: 1.025, want: "k=1.025"},
 | 
			
		||||
		{key: "k", value: 1e-3, want: "k=0.001"},
 | 
			
		||||
		{key: "k", value: 3.5 + 2i, want: "k=(3.5+2i)"},
 | 
			
		||||
		{key: "k", value: "v v", want: `k="v v"`},
 | 
			
		||||
		{key: "k", value: " ", want: `k=" "`},
 | 
			
		||||
		{key: "k", value: `"`, want: `k="\""`},
 | 
			
		||||
		{key: "k", value: `=`, want: `k="="`},
 | 
			
		||||
		{key: "k", value: `\`, want: `k=\`},
 | 
			
		||||
		{key: "k", value: `=\`, want: `k="=\\"`},
 | 
			
		||||
		{key: "k", value: `\"`, want: `k="\\\""`},
 | 
			
		||||
		{key: "k", value: [2]int{2, 19}, err: logfmt.ErrUnsupportedValueType},
 | 
			
		||||
		{key: "k", value: []string{"e1", "e 2"}, err: logfmt.ErrUnsupportedValueType},
 | 
			
		||||
		{key: "k", value: structData{"a a", 9}, err: logfmt.ErrUnsupportedValueType},
 | 
			
		||||
		{key: "k", value: decimalMarshaler{5, 9}, want: "k=5.9"},
 | 
			
		||||
		{key: "k", value: (*decimalMarshaler)(nil), want: "k=null"},
 | 
			
		||||
		{key: "k", value: decimalStringer{5, 9}, want: "k=5.9"},
 | 
			
		||||
		{key: "k", value: (*decimalStringer)(nil), want: "k=null"},
 | 
			
		||||
		{key: "k", value: marshalerStringer{5, 9}, want: "k=5.9"},
 | 
			
		||||
		{key: "k", value: (*marshalerStringer)(nil), want: "k=null"},
 | 
			
		||||
		{key: "k", value: new(nilMarshaler), want: "k=notnilmarshaler"},
 | 
			
		||||
		{key: "k", value: (*nilMarshaler)(nil), want: "k=nilmarshaler"},
 | 
			
		||||
		{key: (*marshalerStringer)(nil), value: "v", err: logfmt.ErrNilKey},
 | 
			
		||||
		{key: decimalMarshaler{5, 9}, value: "v", want: "5.9=v"},
 | 
			
		||||
		{key: (*decimalMarshaler)(nil), value: "v", err: logfmt.ErrNilKey},
 | 
			
		||||
		{key: decimalStringer{5, 9}, value: "v", want: "5.9=v"},
 | 
			
		||||
		{key: (*decimalStringer)(nil), value: "v", err: logfmt.ErrNilKey},
 | 
			
		||||
		{key: marshalerStringer{5, 9}, value: "v", want: "5.9=v"},
 | 
			
		||||
		{key: "k", value: "\xbd", want: `k="\ufffd"`},
 | 
			
		||||
		{key: "k", value: "\ufffd\x00", want: `k="\ufffd\u0000"`},
 | 
			
		||||
		{key: "k", value: "\ufffd", want: `k="\ufffd"`},
 | 
			
		||||
		{key: "k", value: []byte("\ufffd\x00"), want: `k="\ufffd\u0000"`},
 | 
			
		||||
		{key: "k", value: []byte("\ufffd"), want: `k="\ufffd"`},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, d := range data {
 | 
			
		||||
		w := &bytes.Buffer{}
 | 
			
		||||
		enc := logfmt.NewEncoder(w)
 | 
			
		||||
		err := enc.EncodeKeyval(d.key, d.value)
 | 
			
		||||
		if err != d.err {
 | 
			
		||||
			t.Errorf("%#v, %#v: got error: %v, want error: %v", d.key, d.value, err, d.err)
 | 
			
		||||
		}
 | 
			
		||||
		if got, want := w.String(), d.want; got != want {
 | 
			
		||||
			t.Errorf("%#v, %#v: got '%s', want '%s'", d.key, d.value, got, want)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestMarshalKeyvals(t *testing.T) {
 | 
			
		||||
	one := 1
 | 
			
		||||
	ptr := &one
 | 
			
		||||
	nilPtr := (*int)(nil)
 | 
			
		||||
 | 
			
		||||
	data := []struct {
 | 
			
		||||
		in   []interface{}
 | 
			
		||||
		want []byte
 | 
			
		||||
		err  error
 | 
			
		||||
	}{
 | 
			
		||||
		{in: nil, want: nil},
 | 
			
		||||
		{in: kv(), want: nil},
 | 
			
		||||
		{in: kv(nil, "v"), err: logfmt.ErrNilKey},
 | 
			
		||||
		{in: kv(nilPtr, "v"), err: logfmt.ErrNilKey},
 | 
			
		||||
		{in: kv("\ufffd"), err: logfmt.ErrInvalidKey},
 | 
			
		||||
		{in: kv("\xbd"), err: logfmt.ErrInvalidKey},
 | 
			
		||||
		{in: kv("k"), want: []byte("k=null")},
 | 
			
		||||
		{in: kv("k", nil), want: []byte("k=null")},
 | 
			
		||||
		{in: kv("k", ""), want: []byte("k=")},
 | 
			
		||||
		{in: kv("k", "null"), want: []byte(`k="null"`)},
 | 
			
		||||
		{in: kv("k", "v"), want: []byte("k=v")},
 | 
			
		||||
		{in: kv("k", true), want: []byte("k=true")},
 | 
			
		||||
		{in: kv("k", 1), want: []byte("k=1")},
 | 
			
		||||
		{in: kv("k", ptr), want: []byte("k=1")},
 | 
			
		||||
		{in: kv("k", nilPtr), want: []byte("k=null")},
 | 
			
		||||
		{in: kv("k", 1.025), want: []byte("k=1.025")},
 | 
			
		||||
		{in: kv("k", 1e-3), want: []byte("k=0.001")},
 | 
			
		||||
		{in: kv("k", "v v"), want: []byte(`k="v v"`)},
 | 
			
		||||
		{in: kv("k", `"`), want: []byte(`k="\""`)},
 | 
			
		||||
		{in: kv("k", `=`), want: []byte(`k="="`)},
 | 
			
		||||
		{in: kv("k", `\`), want: []byte(`k=\`)},
 | 
			
		||||
		{in: kv("k", `=\`), want: []byte(`k="=\\"`)},
 | 
			
		||||
		{in: kv("k", `\"`), want: []byte(`k="\\\""`)},
 | 
			
		||||
		{in: kv("k1", "v1", "k2", "v2"), want: []byte("k1=v1 k2=v2")},
 | 
			
		||||
		{in: kv("k1", "v1", "k2", [2]int{}), want: []byte("k1=v1 k2=\"unsupported value type\"")},
 | 
			
		||||
		{in: kv([2]int{}, "v1", "k2", "v2"), want: []byte("k2=v2")},
 | 
			
		||||
		{in: kv("k", time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)), want: []byte("k=2009-11-10T23:00:00Z")},
 | 
			
		||||
		{in: kv("k", errorMarshaler{}), want: []byte("k=\"error marshaling value of type logfmt_test.errorMarshaler: marshal error\"")},
 | 
			
		||||
		{in: kv("k", decimalMarshaler{5, 9}), want: []byte("k=5.9")},
 | 
			
		||||
		{in: kv("k", (*decimalMarshaler)(nil)), want: []byte("k=null")},
 | 
			
		||||
		{in: kv("k", decimalStringer{5, 9}), want: []byte("k=5.9")},
 | 
			
		||||
		{in: kv("k", (*decimalStringer)(nil)), want: []byte("k=null")},
 | 
			
		||||
		{in: kv("k", marshalerStringer{5, 9}), want: []byte("k=5.9")},
 | 
			
		||||
		{in: kv("k", (*marshalerStringer)(nil)), want: []byte("k=null")},
 | 
			
		||||
		{in: kv(one, "v"), want: []byte("1=v")},
 | 
			
		||||
		{in: kv(ptr, "v"), want: []byte("1=v")},
 | 
			
		||||
		{in: kv((*marshalerStringer)(nil), "v"), err: logfmt.ErrNilKey},
 | 
			
		||||
		{in: kv(decimalMarshaler{5, 9}, "v"), want: []byte("5.9=v")},
 | 
			
		||||
		{in: kv((*decimalMarshaler)(nil), "v"), err: logfmt.ErrNilKey},
 | 
			
		||||
		{in: kv(decimalStringer{5, 9}, "v"), want: []byte("5.9=v")},
 | 
			
		||||
		{in: kv((*decimalStringer)(nil), "v"), err: logfmt.ErrNilKey},
 | 
			
		||||
		{in: kv(marshalerStringer{5, 9}, "v"), want: []byte("5.9=v")},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, d := range data {
 | 
			
		||||
		got, err := logfmt.MarshalKeyvals(d.in...)
 | 
			
		||||
		if err != d.err {
 | 
			
		||||
			t.Errorf("%#v: got error: %v, want error: %v", d.in, err, d.err)
 | 
			
		||||
		}
 | 
			
		||||
		if !reflect.DeepEqual(got, d.want) {
 | 
			
		||||
			t.Errorf("%#v: got '%s', want '%s'", d.in, got, d.want)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func kv(keyvals ...interface{}) []interface{} {
 | 
			
		||||
	return keyvals
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type structData struct {
 | 
			
		||||
	A string `logfmt:"fieldA"`
 | 
			
		||||
	B int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type nilMarshaler int
 | 
			
		||||
 | 
			
		||||
func (m *nilMarshaler) MarshalText() ([]byte, error) {
 | 
			
		||||
	if m == nil {
 | 
			
		||||
		return []byte("nilmarshaler"), nil
 | 
			
		||||
	}
 | 
			
		||||
	return []byte("notnilmarshaler"), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type decimalMarshaler struct {
 | 
			
		||||
	a, b int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t decimalMarshaler) MarshalText() ([]byte, error) {
 | 
			
		||||
	buf := &bytes.Buffer{}
 | 
			
		||||
	fmt.Fprintf(buf, "%d.%d", t.a, t.b)
 | 
			
		||||
	return buf.Bytes(), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type decimalStringer struct {
 | 
			
		||||
	a, b int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s decimalStringer) String() string {
 | 
			
		||||
	return fmt.Sprintf("%d.%d", s.a, s.b)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type marshalerStringer struct {
 | 
			
		||||
	a, b int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t marshalerStringer) MarshalText() ([]byte, error) {
 | 
			
		||||
	buf := &bytes.Buffer{}
 | 
			
		||||
	fmt.Fprintf(buf, "%d.%d", t.a, t.b)
 | 
			
		||||
	return buf.Bytes(), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (t marshalerStringer) String() string {
 | 
			
		||||
	return fmt.Sprint(t.a + t.b)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var errMarshal = errors.New("marshal error")
 | 
			
		||||
 | 
			
		||||
type errorMarshaler struct{}
 | 
			
		||||
 | 
			
		||||
func (errorMarshaler) MarshalText() ([]byte, error) {
 | 
			
		||||
	return nil, errMarshal
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func BenchmarkEncodeKeyval(b *testing.B) {
 | 
			
		||||
	b.ReportAllocs()
 | 
			
		||||
	enc := logfmt.NewEncoder(ioutil.Discard)
 | 
			
		||||
	for i := 0; i < b.N; i++ {
 | 
			
		||||
		enc.EncodeKeyval("sk", "10")
 | 
			
		||||
		enc.EncodeKeyval("some-key", "a rather long string with spaces")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										60
									
								
								vendor/github.com/go-logfmt/logfmt/example_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								vendor/github.com/go-logfmt/logfmt/example_test.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,60 +0,0 @@
 | 
			
		||||
package logfmt_test
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-logfmt/logfmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func ExampleEncoder() {
 | 
			
		||||
	check := func(err error) {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			panic(err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	e := logfmt.NewEncoder(os.Stdout)
 | 
			
		||||
 | 
			
		||||
	check(e.EncodeKeyval("id", 1))
 | 
			
		||||
	check(e.EncodeKeyval("dur", time.Second+time.Millisecond))
 | 
			
		||||
	check(e.EndRecord())
 | 
			
		||||
 | 
			
		||||
	check(e.EncodeKeyval("id", 1))
 | 
			
		||||
	check(e.EncodeKeyval("path", "/path/to/file"))
 | 
			
		||||
	check(e.EncodeKeyval("err", errors.New("file not found")))
 | 
			
		||||
	check(e.EndRecord())
 | 
			
		||||
 | 
			
		||||
	// Output:
 | 
			
		||||
	// id=1 dur=1.001s
 | 
			
		||||
	// id=1 path=/path/to/file err="file not found"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ExampleDecoder() {
 | 
			
		||||
	in := `
 | 
			
		||||
id=1 dur=1.001s
 | 
			
		||||
id=1 path=/path/to/file err="file not found"
 | 
			
		||||
`
 | 
			
		||||
 | 
			
		||||
	d := logfmt.NewDecoder(strings.NewReader(in))
 | 
			
		||||
	for d.ScanRecord() {
 | 
			
		||||
		for d.ScanKeyval() {
 | 
			
		||||
			fmt.Printf("k: %s v: %s\n", d.Key(), d.Value())
 | 
			
		||||
		}
 | 
			
		||||
		fmt.Println()
 | 
			
		||||
	}
 | 
			
		||||
	if d.Err() != nil {
 | 
			
		||||
		panic(d.Err())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Output:
 | 
			
		||||
	// k: id v: 1
 | 
			
		||||
	// k: dur v: 1.001s
 | 
			
		||||
	//
 | 
			
		||||
	// k: id v: 1
 | 
			
		||||
	// k: path v: /path/to/file
 | 
			
		||||
	// k: err v: file not found
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user