go-hep.org/x/hep@v0.38.1/version_test.go (about)

     1  // Copyright ©2019 The go-hep Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build go1.12
     6  
     7  package hep
     8  
     9  import (
    10  	"reflect"
    11  	"runtime/debug"
    12  	"testing"
    13  )
    14  
    15  func TestVersion(t *testing.T) {
    16  	type vsum struct {
    17  		version, sum string
    18  	}
    19  
    20  	for _, tc := range []struct {
    21  		b    *debug.BuildInfo
    22  		want vsum
    23  	}{
    24  		{
    25  			b:    nil,
    26  			want: vsum{"", ""},
    27  		},
    28  		{
    29  			b:    &debug.BuildInfo{},
    30  			want: vsum{"", ""},
    31  		},
    32  		{
    33  			b: &debug.BuildInfo{
    34  				Deps: []*debug.Module{
    35  					{
    36  						Path:    "gonum.org/v1/gonum",
    37  						Version: "v0.1.0",
    38  						Sum:     "12345XYZ",
    39  					},
    40  				},
    41  			},
    42  			want: vsum{"", ""},
    43  		},
    44  		{
    45  			b: &debug.BuildInfo{
    46  				Deps: []*debug.Module{
    47  					{
    48  						Path:    "gonum.org/v1/gonum",
    49  						Version: "v0.1.0",
    50  						Sum:     "12345XYZ",
    51  					},
    52  					{
    53  						Path:    "go-hep.org/x/hep",
    54  						Version: "v0.18.0",
    55  						Sum:     "12345",
    56  					},
    57  				},
    58  			},
    59  			want: vsum{"v0.18.0", "12345"},
    60  		},
    61  		{
    62  			b: &debug.BuildInfo{
    63  				Deps: []*debug.Module{
    64  					{
    65  						Path:    "gonum.org/v1/gonum",
    66  						Version: "v0.1.0",
    67  						Sum:     "12345XYZ",
    68  					},
    69  					{
    70  						Path:    "go-hep.org/x/hep",
    71  						Version: "v0.18.0",
    72  						Sum:     "12345",
    73  						Replace: &debug.Module{
    74  							Path:    "go-hep.org/x/hep-fixup",
    75  							Version: "v0.18.0-fixup",
    76  							Sum:     "11111",
    77  						},
    78  					},
    79  				},
    80  			},
    81  			want: vsum{"go-hep.org/x/hep-fixup v0.18.0-fixup", "11111"},
    82  		},
    83  		{
    84  			b: &debug.BuildInfo{
    85  				Deps: []*debug.Module{
    86  					{
    87  						Path:    "gonum.org/v1/gonum",
    88  						Version: "v0.1.0",
    89  						Sum:     "12345XYZ",
    90  					},
    91  					{
    92  						Path:    "go-hep.org/x/hep",
    93  						Version: "v0.18.0",
    94  						Sum:     "12345",
    95  						Replace: &debug.Module{
    96  							Version: "v0.18.0-fixup",
    97  							Sum:     "11111",
    98  						},
    99  					},
   100  				},
   101  			},
   102  			want: vsum{"v0.18.0-fixup", "11111"},
   103  		},
   104  		{
   105  			b: &debug.BuildInfo{
   106  				Deps: []*debug.Module{
   107  					{
   108  						Path:    "gonum.org/v1/gonum",
   109  						Version: "v0.1.0",
   110  						Sum:     "12345XYZ",
   111  					},
   112  					{
   113  						Path:    "go-hep.org/x/hep",
   114  						Version: "v0.18.0",
   115  						Sum:     "12345",
   116  						Replace: &debug.Module{
   117  							Path: "go-hep.org/x/hep-fixup",
   118  							Sum:  "11111",
   119  						},
   120  					},
   121  				},
   122  			},
   123  			want: vsum{"go-hep.org/x/hep-fixup", "11111"},
   124  		},
   125  		{
   126  			b: &debug.BuildInfo{
   127  				Deps: []*debug.Module{
   128  					{
   129  						Path:    "gonum.org/v1/gonum",
   130  						Version: "v0.1.0",
   131  						Sum:     "12345XYZ",
   132  					},
   133  					{
   134  						Path:    "go-hep.org/x/hep",
   135  						Version: "v0.18.0",
   136  						Sum:     "12345",
   137  						Replace: &debug.Module{
   138  							Sum: "11111",
   139  						},
   140  					},
   141  				},
   142  			},
   143  			want: vsum{"v0.18.0*", ""},
   144  		},
   145  	} {
   146  		t.Run("", func(t *testing.T) {
   147  			version, sum := versionOf(tc.b)
   148  			got := vsum{
   149  				version: version,
   150  				sum:     sum,
   151  			}
   152  
   153  			if !reflect.DeepEqual(got, tc.want) {
   154  				t.Fatalf("error:\ngot= %#v\nwant=%#v\n", got, tc.want)
   155  			}
   156  		})
   157  	}
   158  
   159  	vers, sum := Version()
   160  	if got, want := (vsum{vers, sum}), (vsum{}); !reflect.DeepEqual(got, want) {
   161  		// this might fail when GO111MODULE=on and module support percolates everywhere.
   162  		t.Fatalf("error:\ngot= %#v\nwant=%#v\n", got, want)
   163  	}
   164  }