diff options
Diffstat (limited to 'pkgtools/pkglint/files/package_test.go')
-rw-r--r-- | pkgtools/pkglint/files/package_test.go | 198 |
1 files changed, 173 insertions, 25 deletions
diff --git a/pkgtools/pkglint/files/package_test.go b/pkgtools/pkglint/files/package_test.go index 7869617f148..20352ad2f04 100644 --- a/pkgtools/pkglint/files/package_test.go +++ b/pkgtools/pkglint/files/package_test.go @@ -21,22 +21,25 @@ func (s *Suite) Test_Package_pkgnameFromDistname(c *check.C) { t.CheckOutputEmpty() } -func (s *Suite) Test_Package_ChecklinesPackageMakefileVarorder(c *check.C) { +func (s *Suite) Test_Package_CheckVarorder(c *check.C) { t := s.Init(c) t.SetupCommandLine("-Worder") pkg := NewPackage("x11/9term") - pkg.ChecklinesPackageMakefileVarorder(t.NewMkLines("Makefile", - MkRcsId, + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, "", + "GITHUB_PROJECT=project", "DISTNAME=9term", "CATEGORIES=x11")) - t.CheckOutputEmpty() + t.CheckOutputLines( + "WARN: Makefile:3: The canonical order of the variables is " + + "GITHUB_PROJECT, DISTNAME, CATEGORIES, GITHUB_PROJECT, empty line, COMMENT, LICENSE.") - pkg.ChecklinesPackageMakefileVarorder(t.NewMkLines("Makefile", - MkRcsId, + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, "", "DISTNAME=9term", "CATEGORIES=x11", @@ -44,8 +47,96 @@ func (s *Suite) Test_Package_ChecklinesPackageMakefileVarorder(c *check.C) { ".include \"../../mk/bsd.pkg.mk\"")) t.CheckOutputLines( - "WARN: Makefile:6: The canonical position for the required variable COMMENT is here.", - "WARN: Makefile:6: The canonical position for the required variable LICENSE is here.") + "WARN: Makefile:3: The canonical order of the variables is " + + "DISTNAME, CATEGORIES, empty line, COMMENT, LICENSE.") +} + +// Ensure that comments and empty lines do not lead to panics. +func (s *Suite) Test_Package_CheckVarorder__comments_do_not_crash(c *check.C) { + t := s.Init(c) + + t.SetupCommandLine("-Worder") + pkg := NewPackage("x11/9term") + + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, + "", + "GITHUB_PROJECT=project", + "", + "# comment", + "", + "DISTNAME=9term", + "# comment", + "CATEGORIES=x11")) + + t.CheckOutputLines( + "WARN: Makefile:3: The canonical order of the variables is " + + "GITHUB_PROJECT, DISTNAME, CATEGORIES, GITHUB_PROJECT, empty line, COMMENT, LICENSE.") +} + +func (s *Suite) Test_Package_CheckVarorder__comments_are_ignored(c *check.C) { + t := s.Init(c) + + t.SetupCommandLine("-Worder") + + pkg := NewPackage("x11/9term") + + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, + "", + "DISTNAME=\tdistname-1.0", + "CATEGORIES=\tsysutils", + "", + "MAINTAINER=\tpkgsrc-users@pkgsrc.org", + "# comment", + "COMMENT=\tComment", + "LICENSE=\tgnu-gpl-v2")) + + t.CheckOutputEmpty() +} + +func (s *Suite) Test_Package_CheckVarorder__conditionals_skip(c *check.C) { + t := s.Init(c) + + t.SetupCommandLine("-Worder") + + pkg := NewPackage("x11/9term") + + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, + "", + "DISTNAME=\tdistname-1.0", + "CATEGORIES=\tsysutils", + "", + ".if ${DISTNAME:Mdistname-*}", + "MAINTAINER=\tpkgsrc-users@pkgsrc.org", + ".endif", + "LICENSE=\tgnu-gpl-v2")) + + // No warning about the missing COMMENT since the conditional + // skips the whole check. + t.CheckOutputEmpty() +} + +func (s *Suite) Test_Package_CheckVarorder_GitHub(c *check.C) { + t := s.Init(c) + + t.SetupCommandLine("-Worder") + pkg := NewPackage("x11/9term") + + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, + "", + "DISTNAME=\t\tautocutsel-0.10.0", + "CATEGORIES=\t\tx11", + "MASTER_SITES=\t\t${MASTER_SITE_GITHUB:=sigmike/}", + "GITHUB_PROJECT=\t\tautocutsel", + "GITHUB_TAG=\t\t${PKGVERSION_NOREV}", + "", + "COMMENT=\tComment", + "LICENSE=\tgnu-gpl-v2")) + + t.CheckOutputEmpty() } func (s *Suite) Test_Package_varorder_license(c *check.C) { @@ -54,11 +145,11 @@ func (s *Suite) Test_Package_varorder_license(c *check.C) { t.SetupCommandLine("-Worder") t.CreateFileLines("mk/bsd.pkg.mk", "# dummy") - t.CreateFileLines("x11/Makefile", MkRcsId) - t.CreateFileLines("x11/9term/PLIST", PlistRcsId, "bin/9term") - t.CreateFileLines("x11/9term/distinfo", RcsId) + t.CreateFileLines("x11/Makefile", MkRcsID) + t.CreateFileLines("x11/9term/PLIST", PlistRcsID, "bin/9term") + t.CreateFileLines("x11/9term/distinfo", RcsID) t.CreateFileLines("x11/9term/Makefile", - MkRcsId, + MkRcsID, "", "DISTNAME=9term-1.0", "CATEGORIES=x11", @@ -79,24 +170,81 @@ func (s *Suite) Test_Package_varorder_license(c *check.C) { } // https://mail-index.netbsd.org/tech-pkg/2017/01/18/msg017698.html -func (s *Suite) Test_Package_ChecklinesPackageMakefileVarorder__MASTER_SITES(c *check.C) { +func (s *Suite) Test_Package_CheckVarorder__MASTER_SITES(c *check.C) { t := s.Init(c) t.SetupCommandLine("-Worder") pkg := NewPackage("category/package") - pkg.ChecklinesPackageMakefileVarorder(t.NewMkLines("Makefile", - MkRcsId, + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, "", "PKGNAME=\tpackage-1.0", "CATEGORIES=\tcategory", "MASTER_SITES=\thttp://example.org/", - "MASTER_SITES+=\thttp://mirror.example.org/")) + "MASTER_SITES+=\thttp://mirror.example.org/", + "", + "COMMENT=\tComment", + "LICENSE=\tgnu-gpl-v2")) // No warning that "MASTER_SITES appears too late" t.CheckOutputEmpty() } +// The diagnostics must be helpful. +// In the case of wip/ioping, they were ambiguous and wrong. +func (s *Suite) Test_Package_CheckVarorder__diagnostics(c *check.C) { + t := s.Init(c) + + t.SetupCommandLine("-Worder") + G.globalData.InitVartypes() + pkg := NewPackage("category/package") + + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, + "", + "CATEGORIES= net", + "", + "COMMENT= Comment", + "LICENSE= gnu-gpl-v3", + "", + "GITHUB_PROJECT= pkgbase", + "DISTNAME= v1.0", + "PKGNAME= ${GITHUB_PROJECT}-${DISTNAME}", + "MASTER_SITES= ${MASTER_SITE_GITHUB:=project/}", + "DIST_SUBDIR= ${GITHUB_PROJECT}", + "", + "MAINTAINER= maintainer@example.org", + "HOMEPAGE= https://github.com/project/pkgbase/", + "", + ".include \"../../mk/bsd.pkg.mk\"")) + + t.CheckOutputLines( + "WARN: Makefile:3: The canonical order of the variables is " + + "GITHUB_PROJECT, DISTNAME, PKGNAME, CATEGORIES, MASTER_SITES, GITHUB_PROJECT, DIST_SUBDIR, empty line, " + + "MAINTAINER, HOMEPAGE, COMMENT, LICENSE.") + + // After moving the variables according to the warning: + pkg.CheckVarorder(t.NewMkLines("Makefile", + MkRcsID, + "", + "GITHUB_PROJECT= pkgbase", + "DISTNAME= v1.0", + "PKGNAME= ${GITHUB_PROJECT}-${DISTNAME}", + "CATEGORIES= net", + "MASTER_SITES= ${MASTER_SITE_GITHUB:=project/}", + "DIST_SUBDIR= ${GITHUB_PROJECT}", + "", + "MAINTAINER= maintainer@example.org", + "HOMEPAGE= https://github.com/project/pkgbase/", + "COMMENT= Comment", + "LICENSE= gnu-gpl-v3", + "", + ".include \"../../mk/bsd.pkg.mk\"")) + + t.CheckOutputEmpty() +} + func (s *Suite) Test_Package_getNbpart(c *check.C) { t := s.Init(c) @@ -160,7 +308,7 @@ func (s *Suite) Test_checkdirPackage(c *check.C) { t := s.Init(c) t.SetupFileLines("Makefile", - MkRcsId) + MkRcsID) G.CurrentDir = t.TmpDir() checkdirPackage(t.TmpDir()) @@ -176,7 +324,7 @@ func (s *Suite) Test_checkdirPackage__meta_package_without_license(c *check.C) { t := s.Init(c) t.CreateFileLines("Makefile", - MkRcsId, + MkRcsID, "", "META_PACKAGE=\tyes") G.CurrentDir = t.TmpDir() @@ -216,7 +364,7 @@ func (s *Suite) Test_Package__varuse_at_load_time(c *check.C) { "# dummy") t.CreateFileLines("category/pkgbase/Makefile", - MkRcsId, + MkRcsID, "", "COMMENT= Unit test", "LICENSE= bsd-2", @@ -241,7 +389,7 @@ func (s *Suite) Test_Package__varuse_at_load_time(c *check.C) { "", ".include \"../../mk/bsd.pkg.mk\"") t.CreateFileLines("category/pkgbase/distinfo", - RcsId) + RcsID) (&Pkglint{}).Main("pkglint", "-q", "-Wperm", t.TmpDir()+"/category/pkgbase") @@ -256,7 +404,7 @@ func (s *Suite) Test_Package_loadPackageMakefile(c *check.C) { t := s.Init(c) t.SetupFileLines("category/package/Makefile", - MkRcsId, + MkRcsID, "", "PKGNAME=pkgname-1.67", "DISTNAME=distfile_1_67", @@ -278,7 +426,7 @@ func (s *Suite) Test_Package_conditionalAndUnconditionalInclude(c *check.C) { G.globalData.InitVartypes() t.CreateFileLines("category/package/Makefile", - MkRcsId, + MkRcsID, "", "COMMENT\t=Description", "LICENSE\t= gnu-gpl-v2", @@ -288,17 +436,17 @@ func (s *Suite) Test_Package_conditionalAndUnconditionalInclude(c *check.C) { ".endif", ".include \"../../mk/bsd.pkg.mk\"") t.CreateFileLines("category/package/options.mk", - MkRcsId, + MkRcsID, "", ".if !empty(PKG_OPTIONS:Mzlib)", ". include \"../../devel/zlib/buildlink3.mk\"", ".endif", ".include \"../../sysutils/coreutils/buildlink3.mk\"") t.CreateFileLines("category/package/PLIST", - PlistRcsId, + PlistRcsID, "bin/program") t.CreateFileLines("category/package/distinfo", - RcsId) + RcsID) t.CreateFileLines("devel/zlib/buildlink3.mk", "") t.CreateFileLines("licenses/gnu-gpl-v2", "") |