github.com/secoba/wails/v2@v2.6.4/internal/gomod/gomod_test.go (about) 1 package gomod 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/Masterminds/semver" 8 "github.com/matryer/is" 9 ) 10 11 func TestGetWailsVersion(t *testing.T) { 12 tests := []struct { 13 name string 14 goModText []byte 15 want *semver.Version 16 wantErr bool 17 }{ 18 {"basic", []byte(basic), semver.MustParse("v2.0.0-beta.7"), false}, 19 } 20 for _, tt := range tests { 21 t.Run(tt.name, func(t *testing.T) { 22 got, err := GetWailsVersionFromModFile(tt.goModText) 23 if (err != nil) != tt.wantErr { 24 t.Errorf("GetWailsVersion() error = %v, wantErr %v", err, tt.wantErr) 25 return 26 } 27 if !reflect.DeepEqual(got, tt.want) { 28 t.Errorf("GetWailsVersion() got = %v, want %v", got, tt.want) 29 } 30 }) 31 } 32 } 33 34 func TestUpdateGoModVersion(t *testing.T) { 35 is2 := is.New(t) 36 37 type args struct { 38 goModText []byte 39 currentVersion string 40 } 41 tests := []struct { 42 name string 43 args args 44 want []byte 45 wantErr bool 46 }{ 47 {"basic", args{[]byte(basic), "v2.0.0-beta.20"}, []byte(basicUpdated), false}, 48 {"basicmultiline", args{[]byte(multilineRequire), "v2.0.0-beta.20"}, []byte(multilineRequireUpdated), false}, 49 {"basicmultilinereplace", args{[]byte(multilineReplace), "v2.0.0-beta.20"}, []byte(multilineReplaceUpdated), false}, 50 {"basicmultilinereplaceblock", args{[]byte(multilineReplaceBlock), "v2.0.0-beta.20"}, []byte(multilineReplaceBlockUpdated), false}, 51 {"basicmultilinereplacenoversion", args{[]byte(multilineReplaceNoVersion), "v2.0.0-beta.20"}, []byte(multilineReplaceNoVersionUpdated), false}, 52 {"basicmultilinereplacenoversionblock", args{[]byte(multilineReplaceNoVersionBlock), "v2.0.0-beta.20"}, []byte(multilineReplaceNoVersionBlockUpdated), false}, 53 } 54 for _, tt := range tests { 55 t.Run(tt.name, func(t *testing.T) { 56 got, err := UpdateGoModVersion(tt.args.goModText, tt.args.currentVersion) 57 if (err != nil) != tt.wantErr { 58 t.Errorf("UpdateGoModVersion() error = %v, wantErr %v", err, tt.wantErr) 59 return 60 } 61 is2.Equal(string(got), string(tt.want)) 62 }) 63 } 64 } 65 66 func TestGoModOutOfSync(t *testing.T) { 67 is2 := is.New(t) 68 69 type args struct { 70 goModData []byte 71 currentVersion string 72 } 73 tests := []struct { 74 name string 75 args args 76 want bool 77 wantErr bool 78 }{ 79 {"basic", args{[]byte(basic), "v2.0.0-beta.20"}, true, false}, 80 {"basicmultiline", args{[]byte(multilineRequire), "v2.0.0-beta.20"}, true, false}, 81 } 82 for _, tt := range tests { 83 t.Run(tt.name, func(t *testing.T) { 84 got, err := GoModOutOfSync(tt.args.goModData, tt.args.currentVersion) 85 if (err != nil) != tt.wantErr { 86 t.Errorf("GoModOutOfSync() error = %v, wantErr %v", err, tt.wantErr) 87 return 88 } 89 is2.Equal(got, tt.want) 90 }) 91 } 92 } 93 94 const basicGo118 string = `module changeme 95 96 go 1.18 97 98 require github.com/wailsapp/wails/v2 v2.0.0-beta.7 99 ` 100 101 const basicGo119 string = `module changeme 102 103 go 1.19 104 105 require github.com/wailsapp/wails/v2 v2.0.0-beta.7 106 ` 107 108 func TestUpdateGoModGoVersion(t *testing.T) { 109 is2 := is.New(t) 110 111 type args struct { 112 goModText []byte 113 currentVersion string 114 } 115 tests := []struct { 116 name string 117 args args 118 want []byte 119 updated bool 120 }{ 121 {"basic1.18", args{[]byte(basicGo118), "1.18"}, []byte(basicGo118), false}, 122 {"basic1.19", args{[]byte(basicGo119), "1.17"}, []byte(basicGo119), false}, 123 {"basic1.19", args{[]byte(basicGo119), "1.18"}, []byte(basicGo119), false}, 124 } 125 for _, tt := range tests { 126 t.Run(tt.name, func(t *testing.T) { 127 got, updated, err := SyncGoVersion(tt.args.goModText, tt.args.currentVersion) 128 if err != nil { 129 t.Errorf("UpdateGoModVersion() error = %v", err) 130 return 131 } 132 if updated != tt.updated { 133 t.Errorf("UpdateGoModVersion() updated = %t, want = %t", updated, tt.updated) 134 return 135 } 136 is2.Equal(got, tt.want) 137 }) 138 } 139 }