| 
									
										
										
										
											2024-02-04 18:19:19 -06:00
										 |  |  | package config | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/stretchr/testify/assert" | 
					
						
							|  |  |  | 	"github.com/stretchr/testify/require" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestLoad(t *testing.T) { | 
					
						
							|  |  |  | 	f, _ := os.CreateTemp("", "test") | 
					
						
							|  |  |  | 	ConfigPath = f.Name() | 
					
						
							| 
									
										
										
										
											2024-02-10 11:06:00 -06:00
										 |  |  | 	defer f.Close() | 
					
						
							| 
									
										
										
										
											2024-02-04 18:19:19 -06:00
										 |  |  | 	fmt.Fprint(f, `[input] | 
					
						
							|  |  |  | ext = "log"`) | 
					
						
							|  |  |  | 	c, err := Load() | 
					
						
							|  |  |  | 	require.NoError(t, err) | 
					
						
							|  |  |  | 	assert.Equal(t, "log", c.Input.Ext) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-10 11:06:00 -06:00
										 |  |  | func TestLoadBadFile(t *testing.T) { | 
					
						
							|  |  |  | 	f, _ := os.CreateTemp("", "test") | 
					
						
							|  |  |  | 	ConfigPath = f.Name() | 
					
						
							|  |  |  | 	defer f.Close() | 
					
						
							|  |  |  | 	fmt.Fprint(f, `{"not":"toml"}`) | 
					
						
							|  |  |  | 	_, err := Load() | 
					
						
							|  |  |  | 	assert.Error(t, err) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-04 18:19:19 -06:00
										 |  |  | func TestLoadIgnoreMissingFile(t *testing.T) { | 
					
						
							|  |  |  | 	def, _ := DefaultConfig() | 
					
						
							|  |  |  | 	ConfigPath = "/not/a/real/file" | 
					
						
							|  |  |  | 	c, err := Load() | 
					
						
							|  |  |  | 	require.NoError(t, err) | 
					
						
							|  |  |  | 	assert.Equal(t, def, c) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2024-02-10 11:06:00 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | func TestOverride(t *testing.T) { | 
					
						
							|  |  |  | 	Overrides = map[string]string{ | 
					
						
							|  |  |  | 		"input.path": "/path/to/it", | 
					
						
							|  |  |  | 		"input.ext":  "~", | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	c, err := Load() | 
					
						
							|  |  |  | 	require.NoError(t, err) | 
					
						
							|  |  |  | 	assert.Equal(t, Overrides["input.path"], c.Input.Path) | 
					
						
							|  |  |  | 	assert.Equal(t, "txt", c.Input.Ext) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestOverrideJson(t *testing.T) { | 
					
						
							|  |  |  | 	Overrides = map[string]string{"input.ext": `{"a":"b"}`} | 
					
						
							|  |  |  | 	c, err := Load() | 
					
						
							|  |  |  | 	require.NoError(t, err) | 
					
						
							|  |  |  | 	assert.Equal(t, "txt", c.Input.Ext) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-07 21:50:51 -06:00
										 |  |  | func TestTimeParse(t *testing.T) { | 
					
						
							|  |  |  | 	Overrides = map[string]string{"input.ext": "now"} | 
					
						
							|  |  |  | 	c, err := Load() | 
					
						
							|  |  |  | 	assert.ErrorContains(t, err, "incompatible types: TOML value has type time.Time; destination has type string") | 
					
						
							|  |  |  | 	assert.Equal(t, "txt", c.Input.Ext) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2024-02-10 11:48:23 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | func TestStdoutMissing(t *testing.T) { | 
					
						
							|  |  |  | 	var oo Outputs = map[string]Output{} | 
					
						
							|  |  |  | 	std, en := oo.Stdout() | 
					
						
							|  |  |  | 	assert.False(t, en) | 
					
						
							|  |  |  | 	assert.Equal(t, Stdout{}, std) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestStdoutLoad(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2024-03-07 21:19:45 -06:00
										 |  |  | 	os.Setenv("LOG_STDOUT_FORMATTER", "json") | 
					
						
							|  |  |  | 	defer os.Unsetenv("LOG_STDOUT_FORMATTER") | 
					
						
							| 
									
										
										
										
											2024-02-10 11:48:23 -06:00
										 |  |  | 	os.Setenv("LOG_STDOUT_ENABLED", "true") | 
					
						
							|  |  |  | 	defer os.Unsetenv("LOG_STDOUT_ENABLED") | 
					
						
							|  |  |  | 	c, _ := Load() | 
					
						
							|  |  |  | 	std, en := c.Outputs.Stdout() | 
					
						
							|  |  |  | 	assert.True(t, en) | 
					
						
							| 
									
										
										
										
											2024-03-07 21:19:45 -06:00
										 |  |  | 	assert.Equal(t, "json", std.Formatter) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestFormatJson(t *testing.T) { | 
					
						
							|  |  |  | 	ff := Formatters{ | 
					
						
							|  |  |  | 		"json": map[string]any{"pretty_print": true}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	js := ff.Json() | 
					
						
							|  |  |  | 	assert.True(t, js.PrettyPrint) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ff = Formatters{} | 
					
						
							|  |  |  | 	js = ff.Json() | 
					
						
							|  |  |  | 	assert.False(t, js.PrettyPrint) | 
					
						
							| 
									
										
										
										
											2024-02-10 11:48:23 -06:00
										 |  |  | } |