Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/pkgsrc/pkgtools/pkglint/files/Attic/licenses_test.go,v rcsdiff: /ftp/cvs/cvsroot/pkgsrc/pkgtools/pkglint/files/Attic/licenses_test.go,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.8 retrieving revision 1.16 diff -u -p -r1.8 -r1.16 --- pkgsrc/pkgtools/pkglint/files/Attic/licenses_test.go 2017/01/29 14:27:48 1.8 +++ pkgsrc/pkgtools/pkglint/files/Attic/licenses_test.go 2018/10/03 22:27:53 1.16 @@ -1,30 +1,30 @@ package main import ( - check "gopkg.in/check.v1" + "gopkg.in/check.v1" ) -func (s *Suite) Test_checklineLicense(c *check.C) { - s.Init(c) - s.CreateTmpFile("licenses/gnu-gpl-v2", "Most software \u2026") - mkline := NewMkLine(NewLine("Makefile", 7, "LICENSE=dummy", nil)) - G.globalData.Pkgsrcdir = s.tmpdir - G.CurrentDir = s.tmpdir +func (s *Suite) Test_LicenseChecker_Check(c *check.C) { + t := s.Init(c) + + t.CreateFileLines("licenses/gnu-gpl-v2", + "Most software \u2026") + mkline := t.NewMkLine("Makefile", 7, "LICENSE=dummy") licenseChecker := &LicenseChecker{mkline} licenseChecker.Check("gpl-v2", opAssign) - s.CheckOutputLines( + t.CheckOutputLines( "WARN: Makefile:7: License file ~/licenses/gpl-v2 does not exist.") licenseChecker.Check("no-profit shareware", opAssign) - s.CheckOutputLines( + t.CheckOutputLines( "ERROR: Makefile:7: Parse error for license condition \"no-profit shareware\".") licenseChecker.Check("no-profit AND shareware", opAssign) - s.CheckOutputLines( + t.CheckOutputLines( "WARN: Makefile:7: License file ~/licenses/no-profit does not exist.", "ERROR: Makefile:7: License \"no-profit\" must not be used.", "WARN: Makefile:7: License file ~/licenses/shareware does not exist.", @@ -32,14 +32,87 @@ func (s *Suite) Test_checklineLicense(c licenseChecker.Check("gnu-gpl-v2", opAssign) - s.CheckOutputEmpty() + t.CheckOutputEmpty() licenseChecker.Check("gnu-gpl-v2 AND gnu-gpl-v2 OR gnu-gpl-v2", opAssign) - s.CheckOutputLines( + t.CheckOutputLines( "ERROR: Makefile:7: AND and OR operators in license conditions can only be combined using parentheses.") licenseChecker.Check("(gnu-gpl-v2 OR gnu-gpl-v2) AND gnu-gpl-v2", opAssign) - s.CheckOutputEmpty() + t.CheckOutputEmpty() +} + +func (s *Suite) Test_checkToplevelUnusedLicenses(c *check.C) { + t := s.Init(c) + + t.SetupPkgsrc() + t.CreateFileLines("mk/misc/category.mk") + t.CreateFileLines("licenses/2-clause-bsd") + t.CreateFileLines("licenses/gnu-gpl-v3") + + t.CreateFileLines("Makefile", + MkRcsID, + "SUBDIR+=\tcategory") + + t.CreateFileLines("category/Makefile", + MkRcsID, + "COMMENT=\tExample category", + "", + "SUBDIR+=\tpackage", + "", + ".include \"../mk/misc/category.mk\"") + + t.CreateFileLines("category/package/Makefile", + MkRcsID, + "CATEGORIES=\tcategory", + "", + "COMMENT=Example package", + "LICENSE=\t2-clause-bsd", + "NO_CHECKSUM=\tyes") + t.CreateFileLines("category/package/PLIST", + PlistRcsID, + "bin/program") + + G.Main("pkglint", "-r", "-Cglobal", t.File(".")) + + t.CheckOutputLines( + "WARN: ~/licenses/gnu-gpl-v2: This license seems to be unused.", // Added by Tester.SetupPkgsrc + "WARN: ~/licenses/gnu-gpl-v3: This license seems to be unused.", + "0 errors and 2 warnings found.") +} + +func (s *Suite) Test_LicenseChecker_checkLicenseName__LICENSE_FILE(c *check.C) { + t := s.Init(c) + + t.SetupPkgsrc() + t.SetupCommandLine("-Wno-space") + t.CreateFileLines("category/package/DESCR", + "Package description") + t.CreateFileLines("category/package/Makefile", + MkRcsID, + "", + "CATEGORIES= chinese", + "", + "COMMENT= Useful tools", + "LICENSE= my-license", + "", + "LICENSE_FILE= my-license", + "NO_CHECKSUM= yes", + "", + ".include \"../../mk/bsd.pkg.mk\"") + t.CreateFileLines("category/package/PLIST", + PlistRcsID, + "bin/program") + t.CreateFileLines("category/package/my-license", + "An individual license file.") + + G.Main("pkglint", t.File("category/package")) + + // FIXME: It should be allowed to place a license file directly into + // the package directory. + t.CheckOutputLines( + "WARN: ~/category/package/my-license: Unexpected file found.", + "0 errors and 1 warning found.") }