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  }