$92 GRAYBYTE WORDPRESS FILE MANAGER $63

SERVER : in-mum-web1330.main-hosting.eu #1 SMP Mon Feb 10 22:45:17 UTC 2025
SERVER IP : 2.57.91.66 | ADMIN IP 216.73.216.215
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/go/pkg/mod/github.com/go-kit/log@v0.2.1/

HOME
Current File : /opt/go/pkg/mod/github.com/go-kit/log@v0.2.1//json_logger_test.go
package log_test

import (
	"bytes"
	"errors"
	"io/ioutil"
	"testing"

	"github.com/go-kit/log"
)

func TestJSONLoggerCaller(t *testing.T) {
	t.Parallel()
	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	logger = log.With(logger, "caller", log.DefaultCaller)

	if err := logger.Log(); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"caller":"json_logger_test.go:18"}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave %#v", want, have)
	}
}

func TestJSONLogger(t *testing.T) {
	t.Parallel()
	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	if err := logger.Log("err", errors.New("err"), "m", map[string]int{"0": 0}, "a", []int{1, 2, 3}); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"a":[1,2,3],"err":"err","m":{"0":0}}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave %#v", want, have)
	}
}

func TestJSONLoggerMissingValue(t *testing.T) {
	t.Parallel()
	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	if err := logger.Log("k"); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"k":"(MISSING)"}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave %#v", want, have)
	}
}

func TestJSONLoggerNilStringerKey(t *testing.T) {
	t.Parallel()

	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	if err := logger.Log((*stringer)(nil), "v"); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"NULL":"v"}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave %#v", want, have)
	}
}

func TestJSONLoggerPanicStringerValue(t *testing.T) {
	t.Parallel()

	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	if err := logger.Log("k", unsafeStringer{}); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"k":"PANIC in String method: error"}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave %#v", want, have)
	}
}

func TestJSONLoggerNilErrorValue(t *testing.T) {
	t.Parallel()

	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	if err := logger.Log("err", (*stringError)(nil)); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"err":null}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave %#v", want, have)
	}
}

func TestJSONLoggerPanicErrorValue(t *testing.T) {
	t.Parallel()

	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	if err := logger.Log("err", unsafeError{}); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"err":"PANIC in Error method: error"}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave %#v", want, have)
	}
}

func TestJSONLoggerNoHTMLEscape(t *testing.T) {
	t.Parallel()
	buf := &bytes.Buffer{}
	logger := log.NewJSONLogger(buf)
	if err := logger.Log("k", "<&>"); err != nil {
		t.Fatal(err)
	}
	if want, have := `{"k":"<&>"}`+"\n", buf.String(); want != have {
		t.Errorf("\nwant %#v\nhave%#v", want, have)
	}
}

// aller implements json.Marshaler, encoding.TextMarshaler, and fmt.Stringer.
type aller struct{}

func (aller) MarshalJSON() ([]byte, error) {
	return []byte("\"json\""), nil
}

func (aller) MarshalText() ([]byte, error) {
	return []byte("text"), nil
}

func (aller) String() string {
	return "string"
}

func (aller) Error() string {
	return "error"
}

// textstringer implements encoding.TextMarshaler and fmt.Stringer.
type textstringer struct{}

func (textstringer) MarshalText() ([]byte, error) {
	return []byte("text"), nil
}

func (textstringer) String() string {
	return "string"
}

func TestJSONLoggerStringValue(t *testing.T) {
	t.Parallel()
	tests := []struct {
		v        interface{}
		expected string
	}{
		{
			v:        aller{},
			expected: `{"v":"json"}`,
		},
		{
			v:        textstringer{},
			expected: `{"v":"text"}`,
		},
		{
			v:        stringer("string"),
			expected: `{"v":"string"}`,
		},
	}

	for _, test := range tests {
		buf := &bytes.Buffer{}
		logger := log.NewJSONLogger(buf)
		if err := logger.Log("v", test.v); err != nil {
			t.Fatal(err)
		}

		if want, have := test.expected+"\n", buf.String(); want != have {
			t.Errorf("\nwant %#v\nhave %#v", want, have)
		}
	}
}

type stringer string

func (s stringer) String() string {
	return string(s)
}

type stringError string

func (s stringError) Error() string {
	return string(s)
}

type unsafeStringer struct{}

func (s unsafeStringer) String() string {
	panic("error")
}

type unsafeError struct{}

func (s unsafeError) Error() string {
	panic("error")
}

func BenchmarkJSONLoggerSimple(b *testing.B) {
	benchmarkRunner(b, log.NewJSONLogger(ioutil.Discard), baseMessage)
}

func BenchmarkJSONLoggerContextual(b *testing.B) {
	benchmarkRunner(b, log.NewJSONLogger(ioutil.Discard), withMessage)
}

func TestJSONLoggerConcurrency(t *testing.T) {
	t.Parallel()
	testConcurrency(t, log.NewJSONLogger(ioutil.Discard), 10000)
}

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
25 Jan 2024 4.43 PM
root / root
0755
.github
--
25 Jan 2024 4.43 PM
root / root
0555
level
--
25 Jan 2024 4.43 PM
root / root
0555
syslog
--
25 Jan 2024 4.43 PM
root / root
0555
term
--
25 Jan 2024 4.43 PM
root / root
0555
.gitignore
0.263 KB
25 Jan 2024 4.43 PM
root / root
0444
LICENSE
1.038 KB
25 Jan 2024 4.43 PM
root / root
0444
README.md
5.19 KB
25 Jan 2024 4.43 PM
root / root
0444
benchmark_test.go
0.433 KB
25 Jan 2024 4.43 PM
root / root
0444
concurrency_test.go
0.638 KB
25 Jan 2024 4.43 PM
root / root
0444
doc.go
5.229 KB
25 Jan 2024 4.43 PM
root / root
0444
example_test.go
2.714 KB
25 Jan 2024 4.43 PM
root / root
0444
go.mod
0.08 KB
25 Jan 2024 4.43 PM
root / root
0444
go.sum
0.169 KB
25 Jan 2024 4.43 PM
root / root
0444
json_logger.go
2.03 KB
25 Jan 2024 4.43 PM
root / root
0444
json_logger_test.go
4.609 KB
25 Jan 2024 4.43 PM
root / root
0444
log.go
6.315 KB
25 Jan 2024 4.43 PM
root / root
0444
log_test.go
8.65 KB
25 Jan 2024 4.43 PM
root / root
0444
logfmt_logger.go
1.345 KB
25 Jan 2024 4.43 PM
root / root
0444
logfmt_logger_test.go
1.378 KB
25 Jan 2024 4.43 PM
root / root
0444
nop_logger.go
0.201 KB
25 Jan 2024 4.43 PM
root / root
0444
nop_logger_test.go
0.49 KB
25 Jan 2024 4.43 PM
root / root
0444
staticcheck.conf
0.017 KB
25 Jan 2024 4.43 PM
root / root
0444
stdlib.go
4.163 KB
25 Jan 2024 4.43 PM
root / root
0444
stdlib_test.go
9.264 KB
25 Jan 2024 4.43 PM
root / root
0444
sync.go
3.176 KB
25 Jan 2024 4.43 PM
root / root
0444
sync_test.go
1.993 KB
25 Jan 2024 4.43 PM
root / root
0444
value.go
3.335 KB
25 Jan 2024 4.43 PM
root / root
0444
value_test.go
3.837 KB
25 Jan 2024 4.43 PM
root / root
0444

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF