5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 20:51:38 +08:00
wails/v2/internal/gomod/gomod_test.go
Lea Anthony 8067a1cedb
Add nosyncgomod flag (#2215)
* Add nosyncgomod flag

* Fix tests on unix
2022-12-20 22:08:02 +11:00

140 lines
3.7 KiB
Go

package gomod
import (
"reflect"
"testing"
"github.com/Masterminds/semver"
"github.com/matryer/is"
)
func TestGetWailsVersion(t *testing.T) {
tests := []struct {
name string
goModText []byte
want *semver.Version
wantErr bool
}{
{"basic", []byte(basic), semver.MustParse("v2.0.0-beta.7"), false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := GetWailsVersionFromModFile(tt.goModText)
if (err != nil) != tt.wantErr {
t.Errorf("GetWailsVersion() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("GetWailsVersion() got = %v, want %v", got, tt.want)
}
})
}
}
func TestUpdateGoModVersion(t *testing.T) {
is2 := is.New(t)
type args struct {
goModText []byte
currentVersion string
}
tests := []struct {
name string
args args
want []byte
wantErr bool
}{
{"basic", args{[]byte(basic), "v2.0.0-beta.20"}, []byte(basicUpdated), false},
{"basicmultiline", args{[]byte(multilineRequire), "v2.0.0-beta.20"}, []byte(multilineRequireUpdated), false},
{"basicmultilinereplace", args{[]byte(multilineReplace), "v2.0.0-beta.20"}, []byte(multilineReplaceUpdated), false},
{"basicmultilinereplaceblock", args{[]byte(multilineReplaceBlock), "v2.0.0-beta.20"}, []byte(multilineReplaceBlockUpdated), false},
{"basicmultilinereplacenoversion", args{[]byte(multilineReplaceNoVersion), "v2.0.0-beta.20"}, []byte(multilineReplaceNoVersionUpdated), false},
{"basicmultilinereplacenoversionblock", args{[]byte(multilineReplaceNoVersionBlock), "v2.0.0-beta.20"}, []byte(multilineReplaceNoVersionBlockUpdated), false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := UpdateGoModVersion(tt.args.goModText, tt.args.currentVersion)
if (err != nil) != tt.wantErr {
t.Errorf("UpdateGoModVersion() error = %v, wantErr %v", err, tt.wantErr)
return
}
is2.Equal(string(got), string(tt.want))
})
}
}
func TestGoModOutOfSync(t *testing.T) {
is2 := is.New(t)
type args struct {
goModData []byte
currentVersion string
}
tests := []struct {
name string
args args
want bool
wantErr bool
}{
{"basic", args{[]byte(basic), "v2.0.0-beta.20"}, true, false},
{"basicmultiline", args{[]byte(multilineRequire), "v2.0.0-beta.20"}, true, false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := GoModOutOfSync(tt.args.goModData, tt.args.currentVersion)
if (err != nil) != tt.wantErr {
t.Errorf("GoModOutOfSync() error = %v, wantErr %v", err, tt.wantErr)
return
}
is2.Equal(got, tt.want)
})
}
}
const basicGo118 string = `module changeme
go 1.18
require github.com/wailsapp/wails/v2 v2.0.0-beta.7
`
const basicGo119 string = `module changeme
go 1.19
require github.com/wailsapp/wails/v2 v2.0.0-beta.7
`
func TestUpdateGoModGoVersion(t *testing.T) {
is2 := is.New(t)
type args struct {
goModText []byte
currentVersion string
}
tests := []struct {
name string
args args
want []byte
updated bool
}{
{"basic1.18", args{[]byte(basicGo118), "1.18"}, []byte(basicGo118), false},
{"basic1.19", args{[]byte(basicGo119), "1.17"}, []byte(basicGo119), false},
{"basic1.19", args{[]byte(basicGo119), "1.18"}, []byte(basicGo119), false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, updated, err := SyncGoVersion(tt.args.goModText, tt.args.currentVersion)
if err != nil {
t.Errorf("UpdateGoModVersion() error = %v", err)
return
}
if updated != tt.updated {
t.Errorf("UpdateGoModVersion() updated = %t, want = %t", updated, tt.updated)
return
}
is2.Equal(got, tt.want)
})
}
}