-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall_test.go
More file actions
112 lines (94 loc) · 3.85 KB
/
install_test.go
File metadata and controls
112 lines (94 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package cmd
import (
"testing"
"github.com/dtvem/dtvem/src/internal/runtime"
)
// mockProvider implements runtime.Provider for testing
type mockProvider struct {
name string
displayName string
globalVersion string
globalSetError error
setGlobalCalls []string
}
func (m *mockProvider) Name() string { return m.name }
func (m *mockProvider) DisplayName() string { return m.displayName }
func (m *mockProvider) Shims() []string { return []string{m.name} }
func (m *mockProvider) ExecutablePath(version string) (string, error) { return "", nil }
func (m *mockProvider) IsInstalled(version string) (bool, error) { return false, nil }
func (m *mockProvider) ShouldReshimAfter(shimName string, args []string) bool { return false }
func (m *mockProvider) Install(version string) error { return nil }
func (m *mockProvider) Uninstall(version string) error { return nil }
func (m *mockProvider) ListInstalled() ([]runtime.InstalledVersion, error) {
return nil, nil
}
func (m *mockProvider) ListAvailable() ([]runtime.AvailableVersion, error) {
return nil, nil
}
func (m *mockProvider) InstallPath(version string) (string, error) { return "", nil }
func (m *mockProvider) LocalVersion() (string, error) { return "", nil }
func (m *mockProvider) SetLocalVersion(version string) error { return nil }
func (m *mockProvider) CurrentVersion() (string, error) { return "", nil }
func (m *mockProvider) DetectInstalled() ([]runtime.DetectedVersion, error) {
return nil, nil
}
func (m *mockProvider) GlobalPackages(installPath string) ([]string, error) {
return nil, nil
}
func (m *mockProvider) InstallGlobalPackages(version string, packages []string) error {
return nil
}
func (m *mockProvider) ManualPackageInstallCommand(packages []string) string {
return ""
}
func (m *mockProvider) GlobalVersion() (string, error) {
return m.globalVersion, nil
}
func (m *mockProvider) SetGlobalVersion(version string) error {
m.setGlobalCalls = append(m.setGlobalCalls, version)
return m.globalSetError
}
func TestAutoSetGlobalIfNeeded_NoGlobalVersion(t *testing.T) {
provider := &mockProvider{
name: "test",
displayName: "Test",
globalVersion: "", // No global version set
}
autoSetGlobalIfNeeded(provider, "1.0.0")
if len(provider.setGlobalCalls) != 1 {
t.Errorf("Expected SetGlobalVersion to be called once, got %d calls", len(provider.setGlobalCalls))
}
if len(provider.setGlobalCalls) > 0 && provider.setGlobalCalls[0] != "1.0.0" {
t.Errorf("Expected SetGlobalVersion called with '1.0.0', got %q", provider.setGlobalCalls[0])
}
}
func TestAutoSetGlobalIfNeeded_GlobalVersionAlreadySet(t *testing.T) {
provider := &mockProvider{
name: "test",
displayName: "Test",
globalVersion: "2.0.0", // Global version already set
}
autoSetGlobalIfNeeded(provider, "1.0.0")
if len(provider.setGlobalCalls) != 0 {
t.Errorf("Expected SetGlobalVersion to not be called when global already set, got %d calls", len(provider.setGlobalCalls))
}
}
func TestAutoSetGlobalIfNeeded_MultipleInstalls(t *testing.T) {
provider := &mockProvider{
name: "test",
displayName: "Test",
globalVersion: "", // No global version initially
}
// First install - should set global
autoSetGlobalIfNeeded(provider, "1.0.0")
if len(provider.setGlobalCalls) != 1 {
t.Fatalf("Expected first install to set global, got %d calls", len(provider.setGlobalCalls))
}
// Simulate that global is now set
provider.globalVersion = "1.0.0"
// Second install - should NOT change global
autoSetGlobalIfNeeded(provider, "2.0.0")
if len(provider.setGlobalCalls) != 1 {
t.Errorf("Expected second install to not change global, got %d calls total", len(provider.setGlobalCalls))
}
}