@@ -20,6 +20,7 @@ package integration
20
20
21
21
import (
22
22
"context"
23
+ "encoding/json"
23
24
"fmt"
24
25
"os"
25
26
"os/exec"
@@ -29,11 +30,12 @@ import (
29
30
"time"
30
31
31
32
"k8s.io/minikube/pkg/minikube/bootstrapper/images"
33
+ "k8s.io/minikube/pkg/minikube/config"
32
34
"k8s.io/minikube/pkg/minikube/constants"
33
35
"k8s.io/minikube/pkg/minikube/localpath"
34
36
)
35
37
36
- func TestDownloadAndDeleteAll (t * testing.T ) {
38
+ func TestDownloadOnly (t * testing.T ) {
37
39
profile := UniqueProfileName ("download" )
38
40
ctx , cancel := context .WithTimeout (context .Background (), 15 * time .Minute )
39
41
defer Cleanup (t , profile , cancel )
@@ -46,22 +48,21 @@ func TestDownloadAndDeleteAll(t *testing.T) {
46
48
}
47
49
for _ , v := range versions {
48
50
t .Run (v , func (t * testing.T ) {
49
- args := append ([]string {"start" , "--download-only" , "-p" , profile , fmt .Sprintf ("--kubernetes-version=%s" , v )}, StartArgs ()... )
51
+ // Explicitly does not pass StartArgs() to test driver default
52
+ // --force to avoid uid check
53
+ args := []string {"start" , "--download-only" , "-p" , profile , "--force" , fmt .Sprintf ("--kubernetes-version=%s" , v )}
50
54
_ , err := Run (t , exec .CommandContext (ctx , Target (), args ... ))
51
55
if err != nil {
52
56
t .Errorf ("%s failed: %v" , args , err )
53
57
}
54
58
55
- // None driver does not cache images, so this test will fail
56
- if ! NoneDriver () {
57
- imgs := images .CachedImages ("" , v )
58
- for _ , img := range imgs {
59
- img = strings .Replace (img , ":" , "_" , 1 ) // for example kube-scheduler:v1.15.2 --> kube-scheduler_v1.15.2
60
- fp := filepath .Join (localpath .MiniPath (), "cache" , "images" , img )
61
- _ , err := os .Stat (fp )
62
- if err != nil {
63
- t .Errorf ("expected image file exist at %q but got error: %v" , fp , err )
64
- }
59
+ imgs := images .CachedImages ("" , v )
60
+ for _ , img := range imgs {
61
+ img = strings .Replace (img , ":" , "_" , 1 ) // for example kube-scheduler:v1.15.2 --> kube-scheduler_v1.15.2
62
+ fp := filepath .Join (localpath .MiniPath (), "cache" , "images" , img )
63
+ _ , err := os .Stat (fp )
64
+ if err != nil {
65
+ t .Errorf ("expected image file exist at %q but got error: %v" , fp , err )
65
66
}
66
67
}
67
68
@@ -73,17 +74,50 @@ func TestDownloadAndDeleteAll(t *testing.T) {
73
74
t .Errorf ("expected the file for binary exist at %q but got error %v" , fp , err )
74
75
}
75
76
}
77
+
78
+ // Checking if the default driver meets expectations
79
+ if ExpectedDefaultDriver () == "" {
80
+ t .Logf ("--expected-default-driver=%q, continuing" , ExpectedDefaultDriver ())
81
+ return
82
+ }
83
+ rr , err := Run (t , exec .CommandContext (ctx , Target (), "profile" , "list" , "--output" , "json" ))
84
+ if err != nil {
85
+ t .Errorf ("%s failed: %v" , rr .Args , err )
86
+ }
87
+ var ps map [string ][]config.Profile
88
+ err = json .Unmarshal (rr .Stdout .Bytes (), & ps )
89
+ if err != nil {
90
+ t .Errorf ("%s failed: %v" , rr .Args , err )
91
+ }
92
+
93
+ got := ""
94
+ for _ , p := range ps ["valid" ] {
95
+ if p .Name == profile {
96
+ got = p .Config .MachineConfig .VMDriver
97
+ }
98
+ }
99
+
100
+ if got != ExpectedDefaultDriver () {
101
+ t .Errorf ("got driver %q, expected %q" , got , ExpectedDefaultDriver ())
102
+ }
76
103
})
77
104
}
105
+
78
106
// This is a weird place to test profile deletion, but this test is serial, and we have a profile to delete!
79
107
t .Run ("DeleteAll" , func (t * testing.T ) {
108
+ if ! CanCleanup () {
109
+ t .Skip ("skipping, as cleanup is disabled" )
110
+ }
80
111
rr , err := Run (t , exec .CommandContext (ctx , Target (), "delete" , "--all" ))
81
112
if err != nil {
82
113
t .Errorf ("%s failed: %v" , rr .Args , err )
83
114
}
84
115
})
85
116
// Delete should always succeed, even if previously partially or fully deleted.
86
117
t .Run ("DeleteAlwaysSucceeds" , func (t * testing.T ) {
118
+ if ! CanCleanup () {
119
+ t .Skip ("skipping, as cleanup is disabled" )
120
+ }
87
121
rr , err := Run (t , exec .CommandContext (ctx , Target (), "delete" , "-p" , profile ))
88
122
if err != nil {
89
123
t .Errorf ("%s failed: %v" , rr .Args , err )
0 commit comments