@@ -6,103 +6,89 @@ import (
6
6
"time"
7
7
8
8
"github.com/arduino/go-paths-helper"
9
- "github.com/sirupsen/logrus"
10
9
"github.com/stretchr/testify/assert"
11
10
)
12
11
13
- func TestGetConfigPath (t * testing.T ) {
14
- t .Run ("read config.ini from ARDUINO_CREATE_AGENT_CONFIG" , func (t * testing.T ) {
15
- os .Setenv ("ARDUINO_CREATE_AGENT_CONFIG" , "./testdata/fromenv/config.ini" )
16
- defer os .Unsetenv ("ARDUINO_CREATE_AGENT_CONFIG" )
17
- configPath := GetConfigPath ()
18
- assert .Equal (t , "./testdata/fromenv/config.ini" , configPath .String ())
19
- })
20
-
21
- t .Run ("panic if config.ini does not exist" , func (t * testing.T ) {
22
- os .Setenv ("ARDUINO_CREATE_AGENT_CONFIG" , "./testdata/nonexistent_config.ini" )
23
- defer os .Unsetenv ("ARDUINO_CREATE_AGENT_CONFIG" )
24
-
25
- defer func () {
26
- if r := recover (); r != nil {
27
- entry , ok := r .(* logrus.Entry )
28
- if ! ok {
29
- t .Errorf ("Expected panic of type *logrus.Entry but got %T" , r )
30
- } else {
31
- assert .Equal (t , "config from env var ./testdata/nonexistent_config.ini does not exists" , entry .Message )
32
- }
33
- } else {
34
- t .Errorf ("Expected panic but did not get one" )
35
- }
36
- }()
37
-
38
- GetConfigPath ()
39
- })
40
-
41
- t .Run ("read config.ini from $HOME/.config/ArduinoCreateAgent folder" , func (t * testing.T ) {
42
- os .Setenv ("HOME" , "./testdata/home" )
43
- defer os .Unsetenv ("HOME" )
44
- configPath := GetConfigPath ()
45
- assert .Equal (t , "testdata/home/.config/ArduinoCreateAgent/config.ini" , configPath .String ())
46
- })
47
-
48
- t .Run ("legacy config are copied to new location" , func (t * testing.T ) {
49
-
50
- createLegacyConfig := func () string {
51
- // Create a "legacy" config.ini in the same directory as the binary executable
52
- src , err := os .Executable ()
53
- if err != nil {
54
- t .Fatal (err )
55
- }
56
- legacyConfigPath , err := paths .New (src ).Parent ().Join ("config.ini" ).Create ()
57
- if err != nil {
58
- t .Fatal (err )
59
- }
60
- // adding a timestamp to the content to make it unique
61
- c := "hostname = legacy-config-file-" + time .Now ().String ()
62
- n , err := legacyConfigPath .WriteString (c )
63
- if err != nil || n <= 0 {
64
- t .Fatalf ("Failed to write legacy config file: %v" , err )
65
- }
66
- return c
67
- }
68
-
69
- wantContent := createLegacyConfig ()
70
-
71
- // Expectation: it copies the "legacy" config.ini into the location pointed by $HOME
72
- os .Setenv ("HOME" , "./testdata/fromlegacy" )
73
- defer os .Unsetenv ("HOME" )
74
-
75
- // remove any existing config.ini in the into the location pointed by $HOME
76
- err := os .Remove ("./testdata/fromlegacy/.config/ArduinoCreateAgent/config.ini" )
77
- if err != nil && ! os .IsNotExist (err ) {
78
- t .Fatal (err )
79
- }
80
-
81
- configPath := GetConfigPath ()
82
- assert .Equal (t , "testdata/fromlegacy/.config/ArduinoCreateAgent/config.ini" , configPath .String ())
83
-
84
- given , err := paths .New (configPath .String ()).ReadFile ()
85
- assert .Nil (t , err )
86
- assert .Equal (t , wantContent , string (given ))
87
- })
88
-
89
- t .Run ("write the default config.ini file" , func (t * testing.T ) {
90
- os .Setenv ("HOME" , "./testdata/fromdefault" )
91
- os .Unsetenv ("ARDUINO_CREATE_AGENT_CONFIG" )
92
-
93
- // ensure the config.ini does not exist in the target directory
94
- os .Remove ("./testdata/fromdefault/.config/ArduinoCreateAgent/config.ini" )
95
-
96
- configPath := GetConfigPath ()
97
-
98
- assert .Equal (t , "testdata/fromdefault/.config/ArduinoCreateAgent/config.ini" , configPath .String ())
99
-
100
- givenContent , err := paths .New (configPath .String ()).ReadFile ()
101
- if err != nil {
102
- t .Fatal (err )
103
- }
104
-
105
- assert .Equal (t , configContent , givenContent )
106
- })
12
+ func TestGetConfigPathFromXDG_CONFIG_HOME (t * testing.T ) {
13
+ // read config from $XDG_CONFIG_HOME/ArduinoCreateAgent/config.ini
14
+ os .Setenv ("XDG_CONFIG_HOME" , "./testdata/fromxdghome" )
15
+ defer os .Unsetenv ("XDG_CONFIG_HOME" )
16
+ configPath := GetConfigPath ()
17
+ assert .Equal (t , "testdata/fromxdghome/ArduinoCreateAgent/config.ini" , configPath .String ())
18
+ }
19
+
20
+ func TestGetConfigPathFromHOME (t * testing.T ) {
21
+ // Test case 2: read config from $HOME/.config/ArduinoCreateAgent/config.ini "
22
+ os .Setenv ("HOME" , "./testdata/fromhome" )
23
+ defer os .Unsetenv ("HOME" )
24
+ configPath := GetConfigPath ()
25
+ assert .Equal (t , "testdata/fromhome/.config/ArduinoCreateAgent/config.ini" , configPath .String ())
26
+
27
+ }
28
+
29
+ func TestGetConfigPathFromARDUINO_CREATE_AGENT_CONFIG (t * testing.T ) {
30
+ // read config from ARDUINO_CREATE_AGENT_CONFIG/config.ini"
31
+ os .Setenv ("HOME" , "./fromhome" )
32
+ os .Setenv ("ARDUINO_CREATE_AGENT_CONFIG" , "./testdata/fromenv/config.ini" )
33
+ defer os .Unsetenv ("ARDUINO_CREATE_AGENT_CONFIG" )
34
+
35
+ configPath := GetConfigPath ()
36
+ assert .Equal (t , "./testdata/fromenv/config.ini" , configPath .String ())
37
+ }
107
38
39
+ func TestGetConfigPathFromLegacyConfig (t * testing.T ) {
40
+ // If no config is found, copy the legacy config to the new location
41
+ src , err := os .Executable ()
42
+ if err != nil {
43
+ t .Fatal (err )
44
+ }
45
+ legacyConfigPath , err := paths .New (src ).Parent ().Join ("config.ini" ).Create ()
46
+ if err != nil {
47
+ t .Fatal (err )
48
+ }
49
+ // adding a timestamp to the content to make it unique
50
+ legacyContent := "hostname = legacy-config-file-" + time .Now ().String ()
51
+ n , err := legacyConfigPath .WriteString (legacyContent )
52
+ if err != nil || n <= 0 {
53
+ t .Fatalf ("Failed to write legacy config file: %v" , err )
54
+ }
55
+
56
+ // remove any existing config.ini in the into the location pointed by $HOME
57
+ err = os .Remove ("./testdata/fromlegacy/.config/ArduinoCreateAgent/config.ini" )
58
+ if err != nil && ! os .IsNotExist (err ) {
59
+ t .Fatal (err )
60
+ }
61
+
62
+ // Expectation: it copies the "legacy" config.ini into the location pointed by $HOME
63
+ os .Setenv ("HOME" , "./testdata/fromlegacy" )
64
+ defer os .Unsetenv ("HOME" )
65
+
66
+ configPath := GetConfigPath ()
67
+ assert .Equal (t , "testdata/fromlegacy/.config/ArduinoCreateAgent/config.ini" , configPath .String ())
68
+
69
+ given , err := paths .New (configPath .String ()).ReadFile ()
70
+ assert .Nil (t , err )
71
+ assert .Equal (t , legacyContent , string (given ))
108
72
}
73
+
74
+ // func TestGetConfigPathCreateDefaultConfig(t *testing.T) {
75
+ // os.Setenv("HOME", "./testdata/noconfig")
76
+ // os.Unsetenv("ARDUINO_CREATE_AGENT_CONFIG")
77
+
78
+ // // ensure the config.ini does not exist in HOME directory
79
+ // os.Remove("./testdata/noconfig/.config/ArduinoCreateAgent/config.ini")
80
+ // // ensure the config.ini does not exist in target directory
81
+ // os.Remove("./testdata/fromdefault/.config/ArduinoCreateAgent/config.ini")
82
+
83
+ // configPath := GetConfigPath()
84
+
85
+ // assert.Equal(t, "testdata/fromdefault/.config/ArduinoCreateAgent/config.ini", configPath.String())
86
+
87
+ // givenContent, err := paths.New(configPath.String()).ReadFile()
88
+ // if err != nil {
89
+ // t.Fatal(err)
90
+ // }
91
+
92
+ // assert.Equal(t, string(configContent), string(givenContent))
93
+
94
+ // }
0 commit comments