Skip to content

Instantly share code, notes, and snippets.

@overdrive3000
Created August 22, 2022 12:08
Show Gist options
  • Save overdrive3000/885cf5e3992566ddee3f1f2380136cbc to your computer and use it in GitHub Desktop.
Save overdrive3000/885cf5e3992566ddee3f1f2380136cbc to your computer and use it in GitHub Desktop.
Testing
package log_test
import (
"bytes"
"encoding/json"
"nomad-datadog-exporter/internal/log"
"os"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/sirupsen/logrus"
)
type format struct {
AwsRegion string `json:"aws_region,omitempty"`
FunctionName string `json:"function_name,omitempty"`
Level string `json:"level,omitempty"`
Msg string `json:"msg,omitempty"`
}
func TestNewLoggerDefaults(t *testing.T) {
t.Parallel()
os.Setenv("AWS_REGION", "us-east-1")
os.Setenv("AWS_LAMBDA_FUNCTION_NAME", "nomad-datadog-exporter")
type testCase struct {
want format
msg string
level logrus.Level
err error
eq bool
}
testCases := []testCase{
{
want: format{
AwsRegion: "us-east-1",
FunctionName: "nomad-datadog-exporter",
Level: "info",
Msg: "Test!!!",
},
msg: "Test!!!",
level: log.Info,
err: nil,
eq: true,
},
{
want: format{
AwsRegion: "us-east-1",
FunctionName: "nomad-datadog-exporter",
Level: "debug",
Msg: "Test!!!",
},
msg: "Test!!!",
level: log.Debug,
err: nil,
eq: true,
},
{
want: format{
AwsRegion: "us-east-1",
FunctionName: "nomad-datadog-exporter",
Level: "info",
Msg: "Test!!!",
},
msg: "Test!!!",
level: log.Info,
err: nil,
eq: true,
},
}
for _, tc := range testCases {
fakeStdErr := &bytes.Buffer{}
logger, err := log.NewLogger(
log.WithOutput(fakeStdErr),
log.WithLevel(tc.level),
)
if err != tc.err {
t.Fatal(err)
}
switch {
case tc.level == log.Debug:
logger.Debug(tc.msg)
default:
logger.Info(tc.msg)
}
var got format
if err := json.Unmarshal(fakeStdErr.Bytes(), &got); err != nil {
t.Fatal(err)
}
if cmp.Equal(tc.want, got) != tc.eq {
t.Error(cmp.Diff(tc.want, got))
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment