forked from thrasher-corp/gocryptotrader
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Config/Engine: Add data directory to config.json (thrasher-corp#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
- Loading branch information
Showing
6 changed files
with
165 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
{ | ||
"name": "Skynet", | ||
"dataDirectory": "", | ||
"encryptConfig": 0, | ||
"globalHTTPTimeout": 15000000000, | ||
"database": { | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) | ||
} | ||
} | ||
}) | ||
} | ||
} |