cuelang.org/go@v0.10.1/internal/cuetest/cuetest_test.go (about) 1 package cuetest 2 3 import ( 4 "testing" 5 ) 6 7 func TestCondition(t *testing.T) { 8 cases := []struct { 9 name string 10 env string 11 con string 12 want bool 13 err string 14 }{ 15 // issue cases covered by TestCheckIssueCondition 16 { 17 name: "bad condition", 18 env: ".", 19 con: "golang.org/Issue/1234", // note typo Issue 20 want: false, 21 err: "unknown condition golang.org/Issue/1234", 22 }, 23 } 24 25 for _, c := range cases { 26 t.Run(c.name, func(t *testing.T) { 27 t.Setenv(envNonIssues, c.env) 28 got, err := Condition(c.con) 29 if got != c.want { 30 t.Errorf("expected %v; got %v", c.want, got) 31 } 32 if c.err != "" { 33 if err == nil { 34 t.Errorf("expected error %q; got nil", c.err) 35 } else if e := err.Error(); e != c.err { 36 t.Errorf("expected error %q; got %q", c.err, e) 37 } 38 } else if err != nil { 39 t.Errorf("expected no error; got %v", err) 40 } 41 }) 42 } 43 } 44 45 func TestCheckIssueCondition(t *testing.T) { 46 cases := []struct { 47 name string 48 env string 49 con string 50 isIssue bool 51 nonIssue bool 52 err string 53 }{ 54 { 55 name: "empty env", 56 con: "golang.org/issue/1234", 57 isIssue: true, 58 nonIssue: false, 59 }, 60 { 61 name: "match all issues", 62 env: ".", 63 con: "golang.org/issue/1234", 64 isIssue: true, 65 nonIssue: true, 66 }, 67 { 68 name: "bad issue URL", 69 con: "golang.org/Issue/1234", // note typo 70 isIssue: false, 71 }, 72 { 73 name: "bad env", 74 env: `\`, 75 con: "golang.org/issue/1234", 76 isIssue: false, 77 err: "failed to compile regexp \"\\\\\" specified via CUE_NON_ISSUES: error parsing regexp: trailing backslash at end of expression: ``", 78 }, 79 } 80 for _, c := range cases { 81 t.Run(c.name, func(t *testing.T) { 82 t.Setenv(envNonIssues, c.env) 83 isIssue, nonIssue, err := checkIssueCondition(c.con) 84 if isIssue != c.isIssue { 85 t.Errorf("expected isIssue %v; got %v", c.isIssue, isIssue) 86 } 87 if nonIssue != c.nonIssue { 88 t.Errorf("expected nonIssue %v; got %v", c.nonIssue, nonIssue) 89 } 90 if c.err != "" { 91 if err == nil { 92 t.Errorf("expected error %q; got nil", c.err) 93 } else if e := err.Error(); e != c.err { 94 t.Errorf("expected error %q; got %q", c.err, e) 95 } 96 } else if err != nil { 97 t.Errorf("expected no error; got %q", err) 98 } 99 }) 100 } 101 102 }