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  }