Files
pkgsrc-ng/pkgtools/pkglint/files/buildlink3_test.go
2016-11-18 22:39:22 +01:00

281 lines
8.5 KiB
Go

package main
import (
check "gopkg.in/check.v1"
)
func (s *Suite) Test_ChecklinesBuildlink3Mk(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"# XXX This file was created automatically using createbuildlink-@PKGVERSION@",
"",
"BUILDLINK_TREE+= Xbae",
"",
"BUILDLINK_DEPMETHOD.Xbae?=\tfull",
".if !defined(XBAE_BUILDLINK3_MK)",
"XBAE_BUILDLINK3_MK:=",
"",
"BUILDLINK_API_DEPENDS.Xbae+= Xbae>=4.8.4",
"BUILDLINK_ABI_DEPENDS.Xbae+= Xbae>=4.51.01nb2",
"BUILDLINK_PKGSRCDIR.Xbae?= ../../x11/Xbae",
"",
".include \"../../mk/motif.buildlink3.mk\"",
".endif # XBAE_BUILDLINK3_MK",
"",
"BUILDLINK_TREE+= -Xbae")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, ""+
"ERROR: buildlink3.mk:12: \"/x11/Xbae\" does not exist.\n"+
"ERROR: buildlink3.mk:12: There is no package in \"x11/Xbae\".\n"+
"ERROR: buildlink3.mk:14: \"/mk/motif.buildlink3.mk\" does not exist.\n"+
"ERROR: buildlink3.mk:2: This comment indicates unfinished work (url2pkg).\n")
}
// Before version 5.3, pkglint wrongly warned here.
// The mk/haskell.mk file takes care of constructing the correct PKGNAME,
// but pkglint had not looked at that file.
func (s *Suite) Test_ChecklinesBuildlink3Mk_name_mismatch(c *check.C) {
G.globalData.InitVartypes()
G.Pkg = NewPackage("x11/hs-X11")
G.Pkg.EffectivePkgbase = "X11"
G.Pkg.EffectivePkgnameLine = NewMkLine(NewLine("Makefile", 3, "DISTNAME=\tX11-1.0", nil))
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\ths-X11",
"",
".if !defined(HS_X11_BUILDLINK3_MK)",
"HS_X11_BUILDLINK3_MK:=",
"",
"BUILDLINK_API_DEPENDS.hs-X11+=\ths-X11>=1.6.1",
"BUILDLINK_ABI_DEPENDS.hs-X11+=\ths-X11>=1.6.1.2nb2",
"",
".endif\t# HS_X11_BUILDLINK3_MK",
"",
"BUILDLINK_TREE+=\t-hs-X11")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, "ERROR: buildlink3.mk:3: Package name mismatch between \"hs-X11\" in this file and \"X11\" from Makefile:3.\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_name_mismatch_multiple_inclusion(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\tpkgbase1",
"",
".if !defined(PKGBASE2_BUILDLINK3_MK)",
"PKGBASE2_BUILDLINK3_MK:=",
"",
".endif",
"",
"BUILDLINK_TREE+=\t-pkgbase1")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, ""+
"ERROR: buildlink3.mk:5: Package name mismatch between multiple-inclusion guard \"PKGBASE2\" (expected \"PKGBASE1\") and package name \"pkgbase1\" (from line 3).\n"+
"WARN: buildlink3.mk:9: Definition of BUILDLINK_API_DEPENDS is missing.\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_name_mismatch_abi_api(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\ths-X11",
"",
".if !defined(HS_X11_BUILDLINK3_MK)",
"HS_X11_BUILDLINK3_MK:=",
"",
"BUILDLINK_API_DEPENDS.hs-X11+=\ths-X11>=1.6.1",
"BUILDLINK_ABI_DEPENDS.hs-X11+=\ths-X12>=1.6.1.2nb2",
"",
".endif\t# HS_X11_BUILDLINK3_MK",
"",
"BUILDLINK_TREE+=\t-hs-X11")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, "WARN: buildlink3.mk:9: Package name mismatch between ABI \"hs-X12\" and API \"hs-X11\" (from line 8).\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_abi_api_versions(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\ths-X11",
"",
".if !defined(HS_X11_BUILDLINK3_MK)",
"HS_X11_BUILDLINK3_MK:=",
"",
"BUILDLINK_API_DEPENDS.hs-X11+=\ths-X11>=1.6.1",
"BUILDLINK_ABI_DEPENDS.hs-X11+=\ths-X11>=1.6.0",
"",
".endif\t# HS_X11_BUILDLINK3_MK",
"",
"BUILDLINK_TREE+=\t-hs-X11")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, ""+
"WARN: buildlink3.mk:9: ABI version \"1.6.0\" should be at least API version \"1.6.1\" (see line 8).\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_no_BUILDLINK_TREE_at_beginning(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
".if !defined(HS_X11_BUILDLINK3_MK)",
"HS_X11_BUILDLINK3_MK:=",
"",
"BUILDLINK_DEPMETHOD.hs-X11?=\tfull",
"BUILDLINK_API_DEPENDS.hs-X11+=\ths-X11>=1.6.1",
"BUILDLINK_ABI_DEPENDS.hs-X11+=\ths-X11>=1.6.1.2nb2",
"",
".endif\t# HS_X11_BUILDLINK3_MK",
"",
"BUILDLINK_TREE+=\t-hs-X11")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, "WARN: buildlink3.mk:3: Expected a BUILDLINK_TREE line.\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_no_BUILDLINK_TREE_at_end(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_DEPMETHOD.hs-X11?=\tfull",
"",
"BUILDLINK_TREE+=\ths-X11",
"",
".if !defined(HS_X11_BUILDLINK3_MK)",
"HS_X11_BUILDLINK3_MK:=",
"",
"BUILDLINK_API_DEPENDS.hs-X11+=\ths-X11>=1.6.1",
"BUILDLINK_ABI_DEPENDS.hs-X11+=\ths-X11>=1.6.1.2nb2",
"",
".endif\t# HS_X11_BUILDLINK3_MK",
"",
"# needless comment",
"BUILDLINK_TREE+=\t-hs-X11")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, ""+
"WARN: buildlink3.mk:3: This line belongs inside the .ifdef block.\n"+
"WARN: buildlink3.mk:15: This line should contain the following text: BUILDLINK_TREE+=\t-hs-X11\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_multiple_inclusion_wrong(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\ths-X11",
"",
".if !defined(HS_X11_BUILDLINK3_MK)",
"UNRELATED_BUILDLINK3_MK:=")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, ""+
"WARN: buildlink3.mk:6: UNRELATED_BUILDLINK3_MK is defined but not used. Spelling mistake?\n"+
"WARN: buildlink3.mk:6: This line should contain the following text: HS_X11_BUILDLINK3_MK:=\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_missing_endif(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\tpkgbase1",
"",
".if !defined(PKGBASE1_BUILDLINK3_MK)",
"PKGBASE1_BUILDLINK3_MK:=")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, "WARN: buildlink3.mk:EOF: Expected .endif\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_unknown_dependency_patterns(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+= hs-X11",
"",
".if !defined(HS_X11_BUILDLINK3_MK)",
"HS_X11_BUILDLINK3_MK:=",
"",
"BUILDLINK_DEPMETHOD.hs-X11?=\tfull",
"BUILDLINK_API_DEPENDS.hs-X11+=\ths-X11!=1.6.1",
"BUILDLINK_ABI_DEPENDS.hs-X11+=\ths-X11!=1.6.1.2nb2",
"",
".endif\t# HS_X11_BUILDLINK3_MK",
"",
"BUILDLINK_TREE+=\t-hs-X11")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, ""+
"WARN: buildlink3.mk:9: Unknown dependency pattern \"hs-X11!=1.6.1\".\n"+
"WARN: buildlink3.mk:10: Unknown dependency pattern \"hs-X11!=1.6.1.2nb2\".\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_PKGBASE_with_variable(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\t${PYPKGPREFIX}-wxWidgets",
"",
".if !defined(PY_WXWIDGETS_BUILDLINK3_MK)",
"PY_WXWIDGETS_BUILDLINK3_MK:=",
"",
"BUILDLINK_API_DEPENDS.${PYPKGPREFIX}-wxWidgets+=\t${PYPKGPREFIX}-wxWidgets>=2.6.1.0",
"BUILDLINK_ABI_DEPENDS.${PYPKGPREFIX}-wxWidgets+=\t${PYPKGPREFIX}-wxWidgets>=2.8.10.1nb26",
"",
".endif",
"",
"BUILDLINK_TREE+=\t-${PYPKGPREFIX}-wxWidgets")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, "WARN: buildlink3.mk:3: Please use \"py\" instead of \"${PYPKGPREFIX}\" (also in other variables in this file).\n")
}
func (s *Suite) Test_ChecklinesBuildlink3Mk_PKGBASE_with_unknown_variable(c *check.C) {
G.globalData.InitVartypes()
mklines := s.NewMkLines("buildlink3.mk",
"# $"+"NetBSD$",
"",
"BUILDLINK_TREE+=\t${LICENSE}-wxWidgets",
"",
".if !defined(LICENSE_BUILDLINK3_MK)",
"LICENSE_BUILDLINK3_MK:=",
"",
"BUILDLINK_API_DEPENDS.${LICENSE}-wxWidgets+=\t${PYPKGPREFIX}-wxWidgets>=2.6.1.0",
"BUILDLINK_ABI_DEPENDS.${LICENSE}-wxWidgets+=\t${PYPKGPREFIX}-wxWidgets>=2.8.10.1nb26",
"",
".endif",
"",
"BUILDLINK_TREE+=\t-${PYPKGPREFIX}-wxWidgets")
ChecklinesBuildlink3Mk(mklines)
c.Check(s.Output(), equals, ""+
"WARN: buildlink3.mk:3: Please replace \"${LICENSE}\" with a simple string (also in other variables in this file).\n"+
"WARN: buildlink3.mk:13: This line should contain the following text: BUILDLINK_TREE+=\t-${LICENSE}-wxWidgets\n")
}