github.com/anchore/syft@v1.38.2/syft/license/license_test.go (about)

     1  package license
     2  
     3  import "testing"
     4  
     5  func TestParseExpression(t *testing.T) {
     6  	tests := []struct {
     7  		name       string
     8  		expression string
     9  		want       string
    10  		wantErr    bool
    11  	}{
    12  		{
    13  			name:       "valid single ID expression returns SPDX ID",
    14  			expression: "mit",
    15  			want:       "MIT",
    16  			wantErr:    false,
    17  		},
    18  		{
    19  			name:       "Valid SPDX expression returns SPDX expression",
    20  			expression: "MIT OR Apache-2.0",
    21  			want:       "MIT OR Apache-2.0",
    22  		},
    23  		{
    24  			name:       "accept redundant parentheses",
    25  			expression: "(MIT OR Apache-2.0)",
    26  			want:       "(MIT OR Apache-2.0)",
    27  		},
    28  		{
    29  			name:       "Invalid SPDX expression returns error",
    30  			expression: "MIT OR Apache-2.0 OR invalid",
    31  			want:       "",
    32  			wantErr:    true,
    33  		},
    34  	}
    35  	for _, tt := range tests {
    36  		t.Run(tt.name, func(t *testing.T) {
    37  			got, err := ParseExpression(tt.expression)
    38  			if (err != nil) != tt.wantErr {
    39  				t.Errorf("ParseExpression() error = %v, wantErr %v", err, tt.wantErr)
    40  				return
    41  			}
    42  			if got != tt.want {
    43  				t.Errorf("ParseExpression() got = %v, want %v", got, tt.want)
    44  			}
    45  		})
    46  	}
    47  }