github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/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:       "Invalid SPDX expression returns error",
    25  			expression: "MIT OR Apache-2.0 OR invalid",
    26  			want:       "",
    27  			wantErr:    true,
    28  		},
    29  	}
    30  	for _, tt := range tests {
    31  		t.Run(tt.name, func(t *testing.T) {
    32  			got, err := ParseExpression(tt.expression)
    33  			if (err != nil) != tt.wantErr {
    34  				t.Errorf("ParseExpression() error = %v, wantErr %v", err, tt.wantErr)
    35  				return
    36  			}
    37  			if got != tt.want {
    38  				t.Errorf("ParseExpression() got = %v, want %v", got, tt.want)
    39  			}
    40  		})
    41  	}
    42  }