@@ -3,7 +3,10 @@ package common
3
3
import (
4
4
"bytes"
5
5
"net/url"
6
+ "os"
7
+ "path"
6
8
"reflect"
9
+ "runtime"
7
10
"strings"
8
11
"testing"
9
12
"time"
@@ -950,3 +953,177 @@ func TestTimeFromUnixTimestampFloat(t *testing.T) {
950
953
t .Error ("Test failed. Common TimeFromUnixTimestampFloat. Converted invalid syntax." )
951
954
}
952
955
}
956
+
957
+ func TestGetDefaultDataDir (t * testing.T ) {
958
+ switch runtime .GOOS {
959
+ case "windows" :
960
+ dir , ok := os .LookupEnv ("APPDATA" )
961
+ if ! ok {
962
+ t .Fatal ("APPDATA is not set" )
963
+ }
964
+ dir += GetOSPathSlash () + "GoCryptoTrader"
965
+ actualOutput := GetDefaultDataDir ("windows" )
966
+ if actualOutput != dir {
967
+ t .Fatalf ("Unexpected result. Got: %v Expected: %v" , actualOutput , dir )
968
+ }
969
+ case "linux" , "darwin" :
970
+ dir , ok := os .LookupEnv ("HOME" )
971
+ if ! ok {
972
+ t .Fatal ("HOME is not set" )
973
+ }
974
+ dir += GetOSPathSlash () + ".gocryptotrader"
975
+ actualOutput := GetDefaultDataDir (runtime .GOOS )
976
+ if actualOutput != dir {
977
+ t .Fatalf ("Unexpected result. Got: %v Expected: %v" , actualOutput , dir )
978
+ }
979
+ }
980
+ }
981
+
982
+ func TestCreateDir (t * testing.T ) {
983
+ switch runtime .GOOS {
984
+ case "windows" :
985
+ // test for a directory that exists
986
+ dir , ok := os .LookupEnv ("TEMP" )
987
+ if ! ok {
988
+ t .Fatal ("LookupEnv failed. TEMP is not set" )
989
+ }
990
+ err := CreateDir (dir )
991
+ if err != nil {
992
+ t .Fatalf ("CreateDir failed. Err: %v" , err )
993
+ }
994
+
995
+ // test for creating a directory
996
+ dir , ok = os .LookupEnv ("APPDATA" )
997
+ if ! ok {
998
+ t .Fatal ("LookupEnv failed. APPDATA is not set" )
999
+ }
1000
+ dir = dir + GetOSPathSlash () + "GoCryptoTrader\\ TestFileASDFG"
1001
+ err = CreateDir (dir )
1002
+ if err != nil {
1003
+ t .Fatalf ("CreateDir failed. Err: %v" , err )
1004
+ }
1005
+ err = os .Remove (dir )
1006
+ if err != nil {
1007
+ t .Fatalf ("Failed to remove file. Err: %v" , err )
1008
+ }
1009
+
1010
+ // test for looking up an invalid directory
1011
+ err = CreateDir ("" )
1012
+ if err == nil {
1013
+ t .Fatal ("expected err due to invalid path, but got nil" )
1014
+ }
1015
+ case "linux" :
1016
+ // same tests for linux
1017
+ dir := "/home"
1018
+ err := CreateDir (dir )
1019
+ if err != nil {
1020
+ t .Fatalf ("CreateDir failed. Err: %v" , err )
1021
+ }
1022
+ var ok bool
1023
+ dir , ok = os .LookupEnv ("HOME" )
1024
+ if ! ok {
1025
+ t .Fatal ("LookupEnv of HOME failed" )
1026
+ }
1027
+ dir = path .Join (dir , ".gocryptotrader" , "TestFileASFG" )
1028
+ err = CreateDir (dir )
1029
+ if err != nil {
1030
+ t .Errorf ("CreateDir failed. Err: %s" , err )
1031
+ }
1032
+ err = os .Remove (dir )
1033
+ if err != nil {
1034
+ t .Fatalf ("Failed to remove file. Err: %v" , err )
1035
+ }
1036
+
1037
+ // test for creating an invalid directory
1038
+ err = CreateDir ("" )
1039
+ if err == nil {
1040
+ t .Fatal ("expected err due to invalid path, but got nil" )
1041
+ }
1042
+
1043
+ case "darwin" :
1044
+ // same test except for the invalid directory
1045
+ dir := "/home"
1046
+ err := CreateDir (dir )
1047
+ if err != nil {
1048
+ t .Fatalf ("CreateDir failed. Err: %v" , err )
1049
+ }
1050
+ var ok bool
1051
+ dir , ok = os .LookupEnv ("HOME" )
1052
+ if ! ok {
1053
+ t .Fatal ("LookupEnv of HOME failed" )
1054
+ }
1055
+ dir = path .Join (dir , ".gocryptotrader" , "TestFileASFG" )
1056
+ err = CreateDir (dir )
1057
+ if err != nil {
1058
+ t .Fatalf ("CreateDir failed. Err: %s" , err )
1059
+ }
1060
+ err = os .Remove (dir )
1061
+ if err != nil {
1062
+ t .Fatalf ("Failed to remove file. Err: %v" , err )
1063
+ }
1064
+
1065
+ err = CreateDir (":" )
1066
+ if err == nil {
1067
+ t .Fatal ("expected err due to invalid path, but got nil" )
1068
+ }
1069
+ }
1070
+ }
1071
+
1072
+ func TestChangePerm (t * testing.T ) {
1073
+ switch runtime .GOOS {
1074
+ case "linux" , "darwin" :
1075
+ if runtime .GOOS == "linux" {
1076
+ err := ChangePerm ("" )
1077
+ if err == nil {
1078
+ t .Fatal ("expected an error on non-existent path" )
1079
+ }
1080
+ } else {
1081
+ err := ChangePerm (":" )
1082
+ if err == nil {
1083
+ t .Fatal ("expected an error on non-existent path" )
1084
+ }
1085
+ }
1086
+ err := os .Mkdir (GetDefaultDataDir (runtime .GOOS )+ GetOSPathSlash ()+ "TestFileASDFGHJ" , 0777 )
1087
+ if err != nil {
1088
+ t .Fatalf ("Mkdir failed. Err: %v" , err )
1089
+ }
1090
+ err = ChangePerm (GetDefaultDataDir (runtime .GOOS ))
1091
+ if err != nil {
1092
+ t .Fatal ("ChangePerm was unsuccessful" )
1093
+ }
1094
+ var a os.FileInfo
1095
+ a , err = os .Stat (GetDefaultDataDir (runtime .GOOS ) + GetOSPathSlash () + "TestFileASDFGHJ" )
1096
+ if err != nil {
1097
+ t .Fatalf ("os.Stat failed. Err: %v" , err )
1098
+ }
1099
+ if a .Mode ().Perm () != 0770 {
1100
+ t .Fatalf ("expected file permissions differ. expecting 0770 got %#o" , a .Mode ().Perm ())
1101
+ }
1102
+ err = RemoveFile (GetDefaultDataDir (runtime .GOOS ) + GetOSPathSlash () + "TestFileASDFGHJ" )
1103
+ if err != nil {
1104
+ t .Fatalf ("RemoveFile failed. Err: %v" , err )
1105
+ }
1106
+
1107
+ case "windows" :
1108
+ err := ChangePerm ("*" )
1109
+ if err == nil {
1110
+ t .Fatal ("expected an error on non-existent path" )
1111
+ }
1112
+ err = os .Mkdir (GetDefaultDataDir (runtime .GOOS )+ GetOSPathSlash ()+ "TestFileASDFGHJ" , 0777 )
1113
+ if err != nil {
1114
+ t .Fatalf ("Mkdir failed. Err: %v" , err )
1115
+ }
1116
+ err = ChangePerm (GetDefaultDataDir (runtime .GOOS ))
1117
+ if err != nil {
1118
+ t .Fatalf ("ChangePerm was unsuccessful. Err: %v" , err )
1119
+ }
1120
+ _ , err = os .Stat (GetDefaultDataDir (runtime .GOOS ) + GetOSPathSlash () + "TestFileASDFGHJ" )
1121
+ if err != nil {
1122
+ t .Fatalf ("os.Stat failed. Err: %v" , err )
1123
+ }
1124
+ err = RemoveFile (GetDefaultDataDir (runtime .GOOS ) + GetOSPathSlash () + "TestFileASDFGHJ" )
1125
+ if err != nil {
1126
+ t .Fatalf ("RemoveFile failed. Err: %v" , err )
1127
+ }
1128
+ }
1129
+ }
0 commit comments