mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-14 07:26:47 +00:00
* Config: fix don't create empty dir when resolving path * refactor migration of default config file * gracefully handle src == target on Move * create target directory on Move, if necessary * unify resolution of default config location * refactor the use of flagSet to be explicit * remove package variable * use empty config file path setting if not set in flags * resolve default file location the same way when showing the target and when loading default config file * don't migrate if target file is the same as source * rename configfile to configFile * add migrateConfig tests
91 lines
2.1 KiB
Go
91 lines
2.1 KiB
Go
package engine
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/config"
|
|
)
|
|
|
|
func TestLoadConfigWithSettings(t *testing.T) {
|
|
empty := ""
|
|
somePath := "somePath"
|
|
// Clean up after the tests
|
|
defer os.RemoveAll(somePath)
|
|
tests := []struct {
|
|
name string
|
|
flags []string
|
|
settings *Settings
|
|
want *string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "invalid file",
|
|
settings: &Settings{
|
|
ConfigFile: "nonExistent.json",
|
|
},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "test file",
|
|
settings: &Settings{
|
|
ConfigFile: config.TestFile,
|
|
EnableDryRun: true,
|
|
},
|
|
want: &empty,
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "data dir in settings overrides config data dir",
|
|
flags: []string{"datadir"},
|
|
settings: &Settings{
|
|
ConfigFile: config.TestFile,
|
|
DataDir: somePath,
|
|
EnableDryRun: true,
|
|
},
|
|
want: &somePath,
|
|
wantErr: false,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
tt := tt
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
// prepare the 'flags'
|
|
flagSet := make(map[string]bool)
|
|
for _, v := range tt.flags {
|
|
flagSet[v] = true
|
|
}
|
|
// Run the test
|
|
got, err := loadConfigWithSettings(tt.settings, flagSet)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("loadConfigWithSettings() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
if got != nil || tt.want != nil {
|
|
if (got == nil && tt.want != nil) || (got != nil && tt.want == nil) {
|
|
t.Errorf("loadConfigWithSettings() = is nil %v, want nil %v", got == nil, tt.want == nil)
|
|
} else if got.DataDirectory != *tt.want {
|
|
t.Errorf("loadConfigWithSettings() = %v, want %v", got.DataDirectory, *tt.want)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestStartStopDoesNotCausePanic(t *testing.T) {
|
|
t.Skip("Due to race condition with global config.Cfg being used from multiple tests and RPC server and REST proxy never properly stopped when engine.Stop() is called")
|
|
botOne, err := NewFromSettings(&Settings{
|
|
ConfigFile: config.TestFile,
|
|
EnableDryRun: true,
|
|
}, make(map[string]bool))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
if err = botOne.Start(); err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
botOne.Stop()
|
|
}
|