summaryrefslogtreecommitdiff
path: root/pkgtools/pkglint/files/package_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkgtools/pkglint/files/package_test.go')
-rw-r--r--pkgtools/pkglint/files/package_test.go198
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", "")