@@ -3,6 +3,8 @@ package project
3
3
import (
4
4
"path/filepath"
5
5
"testing"
6
+
7
+ "golang.org/x/mod/modfile"
6
8
)
7
9
8
10
func testStartsWithAnyOf (t * testing.T , path string , prefix string , expectation bool ) {
@@ -25,3 +27,38 @@ func TestStartsWithAnyOf(t *testing.T) {
25
27
testStartsWithAnyOf (t , filepath .Join ("foo" , "bar" ), "bar" , false )
26
28
testStartsWithAnyOf (t , filepath .Join ("foo" , "bar" ), filepath .Join ("foo" , "baz" ), false )
27
29
}
30
+
31
+ func testHasInvalidToolchainVersion (t * testing.T , contents string ) bool {
32
+ modFile , err := modfile .Parse ("test.go" , []byte (contents ), nil )
33
+
34
+ if err != nil {
35
+ t .Errorf ("Unable to parse %s: %s.\n " , contents , err .Error ())
36
+ }
37
+
38
+ return hasInvalidToolchainVersion (modFile )
39
+ }
40
+
41
+ func TestHasInvalidToolchainVersion (t * testing.T ) {
42
+ invalid := []string {
43
+ "go 1.21\n " ,
44
+ "go 1.22\n " ,
45
+ }
46
+
47
+ for _ , v := range invalid {
48
+ if ! testHasInvalidToolchainVersion (t , v ) {
49
+ t .Errorf ("Expected testHasInvalidToolchainVersion(\" %s\" ) to be true, but got false" , v )
50
+ }
51
+ }
52
+
53
+ valid := []string {
54
+ "go 1.20\n " ,
55
+ "go 1.21.1\n " ,
56
+ "go 1.22\n \n toolchain go1.22.0\n " ,
57
+ }
58
+
59
+ for _ , v := range valid {
60
+ if testHasInvalidToolchainVersion (t , v ) {
61
+ t .Errorf ("Expected testHasInvalidToolchainVersion(\" %s\" ) to be false, but got true" , v )
62
+ }
63
+ }
64
+ }
0 commit comments