mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
88 lines
2.7 KiB
Go
88 lines
2.7 KiB
Go
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package log
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func TestFromBuffer(t *testing.T) {
|
|
tests := []struct {
|
|
Description string
|
|
Input []byte
|
|
Expected []byte
|
|
}{
|
|
{
|
|
"Empty",
|
|
[]byte("\x00"),
|
|
[]byte(""),
|
|
},
|
|
{
|
|
"With null and without msg or message field",
|
|
[]byte("\x00{\"notMessages\":\"\"}"),
|
|
[]byte(""),
|
|
},
|
|
{
|
|
"Output without msg or message field",
|
|
[]byte("\x00{\"notMessages\":\"\"}"),
|
|
[]byte(""),
|
|
},
|
|
{
|
|
"Output with message field",
|
|
[]byte("{\"level\":\"info\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
|
|
[]byte("{\"context\":\"test\",\"level\":\"info\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
|
|
},
|
|
{
|
|
"Output with msg field",
|
|
[]byte("{\"level\":\"info\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
|
|
[]byte("{\"context\":\"test\",\"level\":\"info\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
|
|
},
|
|
{
|
|
"Output with msg field and error level",
|
|
[]byte("{\"level\":\"error\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
|
|
[]byte("{\"context\":\"test\",\"level\":\"error\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
|
|
},
|
|
{
|
|
"Output with msg field and error level",
|
|
[]byte("{\"level\":\"error\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
|
|
[]byte("{\"context\":\"test\",\"level\":\"error\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
|
|
},
|
|
{
|
|
"With invalid JSON",
|
|
[]byte("{\"notMessages\":\"\""),
|
|
[]byte(""),
|
|
},
|
|
{
|
|
"Text as JSON",
|
|
[]byte("NOT JSON"),
|
|
[]byte(""),
|
|
},
|
|
{
|
|
"Mixed content - text and valid JSON",
|
|
[]byte("SOMETHING INVALID\n{\"level\":\"error\",\"message\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}"),
|
|
[]byte("{\"context\":\"test\",\"level\":\"error\",\"msg\":\"DisposeWorkspace called\",\"time\":\"2021-09-14T21:26:44Z\"}\n"),
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
logger := logrus.New()
|
|
var buffer bytes.Buffer
|
|
logger.SetFormatter(&logrus.JSONFormatter{})
|
|
logger.SetOutput(&buffer)
|
|
logger.SetLevel(logrus.DebugLevel)
|
|
|
|
entry := logger.WithField("context", "test")
|
|
|
|
FromBuffer(bytes.NewBuffer(test.Input), entry)
|
|
if diff := cmp.Diff(string(test.Expected), buffer.String()); diff != "" {
|
|
t.Errorf("%v: unexpected result (-want +got):\n%s", test.Description, diff)
|
|
}
|
|
}
|
|
}
|