github.com/hugh712/snapd@v0.0.0-20200910133618-1a99902bd583/spdx/parser_test.go (about) 1 // -*- Mode: Go; indent-tabs-mode: t -*- 2 3 /* 4 * Copyright (C) 2016 Canonical Ltd 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 3 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 package spdx_test 21 22 import ( 23 "testing" 24 25 . "gopkg.in/check.v1" 26 27 "github.com/snapcore/snapd/spdx" 28 ) 29 30 func Test(t *testing.T) { TestingT(t) } 31 32 type spdxSuite struct{} 33 34 var _ = Suite(&spdxSuite{}) 35 36 func (s *spdxSuite) TestParseHappy(c *C) { 37 for _, t := range []string{ 38 "GPL-2.0", 39 "GPL-2.0+", 40 "GPL-2.0 AND BSD-2-Clause", 41 "GPL-2.0 OR BSD-2-Clause", 42 "GPL-2.0 WITH GCC-exception-3.1", 43 "(GPL-2.0 AND BSD-2-Clause)", 44 "GPL-2.0 AND (BSD-2-Clause OR 0BSD)", 45 "(BSD-2-Clause OR 0BSD) AND GPL-2.0 WITH GCC-exception-3.1", 46 "((GPL-2.0 AND (BSD-2-Clause OR 0BSD)) OR GPL-3.0) ", 47 } { 48 err := spdx.ValidateLicense(t) 49 c.Check(err, IsNil, Commentf("input: %q", t)) 50 } 51 } 52 53 func (s *spdxSuite) TestParseError(c *C) { 54 for _, t := range []struct { 55 inp string 56 errStr string 57 }{ 58 {"", "empty expression"}, 59 {"GPL-3.0 AND ()", "empty expression"}, 60 {"()", "empty expression"}, 61 62 {"FOO", `unknown license: FOO`}, 63 {"GPL-3.0 xxx", `unexpected string: "xxx"`}, 64 {"GPL-2.0 GPL-3.0", `missing AND or OR between "GPL-2.0" and "GPL-3.0"`}, 65 {"(GPL-2.0))", `unexpected "\)"`}, 66 {"(GPL-2.0", `expected "\)" got ""`}, 67 {"OR", "missing license before OR"}, 68 {"OR GPL-2.0", "missing license before OR"}, 69 {"GPL-2.0 OR", "missing license after OR"}, 70 {"GPL-2.0 WITH BAR", "unknown license exception: BAR"}, 71 {"GPL-2.0 WITH (foo)", `"\(" not allowed after WITH`}, 72 {"(BSD-2-Clause OR 0BSD) WITH GCC-exception-3.1", `expected license name before WITH`}, 73 } { 74 err := spdx.ValidateLicense(t.inp) 75 c.Check(err, ErrorMatches, t.errStr, Commentf("input: %q", t.inp)) 76 } 77 }