From 3c3274b6682de53bb445a1360c57eb8bbbf0137c Mon Sep 17 00:00:00 2001 From: Sylvain <1552102+sgaunet@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:22:56 +0100 Subject: [PATCH] refactor(config): remove unused buffer configuration parameter Remove the buffer field from OutputConfig as it was parsed but never actually used in the processing code. This prevents user confusion from setting buffer values that have no effect. Changes: - Remove Buffer field from OutputConfig struct - Remove buffer validation logic - Remove ErrInvalidBufferMode error type - Remove buffer from default configuration - Remove buffer from example YAML files - Remove buffer-related tests - Simplify output validation to only check format Breaking change: Users with "buffer:" in config files will get YAML unknown field warnings. This is acceptable since the field never actually worked and this is a pre-1.0 project. Default behavior (line buffering) remains unchanged. Closes #16 --- examples/advanced.yaml | 1 - examples/basic.yaml | 1 - examples/minimal.yaml | 1 - internal/testutils/helpers.go | 1 - pkg/apperrors/apperrors.go | 1 - pkg/apperrors/apperrors_test.go | 6 --- pkg/config/config.go | 2 - pkg/config/config_test.go | 3 -- pkg/config/validation.go | 7 ---- pkg/config/validation_test.go | 67 ++------------------------------- 10 files changed, 3 insertions(+), 87 deletions(-) diff --git a/examples/advanced.yaml b/examples/advanced.yaml index 5da8aca..e340a50 100644 --- a/examples/advanced.yaml +++ b/examples/advanced.yaml @@ -25,7 +25,6 @@ prefix: output: format: "text" - buffer: "line" log_level: default_stdout: "INFO" diff --git a/examples/basic.yaml b/examples/basic.yaml index ce777f9..447cdad 100644 --- a/examples/basic.yaml +++ b/examples/basic.yaml @@ -23,7 +23,6 @@ prefix: output: format: "text" - buffer: "line" log_level: default_stdout: "INFO" diff --git a/examples/minimal.yaml b/examples/minimal.yaml index 3bab8c2..d537b1c 100644 --- a/examples/minimal.yaml +++ b/examples/minimal.yaml @@ -17,7 +17,6 @@ prefix: output: format: "text" - buffer: "line" log_level: default_stdout: "INFO" diff --git a/internal/testutils/helpers.go b/internal/testutils/helpers.go index be2b550..cf08b0e 100644 --- a/internal/testutils/helpers.go +++ b/internal/testutils/helpers.go @@ -191,7 +191,6 @@ prefix: output: format: "text" - buffer: "line" log_level: default_stdout: "INFO" diff --git a/pkg/apperrors/apperrors.go b/pkg/apperrors/apperrors.go index ae9bcc1..81cd8e7 100644 --- a/pkg/apperrors/apperrors.go +++ b/pkg/apperrors/apperrors.go @@ -13,7 +13,6 @@ var ( ErrInvalidUserFormat = errors.New("invalid user format") ErrInvalidPIDFormat = errors.New("invalid PID format") ErrInvalidOutputFormat = errors.New("invalid output format") - ErrInvalidBufferMode = errors.New("invalid buffer mode") ErrInvalidStdoutLogLevel = errors.New("invalid default stdout log level") ErrInvalidStderrLogLevel = errors.New("invalid default stderr log level") ErrInvalidLogLevel = errors.New("invalid log level") diff --git a/pkg/apperrors/apperrors_test.go b/pkg/apperrors/apperrors_test.go index 2ad0f9e..55db7a3 100644 --- a/pkg/apperrors/apperrors_test.go +++ b/pkg/apperrors/apperrors_test.go @@ -46,11 +46,6 @@ func TestConfigurationErrors(t *testing.T) { err: ErrInvalidOutputFormat, expected: "invalid output format", }, - { - name: "ErrInvalidBufferMode", - err: ErrInvalidBufferMode, - expected: "invalid buffer mode", - }, { name: "ErrInvalidStdoutLogLevel", err: ErrInvalidStdoutLogLevel, @@ -245,7 +240,6 @@ func TestErrorWrapping(t *testing.T) { ErrInvalidUserFormat, ErrInvalidPIDFormat, ErrInvalidOutputFormat, - ErrInvalidBufferMode, ErrInvalidStdoutLogLevel, ErrInvalidStderrLogLevel, ErrInvalidLogLevel, diff --git a/pkg/config/config.go b/pkg/config/config.go index 5102075..78fb02a 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -57,7 +57,6 @@ type PIDConfig struct { // OutputConfig contains output formatting configuration. type OutputConfig struct { Format string `yaml:"format"` - Buffer string `yaml:"buffer"` } // LogLevelConfig contains log level detection configuration. @@ -133,7 +132,6 @@ func getDefaultConfig() *Config { }, Output: OutputConfig{ Format: "text", - Buffer: "line", }, LogLevel: LogLevelConfig{ DefaultStdout: "INFO", diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index f7de6c0..84cf4bf 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -31,7 +31,6 @@ func TestLoadConfig_DefaultConfig(t *testing.T) { assert.True(t, cfg.Prefix.PID.Enabled) assert.Equal(t, "decimal", cfg.Prefix.PID.Format) assert.Equal(t, "text", cfg.Output.Format) - assert.Equal(t, "line", cfg.Output.Buffer) assert.Equal(t, "INFO", cfg.LogLevel.DefaultStdout) assert.Equal(t, "ERROR", cfg.LogLevel.DefaultStderr) assert.True(t, cfg.LogLevel.Detection.Enabled) @@ -57,7 +56,6 @@ func TestLoadConfig_WithValidConfigFile(t *testing.T) { assert.True(t, cfg.Prefix.PID.Enabled) assert.Equal(t, "decimal", cfg.Prefix.PID.Format) assert.Equal(t, "text", cfg.Output.Format) - assert.Equal(t, "line", cfg.Output.Buffer) assert.Equal(t, "INFO", cfg.LogLevel.DefaultStdout) assert.Equal(t, "ERROR", cfg.LogLevel.DefaultStderr) assert.True(t, cfg.LogLevel.Detection.Enabled) @@ -416,7 +414,6 @@ func TestGetDefaultConfig(t *testing.T) { assert.True(t, cfg.Prefix.PID.Enabled) assert.Equal(t, "decimal", cfg.Prefix.PID.Format) assert.Equal(t, "text", cfg.Output.Format) - assert.Equal(t, "line", cfg.Output.Buffer) assert.Equal(t, "INFO", cfg.LogLevel.DefaultStdout) assert.Equal(t, "ERROR", cfg.LogLevel.DefaultStderr) assert.True(t, cfg.LogLevel.Detection.Enabled) diff --git a/pkg/config/validation.go b/pkg/config/validation.go index cafcc9b..e846e74 100644 --- a/pkg/config/validation.go +++ b/pkg/config/validation.go @@ -130,13 +130,6 @@ func (c *Config) validateOutput() error { apperrors.ErrInvalidOutputFormat, c.Output.Format, strings.Join(validFormats, ", ")) } - validBuffers := []string{"line", "none", "full"} - - if !slices.Contains(validBuffers, c.Output.Buffer) { - return fmt.Errorf("%w '%s', valid modes: %s", - apperrors.ErrInvalidBufferMode, c.Output.Buffer, strings.Join(validBuffers, ", ")) - } - return nil } diff --git a/pkg/config/validation_test.go b/pkg/config/validation_test.go index e56ff09..b4b7963 100644 --- a/pkg/config/validation_test.go +++ b/pkg/config/validation_test.go @@ -268,46 +268,27 @@ func TestConfig_ValidateOutput(t *testing.T) { tests := []struct { name string format string - buffer string expectError bool expectedErr error }{ { - name: "valid text format with line buffer", + name: "valid text format", format: "text", - buffer: "line", }, { - name: "valid json format with none buffer", + name: "valid json format", format: "json", - buffer: "none", }, { - name: "valid structured format with full buffer", + name: "valid structured format", format: "structured", - buffer: "full", }, { name: "invalid format", format: "invalid", - buffer: "line", expectError: true, expectedErr: apperrors.ErrInvalidOutputFormat, }, - { - name: "invalid buffer", - format: "text", - buffer: "invalid", - expectError: true, - expectedErr: apperrors.ErrInvalidBufferMode, - }, - { - name: "both invalid", - format: "invalid", - buffer: "invalid", - expectError: true, - expectedErr: apperrors.ErrInvalidOutputFormat, // First error encountered - }, } for _, tt := range tests { @@ -316,7 +297,6 @@ func TestConfig_ValidateOutput(t *testing.T) { cfg := getDefaultConfig() cfg.Output.Format = tt.format - cfg.Output.Buffer = tt.buffer err := cfg.Validate() @@ -535,7 +515,6 @@ func TestConfig_ValidateIntegration(t *testing.T) { }, Output: OutputConfig{ Format: "invalid", // Invalid: not text/json/structured - Buffer: "invalid", // Invalid: not line/none/full }, LogLevel: LogLevelConfig{ DefaultStdout: "INVALID", // Invalid: not a valid level @@ -968,46 +947,6 @@ func TestConfig_ValidateColors_CaseInsensitivity(t *testing.T) { } } -// TestConfig_ValidateBufferMode_AllModes tests all valid and invalid buffer modes. -func TestConfig_ValidateBufferMode_AllModes(t *testing.T) { - t.Parallel() - - tests := []struct { - name string - bufferMode string - expectError bool - }{ - // Valid modes - {name: "valid line", bufferMode: "line", expectError: false}, - {name: "valid none", bufferMode: "none", expectError: false}, - {name: "valid full", bufferMode: "full", expectError: false}, - // Invalid modes - {name: "invalid auto", bufferMode: "auto", expectError: true}, - {name: "invalid block", bufferMode: "block", expectError: true}, - {name: "invalid empty", bufferMode: "", expectError: true}, - {name: "invalid mixed case", bufferMode: "Line", expectError: true}, - {name: "invalid uppercase", bufferMode: "LINE", expectError: true}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - cfg := getDefaultConfig() - cfg.Output.Buffer = tt.bufferMode - - err := cfg.Validate() - - if tt.expectError { - assert.Error(t, err) - assert.ErrorIs(t, err, apperrors.ErrInvalidBufferMode) - } else { - assert.NoError(t, err) - } - }) - } -} - // TestConfig_ValidateOutputFormat_AllFormats tests all valid and invalid output formats. func TestConfig_ValidateOutputFormat_AllFormats(t *testing.T) { t.Parallel()