mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 11:03:34 +00:00
81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestConfig_Save(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// Create a temporary directory for the test
|
|
tmpDir := t.TempDir()
|
|
|
|
// Change to temp directory so relative paths resolve correctly
|
|
originalDir, err := os.Getwd()
|
|
if err != nil {
|
|
t.Fatalf("Failed to get current directory: %v", err)
|
|
}
|
|
defer func() {
|
|
if err := os.Chdir(originalDir); err != nil {
|
|
t.Logf("Failed to restore original directory: %v", err)
|
|
}
|
|
}()
|
|
|
|
tests := []struct {
|
|
name string
|
|
configPath string
|
|
contextName string
|
|
expectFileAt string // Expected file location for verification
|
|
useAbsolutePath bool // Whether to use absolute path for expectFileAt
|
|
}{
|
|
{
|
|
name: "relative path without prefix",
|
|
configPath: "test-config.yaml",
|
|
contextName: "test",
|
|
},
|
|
{
|
|
name: "relative path with prefix",
|
|
configPath: "./test-config-2.yaml",
|
|
contextName: "test2",
|
|
},
|
|
{
|
|
name: "absolute path",
|
|
configPath: filepath.Join(tmpDir, "absolute-config.yaml"),
|
|
contextName: "test3",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if err := os.Chdir(tmpDir); err != nil {
|
|
t.Fatalf("Failed to change to temp directory: %v", err)
|
|
}
|
|
|
|
cfg := &Config{
|
|
CurrentContext: tt.contextName,
|
|
Contexts: map[string]*Context{
|
|
tt.contextName: {
|
|
Name: tt.contextName,
|
|
},
|
|
},
|
|
path: tt.configPath,
|
|
}
|
|
|
|
// This should not fail when saving the config
|
|
err := cfg.Save()
|
|
if err != nil {
|
|
t.Errorf("Expected no error when saving config, got: %v", err)
|
|
}
|
|
|
|
// Verify the file was created
|
|
if _, err := os.Stat(tt.configPath); os.IsNotExist(err) {
|
|
t.Errorf("Config file was not created at expected path: %s", tt.configPath)
|
|
}
|
|
})
|
|
}
|
|
}
|