From e3ac896ecfc579794b912bbb0d474c7a4aa76e43 Mon Sep 17 00:00:00 2001 From: James Devenish Date: Thu, 17 Oct 2024 14:38:56 +1100 Subject: [PATCH] config_file.go: Parameterise filename for unit testing (fix #68) --- config.go | 12 ++++++++++-- config_file.go | 12 ++++++++---- main.go | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/config.go b/config.go index 6f28c2b..abaa337 100644 --- a/config.go +++ b/config.go @@ -58,9 +58,17 @@ var DefaultKeymaps = Keymaps{ Quit: []string{"q", "ctrl+c", "esc"}, } -func LoadConfig(tzConfigs []string) (*Config, error) { +func LoadDefaultConfig(tzConfigs []string) (*Config, error) { + fileName, fileError := DefaultConfigFile() + if fileError != nil { + return nil, fmt.Errorf("File error: %w", fileError) + } + return LoadConfig(*fileName, tzConfigs) +} + +func LoadConfig(tomlFile string, tzConfigs []string) (*Config, error) { // Apply config file first - fileConfig, fileError := LoadConfigFile() + fileConfig, fileError := LoadConfigFile(tomlFile) if fileError != nil { return nil, fmt.Errorf("File error: %w", fileError) } diff --git a/config_file.go b/config_file.go index 3515841..4908436 100644 --- a/config_file.go +++ b/config_file.go @@ -56,16 +56,20 @@ func ReadZonesFromFile(now time.Time, zoneConf ConfigFileZone) (*Zone, error) { }, nil } -func LoadConfigFile() (*Config, error) { - conf := Config{} - +func DefaultConfigFile() (*string, error) { // Return early if we can't find a home dir. homeDir, err := os.UserHomeDir() if err != nil { - return &conf, nil + return nil, err } configFilePath := filepath.Join(homeDir, ".config", "tz", "conf.toml") + return &configFilePath, nil +} + +func LoadConfigFile(configFilePath string) (*Config, error) { + conf := Config{} + configFile, err := os.ReadFile(configFilePath) if err != nil { // Ignore unreadable config file. diff --git a/main.go b/main.go index 87afe7d..00eb8c1 100644 --- a/main.go +++ b/main.go @@ -174,7 +174,7 @@ func main() { os.Exit(0) } - config, err := LoadConfig(flag.Args()) + config, err := LoadDefaultConfig(flag.Args()) if err != nil { fmt.Fprintf(os.Stderr, "Config error: %s\n", err) os.Exit(2)