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 }