summaryrefslogtreecommitdiff
path: root/pkgtools/pkglint/files/vartypecheck_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkgtools/pkglint/files/vartypecheck_test.go')
-rw-r--r--pkgtools/pkglint/files/vartypecheck_test.go106
1 files changed, 106 insertions, 0 deletions
diff --git a/pkgtools/pkglint/files/vartypecheck_test.go b/pkgtools/pkglint/files/vartypecheck_test.go
index 088745259a4..dee06908c27 100644
--- a/pkgtools/pkglint/files/vartypecheck_test.go
+++ b/pkgtools/pkglint/files/vartypecheck_test.go
@@ -2,15 +2,68 @@ package main
import (
check "gopkg.in/check.v1"
+ "io/ioutil"
+ "os"
)
+func (s *Suite) TestVartypeCheck_AwkCommand(c *check.C) {
+ newVartypeCheck("PLIST_AWK", "+=", "{print $0}").AwkCommand()
+}
+
+func (s *Suite) TestVartypeCheck_BasicRegularExpression(c *check.C) {
+ newVartypeCheck("REPLACE_FILES.pl", "=", ".*\\.pl$").BasicRegularExpression()
+}
+
+func (s *Suite) TestVartypeCheck_BuildlinkDepmethod(c *check.C) {
+ newVartypeCheck("BUILDLINK_DEPMETHOD.libc", "?=", "full").BuildlinkDepmethod()
+ newVartypeCheck("BUILDLINK_DEPMETHOD.libc", "?=", "unknown").BuildlinkDepmethod()
+
+ c.Check(s.Output(), equals, "WARN: fname:1: Invalid dependency method \"unknown\". Valid methods are \"build\" or \"full\".\n")
+}
+
func (s *Suite) TestVartypeCheck_Category(c *check.C) {
+ tmpdir := c.MkDir()
+ categorydir := tmpdir + "/filesyscategory"
+ categoryMakefile := categorydir + "/Makefile"
+ os.Mkdir(categorydir, 0777)
+ ioutil.WriteFile(categoryMakefile, []byte("# Nothing\n"), 0777)
+ G.currentDir = tmpdir
+ G.curPkgsrcdir = "."
+
newVartypeCheck("CATEGORIES", "=", "chinese").Category()
newVartypeCheck("CATEGORIES", "=", "arabic").Category()
+ newVartypeCheck("CATEGORIES", "=", "filesyscategory").Category()
c.Check(s.Output(), equals, "ERROR: fname:1: Invalid category \"arabic\".\n")
}
+func (s *Suite) TestVartypeCheck_CFlag(c *check.C) {
+ newVartypeCheck("CFLAGS", "+=", "-Wall").CFlag()
+ newVartypeCheck("CFLAGS", "+=", "/W3").CFlag()
+ newVartypeCheck("CFLAGS", "+=", "target:sparc64").CFlag()
+ newVartypeCheck("CFLAGS", "+=", "-std=c99").CFlag()
+ newVartypeCheck("CFLAGS", "+=", "-XX:+PrintClassHistogramAfterFullGC").CFlag()
+
+ c.Check(s.Output(), equals, ""+
+ "WARN: fname:1: Compiler flag \"/W3\" should start with a hyphen.\n"+
+ "WARN: fname:1: Compiler flag \"target:sparc64\" should start with a hyphen.\n"+
+ "WARN: fname:1: Unknown compiler flag \"-XX:+PrintClassHistogramAfterFullGC\".\n")
+}
+
+func (s *Suite) TestVartypeCheck_Comment(c *check.C) {
+ newVartypeCheck("COMMENT", "=", "Versatile Programming Language").Comment()
+ newVartypeCheck("COMMENT", "=", "SHORT_DESCRIPTION_OF_THE_PACKAGE").Comment()
+ newVartypeCheck("COMMENT", "=", "A great package.").Comment()
+ newVartypeCheck("COMMENT", "=", "some packages need a very very long comment to explain their basic usefulness").Comment()
+
+ c.Check(s.Output(), equals, ""+
+ "ERROR: fname:1: COMMENT must be set.\n"+
+ "WARN: fname:1: COMMENT should not begin with \"A\".\n"+
+ "WARN: fname:1: COMMENT should not end with a period.\n"+
+ "WARN: fname:1: COMMENT should start with a capital letter.\n"+
+ "WARN: fname:1: COMMENT should not be longer than 70 characters.\n")
+}
+
func (s *Suite) TestVartypeCheck_Dependency(c *check.C) {
newVartypeCheck("CONFLICTS", "+=", "Perl").Dependency()
@@ -28,6 +81,14 @@ func (s *Suite) TestVartypeCheck_Dependency(c *check.C) {
c.Check(s.Output(), equals, "WARN: fname:1: Please append \"{,nb*}\" to the version number of this dependency.\n")
+ newVartypeCheck("CONFLICTS", "+=", "perl5-[5.10-5.22]*").Dependency()
+
+ c.Check(s.Output(), equals, "WARN: fname:1: Only [0-9]* is allowed in the numeric part of a dependency.\n")
+
+ newVartypeCheck("CONFLICTS", "+=", "py-docs").Dependency()
+
+ c.Check(s.Output(), equals, "ERROR: fname:1: Unknown dependency pattern \"py-docs\".\n")
+
newVartypeCheck("CONFLICTS", "+=", "perl5-5.22.*{,nb*}").Dependency()
c.Check(s.Output(), equals, "")
@@ -52,6 +113,24 @@ func (s *Suite) TestVartypeCheck_DependencyWithPatch(c *check.C) {
"WARN: fname:1: Please use USE_TOOLS+=perl:run instead of this dependency.\n")
}
+func (s *Suite) TestVartypeCheck_DistSuffix(c *check.C) {
+ newVartypeCheck("EXTRACT_SUFX", "=", ".tar.gz").DistSuffix()
+ newVartypeCheck("EXTRACT_SUFX", "=", ".tar.bz2").DistSuffix()
+
+ c.Check(s.Output(), equals, "NOTE: fname:1: EXTRACT_SUFX is \".tar.gz\" by default, so this definition may be redundant.\n")
+}
+
+func (s *Suite) TestVartypeCheck_EmulPlatform(c *check.C) {
+ newVartypeCheck("EMUL_PLATFORM", "=", "linux-i386").EmulPlatform()
+ newVartypeCheck("EMUL_PLATFORM", "=", "nextbsd-8087").EmulPlatform()
+ newVartypeCheck("EMUL_PLATFORM", "=", "${LINUX}").EmulPlatform()
+
+ c.Check(s.Output(), equals, ""+
+ "WARN: fname:1: Unknown operating system: nextbsd\n"+
+ "WARN: fname:1: Unknown hardware architecture: 8087\n"+
+ "WARN: fname:1: \"${LINUX}\" is not a valid emulation platform.\n")
+}
+
func (s *Suite) TestVartypeCheck_FetchURL(c *check.C) {
G.globalData.masterSiteUrls = map[string]string{
"https://github.com/": "MASTER_SITE_GITHUB",
@@ -81,6 +160,22 @@ func (s *Suite) TestVartypeCheck_FetchURL(c *check.C) {
c.Check(s.Output(), equals, "ERROR: fname:1: MASTER_SITE_INVALID does not exist.\n")
}
+func (s *Suite) TestVartypeCheck_Filename(c *check.C) {
+ newVartypeCheck("FNAME", "=", "Filename with spaces.docx").Filename()
+
+ c.Check(s.Output(), equals, "WARN: fname:1: \"Filename with spaces.docx\" is not a valid filename.\n")
+
+ newVartypeCheck("FNAME", "=", "OS/2-manual.txt").Filename()
+
+ c.Check(s.Output(), equals, "WARN: fname:1: A filename should not contain a slash.\n")
+}
+
+func (s *Suite) TestVartypeCheck_MailAddress(c *check.C) {
+ newVartypeCheck("MAINTAINER", "=", "pkgsrc-users@netbsd.org").MailAddress()
+
+ c.Check(s.Output(), equals, "WARN: fname:1: Please write \"NetBSD.org\" instead of \"netbsd.org\".\n")
+}
+
func (s *Suite) TestVartypeCheck_Message(c *check.C) {
newVartypeCheck("SUBST_MESSAGE.id", "=", "\"Correct paths\"").Message()
@@ -114,6 +209,17 @@ func (s *Suite) TestVartypeCheck_PkgRevision(c *check.C) {
c.Check(s.Output(), equals, "")
}
+func (s *Suite) TestVartypeCheck_PlatformTriple(c *check.C) {
+ newVartypeCheck("ONLY_FOR_PLATFORM", "=", "linux-i386").PlatformTriple()
+ newVartypeCheck("ONLY_FOR_PLATFORM", "=", "nextbsd-5.0-8087").PlatformTriple()
+ newVartypeCheck("ONLY_FOR_PLATFORM", "=", "${LINUX}").PlatformTriple()
+
+ c.Check(s.Output(), equals, ""+
+ "WARN: fname:1: \"linux-i386\" is not a valid platform triple.\n"+
+ "WARN: fname:1: Unknown operating system: nextbsd\n"+
+ "WARN: fname:1: Unknown hardware architecture: 8087\n")
+}
+
func (s *Suite) TestVartypeCheck_SedCommands(c *check.C) {
newVartypeCheck("SUBST_SED.dummy", "=", "s,@COMPILER@,gcc,g").SedCommands()