Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 28 additions & 13 deletions pkg/log/in_memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ func (l *InMemoryLogger) JSON(s []byte) {
}

func (l *InMemoryLogger) ProcessLogger() ProcessLogger {
return l
return newInMemoryProcessLogger(l, l.parent.ProcessLogger())
}

func (l *InMemoryLogger) SilentLogger() *SilentLogger {
Expand All @@ -264,18 +264,6 @@ func (l *InMemoryLogger) Write(s []byte) (int, error) {
return l.parent.Write(s)
}

func (l *InMemoryLogger) ProcessStart(name string) {
l.writeEntityFormatted("Start process: %s", name)
}

func (l *InMemoryLogger) ProcessFail() {
l.writeEntityWithPrefix(l.errorPrefix, "Fail process")
}

func (l *InMemoryLogger) ProcessEnd() {
l.writeEntity("End process")
}

func (l *InMemoryLogger) match(m *Match, entity string) bool {
if len(m.Regex) > 0 {
for _, regex := range m.Regex {
Expand Down Expand Up @@ -336,3 +324,30 @@ func (l *InMemoryLogger) writeEntityWithPrefix(prefix, f string, a ...any) {

l.writeEntity(msg)
}

type inMemoryProcessLogger struct {
parent ProcessLogger
inMemory *InMemoryLogger
}

func newInMemoryProcessLogger(inMemory *InMemoryLogger, parent ProcessLogger) *inMemoryProcessLogger {
return &inMemoryProcessLogger{
parent: parent,
inMemory: inMemory,
}
}

func (l *inMemoryProcessLogger) ProcessStart(name string) {
l.parent.ProcessStart(name)
l.inMemory.writeEntityFormatted("Start process: %s", name)
}

func (l *inMemoryProcessLogger) ProcessFail() {
l.parent.ProcessFail()
l.inMemory.writeEntityWithPrefix(l.inMemory.errorPrefix, "Fail process")
}

func (l *inMemoryProcessLogger) ProcessEnd() {
l.parent.ProcessEnd()
l.inMemory.writeEntity("End process")
}
51 changes: 50 additions & 1 deletion pkg/log/in_memory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@

package log

import "testing"
import (
"testing"

"github.com/stretchr/testify/require"
)

func TestInMemoryLoggerFollowInterfaces(t *testing.T) {
t.Run("Default constructor", func(t *testing.T) {
Expand All @@ -25,3 +29,48 @@ func TestInMemoryLoggerFollowInterfaces(t *testing.T) {
assertFollowAllInterfaces(t, NewInMemoryLoggerWithParent(NewDummyLogger(true)))
})
}

func TestInMemoryLoggerProcessLogger(t *testing.T) {
assertAll := func(t *testing.T, logger *InMemoryLogger, expected []string) {
for _, prefix := range expected {
matches, err := logger.AllMatches(&Match{
Prefix: []string{prefix},
})

require.NoError(t, err)
require.Len(t, matches, 1, "should only have one match for %s", prefix)
require.Equal(t, prefix, matches[0])
}
}

t.Run("Success", func(t *testing.T) {
logger := NewInMemoryLoggerWithParent(NewPrettyLogger(LoggerOptions{IsDebug: true}))
processLogger := logger.ProcessLogger()

processLogger.ProcessStart("My process")
logger.InfoF("Do something")
processLogger.ProcessEnd()

assertAll(t, logger, []string{
"Start process: My process",
"Do something\n",
"End process",
})
})

t.Run("Failed", func(t *testing.T) {
logger := NewInMemoryLoggerWithParent(NewPrettyLogger(LoggerOptions{IsDebug: true})).
WithErrorPrefix("Error")
processLogger := logger.ProcessLogger()

processLogger.ProcessStart("My failed process")
logger.WarnF("Error!")
processLogger.ProcessFail()

assertAll(t, logger, []string{
"Start process: My failed process",
"Error!\n",
"Error: Fail process",
})
})
}