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