|
@@ -1,6 +1,7 @@
|
|
|
package settings
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"os"
|
|
|
"path/filepath"
|
|
|
"testing"
|
|
@@ -8,6 +9,75 @@ import (
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
)
|
|
|
|
|
|
+// GIVEN a non existing build dir in the config
|
|
|
+// WHEN the config is loaded
|
|
|
+// THEN the directory should be created
|
|
|
+func TestNewConfig(t *testing.T) {
|
|
|
+ configDir, err := os.MkdirTemp(os.TempDir(), "yay-config-home")
|
|
|
+ assert.NoError(t, err)
|
|
|
+ err = os.MkdirAll(filepath.Join(configDir, "yay"), 0o755)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ os.Setenv("XDG_CONFIG_HOME", configDir)
|
|
|
+
|
|
|
+ cacheDir, err := os.MkdirTemp(os.TempDir(), "yay-cache-home")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ config := map[string]string{"BuildDir": filepath.Join(cacheDir, "test-build-dir")}
|
|
|
+
|
|
|
+ f, err := os.Create(filepath.Join(configDir, "yay", "config.json"))
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ defer f.Close()
|
|
|
+
|
|
|
+ configJSON, _ := json.Marshal(config)
|
|
|
+ _, err = f.WriteString(string(configJSON))
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ newConfig, err := NewConfig("v1.0.0")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ assert.Equal(t, filepath.Join(cacheDir, "test-build-dir"), newConfig.BuildDir)
|
|
|
+
|
|
|
+ _, err = os.Stat(filepath.Join(cacheDir, "test-build-dir"))
|
|
|
+ assert.NoError(t, err)
|
|
|
+}
|
|
|
+
|
|
|
+// GIVEN a non existing build dir in the config and AURDEST set to a non-existing folder
|
|
|
+// WHEN the config is loaded
|
|
|
+// THEN the directory of AURDEST should be created and selected
|
|
|
+func TestNewConfigAURDEST(t *testing.T) {
|
|
|
+ configDir, err := os.MkdirTemp(os.TempDir(), "yay-config-home")
|
|
|
+ assert.NoError(t, err)
|
|
|
+ err = os.MkdirAll(filepath.Join(configDir, "yay"), 0o755)
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ os.Setenv("XDG_CONFIG_HOME", configDir)
|
|
|
+
|
|
|
+ cacheDir, err := os.MkdirTemp(os.TempDir(), "yay-cache-home")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ config := map[string]string{"BuildDir": filepath.Join(cacheDir, "test-other-dir")}
|
|
|
+ os.Setenv("AURDEST", filepath.Join(cacheDir, "test-build-dir"))
|
|
|
+
|
|
|
+ f, err := os.Create(filepath.Join(configDir, "yay", "config.json"))
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ defer f.Close()
|
|
|
+
|
|
|
+ configJSON, _ := json.Marshal(config)
|
|
|
+ _, err = f.WriteString(string(configJSON))
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ newConfig, err := NewConfig("v1.0.0")
|
|
|
+ assert.NoError(t, err)
|
|
|
+
|
|
|
+ assert.Equal(t, filepath.Join(cacheDir, "test-build-dir"), newConfig.BuildDir)
|
|
|
+
|
|
|
+ _, err = os.Stat(filepath.Join(cacheDir, "test-build-dir"))
|
|
|
+ assert.NoError(t, err)
|
|
|
+}
|
|
|
+
|
|
|
// GIVEN default config
|
|
|
// WHEN setPrivilegeElevator gets called
|
|
|
// THEN sudobin should stay as "sudo" (given sudo exists)
|