diff options
Diffstat (limited to 'pkgtools/pkglint/files/mkvarusechecker_test.go')
-rw-r--r-- | pkgtools/pkglint/files/mkvarusechecker_test.go | 92 |
1 files changed, 64 insertions, 28 deletions
diff --git a/pkgtools/pkglint/files/mkvarusechecker_test.go b/pkgtools/pkglint/files/mkvarusechecker_test.go index be9d5dfe83a..6fee1c066a8 100644 --- a/pkgtools/pkglint/files/mkvarusechecker_test.go +++ b/pkgtools/pkglint/files/mkvarusechecker_test.go @@ -355,7 +355,24 @@ func (s *Suite) Test_MkVarUseChecker_checkModifiersRange(c *check.C) { } func (s *Suite) Test_MkVarUseChecker_checkVarname(c *check.C) { - // FIXME + t := s.Init(c) + + mklines := t.NewMkLines("filename.mk", + "\t: $@", + ".if ${LOCALBASE} == /usr/pkg", // Use at load time + "\t: ${LOCALBASE}", // Use at run time + ".endif") + + mklines.ForEach(func(mkline *MkLine) { + mkline.ForEachUsed(func(varUse *MkVarUse, time VucTime) { + ck := NewMkVarUseChecker(varUse, mklines, mkline) + ck.checkVarname(time) + }) + }) + + t.CheckOutputLines( + "WARN: filename.mk:1: Please use \"${.TARGET}\" instead of \"$@\".", + "WARN: filename.mk:3: Please use PREFIX instead of LOCALBASE.") } func (s *Suite) Test_MkVarUseChecker_checkPermissions(c *check.C) { @@ -430,33 +447,6 @@ func (s *Suite) Test_MkVarUseChecker_checkPermissions__explain(c *check.C) { "\ttech-pkg@NetBSD.org mailing list.", "") } -func (s *Suite) Test_MkVarUseChecker_checkPermissions__load_time(c *check.C) { - t := s.Init(c) - - t.SetUpPkgsrc() - t.Chdir("category/package") - t.FinishSetUp() - mklines := t.NewMkLines("options.mk", - MkCvsID, - "", - "# don't include bsd.prefs.mk here", - "", - "WRKSRC:=\t${.CURDIR}", - ".if ${PKG_SYSCONFDIR.gdm} != \"etc\"", - ".endif") - - mklines.Check() - - // The PKG_SYSCONFDIR.* depend on the directory layout that is - // specified in mk.conf, therefore bsd.prefs.mk must be included first. - // - // Evaluating .CURDIR at load time is definitely ok since it is defined - // internally by bmake to be AlwaysInScope. - t.CheckOutputLines( - "WARN: options.mk:6: To use PKG_SYSCONFDIR.gdm at load time, " + - ".include \"../../mk/bsd.prefs.mk\" first.") -} - func (s *Suite) Test_MkVarUseChecker_checkPermissions__load_time_in_condition(c *check.C) { t := s.Init(c) @@ -860,6 +850,52 @@ func (s *Suite) Test_MkVarUseChecker_checkUseAtLoadTime__other_mk(c *check.C) { ".include \"../../mk/bsd.prefs.mk\" first.") } +func (s *Suite) Test_MkVarUseChecker_checkUseAtLoadTime__PKG_SYSCONFDIR(c *check.C) { + t := s.Init(c) + + t.SetUpVartypes() + t.Chdir("category/package") + mklines := t.NewMkLines("options.mk", + MkCvsID, + ".if ${PKG_SYSCONFDIR.gdm} != \"etc\"", + ".endif") + + mklines.Check() + + // The PKG_SYSCONFDIR.* directories typically start with ${PREFIX}. + // Since PREFIX is not defined until bsd.pkg.mk, including bsd.prefs.mk + // wouldn't help, therefore pkglint doesn't suggest it. + t.CheckOutputEmpty() +} + +func (s *Suite) Test_MkVarUseChecker_checkUseAtLoadTime__package_settable(c *check.C) { + t := s.Init(c) + + btAnything := &BasicType{"Anything", func(cv *VartypeCheck) {}} + t.SetUpType("PKG", btAnything, PackageSettable) + t.Chdir("category/package") + + test := func(filename CurrPath, diagnostics ...string) { + mklines := t.NewMkLines(filename, + MkCvsID, + ".if ${PKG} != \"etc\"", + ".endif") + + mklines.Check() + + t.CheckOutput(diagnostics) + } + + test("Makefile", + nil...) + + test("options.mk", + nil...) + + test("other.mk", + nil...) +} + func (s *Suite) Test_MkVarUseChecker_warnToolLoadTime(c *check.C) { t := s.Init(c) |