8
8
"testing"
9
9
10
10
"gotest.tools/v3/assert"
11
+
12
+ "github.com/lima-vm/lima/pkg/version"
11
13
)
12
14
13
15
func TestValidateEmpty (t * testing.T ) {
@@ -17,6 +19,60 @@ func TestValidateEmpty(t *testing.T) {
17
19
assert .Error (t , err , "field `images` must be set" )
18
20
}
19
21
22
+ func TestValidateMinimumLimaVersion (t * testing.T ) {
23
+ images := `images: [{"location": "/"}]`
24
+
25
+ tests := []struct {
26
+ name string
27
+ currentVersion string
28
+ minimumLimaVersion string
29
+ wantErr string
30
+ }{
31
+ {
32
+ name : "minimumLimaVersion less than current version" ,
33
+ currentVersion : "1.1.1-114-g5bf5e513" ,
34
+ minimumLimaVersion : "1.1.0" ,
35
+ wantErr : "" ,
36
+ },
37
+ {
38
+ name : "minimumLimaVersion greater than current version" ,
39
+ currentVersion : "1.1.1-114-g5bf5e513" ,
40
+ minimumLimaVersion : "1.1.2" ,
41
+ wantErr : `template requires Lima version "1.1.2"; this is only "1.1.1"` ,
42
+ },
43
+ {
44
+ name : "invalid current version" ,
45
+ currentVersion : "<unknown>" ,
46
+ minimumLimaVersion : "0.8.0" ,
47
+ wantErr : `can't parse builtin Lima version "<unknown>": <unknown> is not in dotted-tri format` ,
48
+ },
49
+ {
50
+ name : "invalid minimumLimaVersion" ,
51
+ currentVersion : "1.1.1-114-g5bf5e513" ,
52
+ minimumLimaVersion : "invalid" ,
53
+ wantErr : "field `minimumLimaVersion` must be a semvar value, got \" invalid\" : invalid is not in dotted-tri format" ,
54
+ },
55
+ }
56
+
57
+ for _ , tt := range tests {
58
+ t .Run (tt .name , func (t * testing.T ) {
59
+ oldVersion := version .Version
60
+ version .Version = tt .currentVersion
61
+ t .Cleanup (func () { version .Version = oldVersion })
62
+
63
+ y , err := Load ([]byte ("minimumLimaVersion: " + tt .minimumLimaVersion + "\n " + images ), "lima.yaml" )
64
+ assert .NilError (t , err )
65
+
66
+ err = Validate (y , false )
67
+ if tt .wantErr == "" {
68
+ assert .NilError (t , err )
69
+ } else {
70
+ assert .Error (t , err , tt .wantErr )
71
+ }
72
+ })
73
+ }
74
+ }
75
+
20
76
func TestValidateProbes (t * testing.T ) {
21
77
images := `images: [{"location": "/"}]`
22
78
validProbe := `probes: [{"script": "#!foo"}]`
0 commit comments