Remove logger and replace it with a library

This commit is contained in:
2025-04-18 12:47:47 +02:00
parent 58586395fb
commit 75bf449bed
13 changed files with 108 additions and 799 deletions

View File

@@ -1,12 +1,12 @@
package utils
import (
"cook/logger"
"fmt"
"os"
"path/filepath"
"time"
logger "git.site.quack-lab.dev/dave/cylogger"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing/object"
)

View File

@@ -1,12 +1,12 @@
package utils
import (
"cook/logger"
"fmt"
"os"
"path/filepath"
"strings"
logger "git.site.quack-lab.dev/dave/cylogger"
"github.com/bmatcuk/doublestar/v4"
"gopkg.in/yaml.v3"
)

View File

@@ -269,128 +269,6 @@ func TestAggregateGlobs(t *testing.T) {
}
}
func TestLoadCommandFromArgs(t *testing.T) {
// Save original flags
origGitFlag := *GitFlag
origResetFlag := *ResetFlag
origLogLevel := *LogLevel
// Restore original flags after test
defer func() {
*GitFlag = origGitFlag
*ResetFlag = origResetFlag
*LogLevel = origLogLevel
}()
// Test cases
tests := []struct {
name string
args []string
gitFlag bool
resetFlag bool
logLevel string
shouldError bool
}{
{
name: "Valid command",
args: []string{"pattern", "expr", "file1", "file2"},
gitFlag: false,
resetFlag: false,
logLevel: "INFO",
shouldError: false,
},
{
name: "Not enough args",
args: []string{"pattern", "expr"},
gitFlag: false,
resetFlag: false,
logLevel: "INFO",
shouldError: true,
},
{
name: "With git flag",
args: []string{"pattern", "expr", "file1"},
gitFlag: true,
resetFlag: false,
logLevel: "INFO",
shouldError: false,
},
{
name: "With reset flag (forces git flag)",
args: []string{"pattern", "expr", "file1"},
gitFlag: false,
resetFlag: true,
logLevel: "INFO",
shouldError: false,
},
{
name: "With custom log level",
args: []string{"pattern", "expr", "file1"},
gitFlag: false,
resetFlag: false,
logLevel: "DEBUG",
shouldError: false,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
// Set flags for this test case
*GitFlag = tc.gitFlag
*ResetFlag = tc.resetFlag
*LogLevel = tc.logLevel
commands, err := LoadCommandFromArgs(tc.args)
if tc.shouldError {
if err == nil {
t.Errorf("Expected an error but got none")
}
return
}
if err != nil {
t.Errorf("Unexpected error: %v", err)
return
}
if len(commands) != 1 {
t.Errorf("Expected 1 command, got %d", len(commands))
return
}
cmd := commands[0]
// Check command properties
if cmd.Regex != tc.args[0] {
t.Errorf("Expected pattern %q, got %q", tc.args[0], cmd.Regex)
}
if cmd.Lua != tc.args[1] {
t.Errorf("Expected LuaExpr %q, got %q", tc.args[1], cmd.Lua)
}
if len(cmd.Files) != len(tc.args)-2 {
t.Errorf("Expected %d files, got %d", len(tc.args)-2, len(cmd.Files))
}
// When reset is true, git should be true regardless of what was set
expectedGit := tc.gitFlag || tc.resetFlag
if cmd.Git != expectedGit {
t.Errorf("Expected Git flag %v, got %v", expectedGit, cmd.Git)
}
if cmd.Reset != tc.resetFlag {
t.Errorf("Expected Reset flag %v, got %v", tc.resetFlag, cmd.Reset)
}
if cmd.LogLevel != tc.logLevel {
t.Errorf("Expected LogLevel %q, got %q", tc.logLevel, cmd.LogLevel)
}
})
}
}
// Successfully unmarshal valid YAML data into ModifyCommand slice
func TestLoadCommandsFromCookFileSuccess(t *testing.T) {
// Arrange
@@ -556,155 +434,6 @@ func TestLoadCommandsFromCookFileLegitExample(t *testing.T) {
assert.Equal(t, "crewlayabout", commands[0].Name)
}
// Valid command with minimum 3 arguments returns a ModifyCommand slice with correct values
func TestLoadCommandFromArgsWithValidArguments(t *testing.T) {
// Setup
oldGitFlag := GitFlag
oldResetFlag := ResetFlag
oldLogLevel := LogLevel
gitValue := true
resetValue := false
logLevelValue := "info"
GitFlag = &gitValue
ResetFlag = &resetValue
LogLevel = &logLevelValue
defer func() {
GitFlag = oldGitFlag
ResetFlag = oldResetFlag
LogLevel = oldLogLevel
}()
args := []string{"*.go", "return x", "file1.go", "file2.go"}
// Execute
commands, err := LoadCommandFromArgs(args)
// Assert
assert.NoError(t, err)
assert.Len(t, commands, 1)
assert.Equal(t, "*.go", commands[0].Regex)
assert.Equal(t, "return x", commands[0].Lua)
assert.Equal(t, []string{"file1.go", "file2.go"}, commands[0].Files)
assert.Equal(t, true, commands[0].Git)
assert.Equal(t, false, commands[0].Reset)
assert.Equal(t, "info", commands[0].LogLevel)
}
// Less than 3 arguments returns an error with appropriate message
func TestLoadCommandFromArgsWithInsufficientArguments(t *testing.T) {
// Setup
oldGitFlag := GitFlag
oldResetFlag := ResetFlag
oldLogLevel := LogLevel
gitValue := false
resetValue := false
logLevelValue := "info"
GitFlag = &gitValue
ResetFlag = &resetValue
LogLevel = &logLevelValue
defer func() {
GitFlag = oldGitFlag
ResetFlag = oldResetFlag
LogLevel = oldLogLevel
}()
testCases := []struct {
name string
args []string
}{
{"empty args", []string{}},
{"one arg", []string{"*.go"}},
{"two args", []string{"*.go", "return x"}},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
// Execute
commands, err := LoadCommandFromArgs(tc.args)
// Assert
assert.Error(t, err)
assert.Nil(t, commands)
assert.Contains(t, err.Error(), "at least 3 arguments are required")
})
}
}
// Pattern, Lua, and Files fields are correctly populated from args
func TestLoadCommandFromArgsPopulatesFieldsCorrectly(t *testing.T) {
// Setup
oldGitFlag := GitFlag
oldResetFlag := ResetFlag
oldLogLevel := LogLevel
gitValue := false
resetValue := false
logLevelValue := "debug"
GitFlag = &gitValue
ResetFlag = &resetValue
LogLevel = &logLevelValue
defer func() {
GitFlag = oldGitFlag
ResetFlag = oldResetFlag
LogLevel = oldLogLevel
}()
args := []string{"*.txt", "print('Hello')", "file1.txt", "file2.txt"}
// Execute
commands, err := LoadCommandFromArgs(args)
// Assert
assert.NoError(t, err)
assert.Len(t, commands, 1)
assert.Equal(t, "*.txt", commands[0].Regex)
assert.Equal(t, "print('Hello')", commands[0].Lua)
assert.Equal(t, []string{"file1.txt", "file2.txt"}, commands[0].Files)
assert.Equal(t, false, commands[0].Git)
assert.Equal(t, false, commands[0].Reset)
assert.Equal(t, "debug", commands[0].LogLevel)
}
// Git flag is set to true when ResetFlag is true
func TestLoadCommandFromArgsSetsGitFlagWhenResetFlagIsTrue(t *testing.T) {
// Setup
oldGitFlag := GitFlag
oldResetFlag := ResetFlag
oldLogLevel := LogLevel
gitValue := false
resetValue := true
logLevelValue := "info"
GitFlag = &gitValue
ResetFlag = &resetValue
LogLevel = &logLevelValue
defer func() {
GitFlag = oldGitFlag
ResetFlag = oldResetFlag
LogLevel = oldLogLevel
}()
args := []string{"*.go", "return x", "file1.go", "file2.go"}
// Execute
commands, err := LoadCommandFromArgs(args)
// Assert
assert.NoError(t, err)
assert.Len(t, commands, 1)
assert.Equal(t, true, commands[0].Git)
}
// TODO: Figure out how to mock shit
// Can't be asked doing that right now...
// Successfully loads commands from multiple YAML files in the current directory

View File

@@ -1,9 +1,10 @@
package utils
import (
"cook/logger"
"fmt"
"sort"
logger "git.site.quack-lab.dev/dave/cylogger"
)
type ReplaceCommand struct {