mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
Config/Engine: Add data directory to config.json (#549)
* add data directory to config.json * fix quality check issues * adjust data directory only when explicitly set * unexport ValidateSettings * process flags earlier so they can also be used when loading config * fix test depends on flags * rename config.DataDir to DataDirectory * also don't omit in JSON if empty * datadir flag induces dry run * log warning * enable parallel for sub tests * leave data dir empty in example config * remove parallel for loadConfigWithSettings * create a new config object instead of using a shared one * remove a test that potentially reads user file * rename test methods to MixedCaps * clean up test dir after engine tests * use global config variable
This commit is contained in:
73
engine/engine_test.go
Normal file
73
engine/engine_test.go
Normal file
@@ -0,0 +1,73 @@
|
||||
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)
|
||||
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)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user