pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/pkgtools/pkglint pkgtools/pkglint: update to 5.7.14
details: https://anonhg.NetBSD.org/pkgsrc/rev/85b447216471
branches: trunk
changeset: 397564:85b447216471
user: rillig <rillig%pkgsrc.org@localhost>
date: Sun Jun 30 20:56:18 2019 +0000
description:
pkgtools/pkglint: update to 5.7.14
Changes since 5.7.13:
- Removed the -Cextra command line option since it didn't produce useful
warnings.
- Removed unwarranted warnings about _WRAP_EXTRA_ARGS.CC being used in
packages.
- Cleaned up the canonical order of variables in package Makefiles.
- Added a few commands to those that cannot fail, to reduce the number of
"at the left of the | operator" in shell programs.
- Fixed warnings about "-ggdb" being an unknown shell command.
- Reduced number of warnings about lists being used where a single value
is expected.
- Replaced unreliable check for invalid CFLAGS and LDFLAGS with a more
practical check.
- Renamed "RCS tag" to "CVS tag" to make the diagnostics more modern.
- Added warning when PKGNAME or PKGVERSION is used in MASTER_SITES.
- Reworded warning for missing or superfluous PLIST files.
- Lots of other detail changes, refactorings and automatic tests.
diffstat:
pkgtools/pkglint/Makefile | 4 +-
pkgtools/pkglint/files/alternatives.go | 4 +-
pkgtools/pkglint/files/alternatives_test.go | 2 +-
pkgtools/pkglint/files/autofix.go | 50 +-
pkgtools/pkglint/files/autofix_test.go | 148 +-
pkgtools/pkglint/files/buildlink3.go | 18 +-
pkgtools/pkglint/files/buildlink3_test.go | 78 +-
pkgtools/pkglint/files/category.go | 8 +-
pkgtools/pkglint/files/category_test.go | 31 +-
pkgtools/pkglint/files/check_test.go | 159 +-
pkgtools/pkglint/files/cmd/pkglint/main.go | 2 +-
pkgtools/pkglint/files/distinfo.go | 45 +-
pkgtools/pkglint/files/distinfo_test.go | 72 +-
pkgtools/pkglint/files/files.go | 10 +-
pkgtools/pkglint/files/files_test.go | 34 +-
pkgtools/pkglint/files/fuzzer_test.go | 2 +-
pkgtools/pkglint/files/getopt/getopt_test.go | 12 +-
pkgtools/pkglint/files/intqa/testnames.go | 31 -
pkgtools/pkglint/files/licenses.go | 4 +-
pkgtools/pkglint/files/line.go | 48 +-
pkgtools/pkglint/files/line_test.go | 4 +-
pkgtools/pkglint/files/linechecker.go | 2 +-
pkgtools/pkglint/files/linelexer.go | 22 +-
pkgtools/pkglint/files/lines.go | 36 +-
pkgtools/pkglint/files/lines_test.go | 6 +-
pkgtools/pkglint/files/logging.go | 2 +-
pkgtools/pkglint/files/logging_test.go | 2 +-
pkgtools/pkglint/files/mkline.go | 331 +++--
pkgtools/pkglint/files/mkline_test.go | 179 ++-
pkgtools/pkglint/files/mklinechecker.go | 100 +-
pkgtools/pkglint/files/mklinechecker_test.go | 359 ++++--
pkgtools/pkglint/files/mklines.go | 247 ++-
pkgtools/pkglint/files/mklines_test.go | 388 +++++-
pkgtools/pkglint/files/mkparser.go | 324 ++--
pkgtools/pkglint/files/mkparser_test.go | 405 ++++++-
pkgtools/pkglint/files/mkshparser.go | 4 +-
pkgtools/pkglint/files/mkshparser_test.go | 2 +-
pkgtools/pkglint/files/mkshtypes.go | 9 +-
pkgtools/pkglint/files/mkshwalker.go | 11 +-
pkgtools/pkglint/files/mkshwalker_test.go | 58 +-
pkgtools/pkglint/files/mktokenslexer_test.go | 1 -
pkgtools/pkglint/files/mktypes_test.go | 15 +-
pkgtools/pkglint/files/options.go | 20 +-
pkgtools/pkglint/files/options_test.go | 32 +-
pkgtools/pkglint/files/package.go | 788 ++++++++-----
pkgtools/pkglint/files/package_test.go | 1434 ++++++++++++++++++++++--
pkgtools/pkglint/files/paragraph.go | 39 +-
pkgtools/pkglint/files/paragraph_test.go | 75 +-
pkgtools/pkglint/files/patches.go | 152 +-
pkgtools/pkglint/files/patches_test.go | 187 +-
pkgtools/pkglint/files/pkglint.1 | 6 +-
pkgtools/pkglint/files/pkglint.go | 329 ++--
pkgtools/pkglint/files/pkglint_test.go | 289 ++--
pkgtools/pkglint/files/pkgsrc.go | 288 ++--
pkgtools/pkglint/files/pkgsrc_test.go | 340 +++++-
pkgtools/pkglint/files/plist.go | 119 +-
pkgtools/pkglint/files/plist_test.go | 325 ++++-
pkgtools/pkglint/files/redundantscope.go | 18 +-
pkgtools/pkglint/files/redundantscope_test.go | 12 +-
pkgtools/pkglint/files/shell.go | 64 +-
pkgtools/pkglint/files/shell_test.go | 376 +++++-
pkgtools/pkglint/files/shtokenizer.go | 22 +-
pkgtools/pkglint/files/shtokenizer_test.go | 2 +-
pkgtools/pkglint/files/shtypes.go | 2 +
pkgtools/pkglint/files/shtypes_test.go | 7 +
pkgtools/pkglint/files/substcontext.go | 14 +-
pkgtools/pkglint/files/substcontext_test.go | 38 +-
pkgtools/pkglint/files/tools.go | 10 +-
pkgtools/pkglint/files/tools_test.go | 36 +-
pkgtools/pkglint/files/toplevel.go | 2 +-
pkgtools/pkglint/files/toplevel_test.go | 18 +-
pkgtools/pkglint/files/trace/tracing.go | 2 +-
pkgtools/pkglint/files/util.go | 200 ++-
pkgtools/pkglint/files/util_test.go | 156 ++-
pkgtools/pkglint/files/var.go | 22 +-
pkgtools/pkglint/files/var_test.go | 19 +-
pkgtools/pkglint/files/vardefs.go | 45 +-
pkgtools/pkglint/files/vardefs_test.go | 31 +-
pkgtools/pkglint/files/vartype.go | 16 +-
pkgtools/pkglint/files/vartype_test.go | 8 +-
pkgtools/pkglint/files/vartypecheck.go | 134 +-
pkgtools/pkglint/files/vartypecheck_test.go | 75 +-
82 files changed, 6185 insertions(+), 2836 deletions(-)
diffs (truncated from 18268 to 300 lines):
diff -r 16f12c481863 -r 85b447216471 pkgtools/pkglint/Makefile
--- a/pkgtools/pkglint/Makefile Sun Jun 30 20:53:23 2019 +0000
+++ b/pkgtools/pkglint/Makefile Sun Jun 30 20:56:18 2019 +0000
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.585 2019/06/10 19:51:57 rillig Exp $
+# $NetBSD: Makefile,v 1.586 2019/06/30 20:56:18 rillig Exp $
-PKGNAME= pkglint-5.7.13
+PKGNAME= pkglint-5.7.14
CATEGORIES= pkgtools
DISTNAME= tools
MASTER_SITES= ${MASTER_SITE_GITHUB:=golang/}
diff -r 16f12c481863 -r 85b447216471 pkgtools/pkglint/files/alternatives.go
--- a/pkgtools/pkglint/files/alternatives.go Sun Jun 30 20:53:23 2019 +0000
+++ b/pkgtools/pkglint/files/alternatives.go Sun Jun 30 20:56:18 2019 +0000
@@ -16,13 +16,13 @@
plist = G.Pkg.Plist
}
- checkPlistWrapper := func(line Line, wrapper string) {
+ checkPlistWrapper := func(line *Line, wrapper string) {
if plist.Files[wrapper] {
line.Errorf("Alternative wrapper %q must not appear in the PLIST.", wrapper)
}
}
- checkPlistAlternative := func(line Line, alternative string) {
+ checkPlistAlternative := func(line *Line, alternative string) {
relImplementation := strings.Replace(alternative, "@PREFIX@/", "", 1)
plistName := replaceAll(relImplementation, `@(\w+)@`, "${$1}")
if plist.Files[plistName] || G.Pkg.vars.Defined("ALTERNATIVES_SRC") {
diff -r 16f12c481863 -r 85b447216471 pkgtools/pkglint/files/alternatives_test.go
--- a/pkgtools/pkglint/files/alternatives_test.go Sun Jun 30 20:53:23 2019 +0000
+++ b/pkgtools/pkglint/files/alternatives_test.go Sun Jun 30 20:56:18 2019 +0000
@@ -17,7 +17,7 @@
"highscores @VARBASE@/game/scores",
"sbin/init /sbin/init")
t.CreateFileLines("PLIST",
- PlistRcsID,
+ PlistCvsID,
"bin/echo",
"bin/vim",
"sbin/sendmail.exim${EXIMVER}")
diff -r 16f12c481863 -r 85b447216471 pkgtools/pkglint/files/autofix.go
--- a/pkgtools/pkglint/files/autofix.go Sun Jun 30 20:53:23 2019 +0000
+++ b/pkgtools/pkglint/files/autofix.go Sun Jun 30 20:56:18 2019 +0000
@@ -13,7 +13,7 @@
// The modifications are kept in memory only,
// until they are written to disk by SaveAutofixChanges.
type Autofix struct {
- line Line
+ line *Line
linesBefore []string // Newly inserted lines, including \n
linesAfter []string // Newly inserted lines, including \n
// Whether an actual fix has been applied (or, without --show-autofix,
@@ -51,7 +51,10 @@
// Since these are not really diagnostics, duplicates are not suppressed.
const AutofixFormat = "AutofixFormat"
-func NewAutofix(line Line) *Autofix {
+func NewAutofix(line *Line) *Autofix {
+ // FIXME: replacing the returned value with
+ // &Autofix{line: line, autofixShortTerm: autofixShortTerm{anyway: true}}
+ // makes some tests output source code without diagnostic.
return &Autofix{line: line}
}
@@ -75,9 +78,7 @@
// Since a silent fix doesn't have a diagnostic, its explanation would
// not provide any clue as to what diagnostic it belongs. That would
// be confusing, therefore this case is not allowed.
- assertf(
- fix.diagFormat != SilentAutofixFormat,
- "Autofix: Silent fixes cannot have an explanation.")
+ assert(fix.diagFormat != SilentAutofixFormat)
fix.explanation = explanation
}
@@ -95,8 +96,19 @@
return
}
+ prefixFrom := prefix + from
+ prefixTo := prefix + to
+
+ n := 0
for _, rawLine := range fix.line.raw {
- replaced := strings.Replace(rawLine.textnl, prefix+from, prefix+to, 1)
+ n += strings.Count(rawLine.textnl, prefixFrom)
+ }
+ if n != 1 {
+ return
+ }
+
+ for _, rawLine := range fix.line.raw {
+ replaced := strings.Replace(rawLine.textnl, prefixFrom, prefixTo, 1)
if replaced != rawLine.textnl {
if G.Logger.IsAutofix() {
rawLine.textnl = replaced
@@ -108,7 +120,7 @@
// TODO: Do this properly by parsing the whole line again,
// and ideally everything that depends on the parsed line.
// This probably requires a generic notification mechanism.
- fix.line.Text = strings.Replace(fix.line.Text, prefix+from, prefix+to, 1)
+ fix.line.Text = strings.Replace(fix.line.Text, prefixFrom, prefixTo, 1)
}
fix.Describef(rawLine.Lineno, "Replacing %q with %q.", from, to)
return
@@ -274,11 +286,10 @@
func (fix *Autofix) Apply() {
line := fix.line
+ // Each autofix must have a log level and a diagnostic.
// To fix this assertion, call one of Autofix.Errorf, Autofix.Warnf
// or Autofix.Notef before calling Apply.
- assertf(
- fix.level != nil,
- "Each autofix must have a log level and a diagnostic.")
+ assert(fix.level != nil)
reset := func() {
if len(fix.actions) > 0 {
@@ -339,14 +350,14 @@
reset()
}
-func (fix *Autofix) Realign(mkline MkLine, newWidth int) {
+func (fix *Autofix) Realign(mkline *MkLine, newWidth int) {
// XXX: Check whether this method can be implemented as Custom fix.
// This complicated code should not be in the Autofix type.
fix.assertRealLine()
- assertf(mkline.IsMultiline(), "Line must be a multiline.")
- assertf(mkline.IsVarassign() || mkline.IsCommentedVarassign(), "Line must be a variable assignment.")
+ assert(mkline.IsMultiline())
+ assert(mkline.IsVarassign() || mkline.IsCommentedVarassign())
if fix.skip() {
return
@@ -409,8 +420,8 @@
"Autofix: format %q must end with a period.",
format)
}
- assertf(fix.level == nil, "Autofix can only have a single diagnostic.")
- assertf(fix.diagFormat == "", "Autofix can only have a single diagnostic.")
+ assert(fix.level == nil) // Autofix can only have a single diagnostic.
+ assert(fix.diagFormat == "") // Autofix can only have a single diagnostic.
fix.level = level
fix.diagFormat = format
@@ -418,22 +429,21 @@
}
func (fix *Autofix) skip() bool {
- assertf(
- fix.diagFormat != "",
- "Autofix: The diagnostic must be given before the action.")
+ assert(fix.diagFormat != "") // The diagnostic must be given before the action.
+
// This check is necessary for the --only command line option.
return !G.Logger.shallBeLogged(fix.diagFormat)
}
func (fix *Autofix) assertRealLine() {
- assertf(fix.line.firstLine >= 1, "Cannot autofix this line since it is not a real line.")
+ assert(fix.line.firstLine >= 1) // Cannot autofix this line since it is not a real line.
}
// SaveAutofixChanges writes the given lines back into their files,
// applying the autofix changes.
// The lines may come from different files.
// Only files that actually have changed lines are saved.
-func SaveAutofixChanges(lines Lines) (autofixed bool) {
+func SaveAutofixChanges(lines *Lines) (autofixed bool) {
if trace.Tracing {
defer trace.Call0()()
}
diff -r 16f12c481863 -r 85b447216471 pkgtools/pkglint/files/autofix_test.go
--- a/pkgtools/pkglint/files/autofix_test.go Sun Jun 30 20:53:23 2019 +0000
+++ b/pkgtools/pkglint/files/autofix_test.go Sun Jun 30 20:56:18 2019 +0000
@@ -14,9 +14,7 @@
fix := line.Autofix()
fix.Warnf("Warning 1.")
- t.ExpectPanic(
- func() { fix.Warnf("Warning 2.") },
- "Pkglint internal error: Autofix can only have a single diagnostic.")
+ t.ExpectAssert(func() { fix.Warnf("Warning 2.") })
}
func (s *Suite) Test_Autofix__default_leaves_line_unchanged(c *check.C) {
@@ -58,7 +56,7 @@
fix := line.Autofix()
fix.Warnf("Row should be replaced with line.")
- fix.ReplaceAfter("", "row", "line")
+ fix.ReplaceAfter("", "# row", "# line")
fix.ReplaceRegex(`row \d+`, "the above line", -1)
fix.InsertBefore("above")
fix.InsertAfter("below")
@@ -70,7 +68,7 @@
"below\n")
t.CheckOutputLines(
"WARN: ~/Makefile:1--2: Row should be replaced with line.",
- "AUTOFIX: ~/Makefile:1: Replacing \"row\" with \"line\".",
+ "AUTOFIX: ~/Makefile:1: Replacing \"# row\" with \"# line\".",
"AUTOFIX: ~/Makefile:2: Replacing \"row 1\" with \"the above line\".",
"AUTOFIX: ~/Makefile:1: Inserting a line \"above\" before this line.",
"AUTOFIX: ~/Makefile:2: Inserting a line \"below\" after this line.",
@@ -83,7 +81,29 @@
c.Check(fix.modified, equals, true)
}
-func (s *Suite) Test_Autofix_ReplaceAfter__autofix(c *check.C) {
+func (s *Suite) Test_Autofix_ReplaceAfter__autofix_in_continuation_line(c *check.C) {
+ t := s.Init(c)
+
+ t.SetUpCommandLine("--autofix", "--source")
+ mklines := t.SetUpFileMkLines("Makefile",
+ "# line 1 \\",
+ "continuation 1 \\",
+ "continuation 2")
+
+ fix := mklines.lines.Lines[0].Autofix()
+ fix.Warnf("Line should be replaced with Row.")
+ fix.ReplaceAfter("", "line", "row")
+ fix.Apply()
+
+ t.CheckOutputLines(
+ "AUTOFIX: ~/Makefile:1: Replacing \"line\" with \"row\".",
+ "-\t# line 1 \\",
+ "+\t# row 1 \\",
+ "\tcontinuation 1 \\",
+ "\tcontinuation 2")
+}
+
+func (s *Suite) Test_Autofix_ReplaceAfter__autofix_several_times_in_continuation_line(c *check.C) {
t := s.Init(c)
t.SetUpCommandLine("--autofix", "--source")
@@ -97,12 +117,25 @@
fix.ReplaceAfter("", "n", "v")
fix.Apply()
- t.CheckOutputLines(
- "AUTOFIX: ~/Makefile:1: Replacing \"n\" with \"v\".",
- "-\t# line 1 \\",
- "+\t# live 1 \\",
- "\tcontinuation 1 \\",
- "\tcontinuation 2")
+ // Nothing is logged or fixed because the "n" appears more than once,
+ // and as of June 2019, pkglint doesn't know which occurrence is the
+ // correct one.
+ t.CheckOutputEmpty()
+}
+
+func (s *Suite) Test_Autofix_ReplaceAfter__autofix_one_time(c *check.C) {
+ t := s.Init(c)
+
+ t.SetUpCommandLine("--autofix", "--source")
+ mklines := t.SetUpFileMkLines("Makefile",
+ MkCvsID,
+ "VAR=\t$$(var) $(var)")
+
+ mklines.Check()
+
+ // Nothing is replaced since, as of June 2019, pkglint doesn't
+ // know which of the two "$(var)" should be replaced.
+ t.CheckOutputEmpty()
}
func (s *Suite) Test_Autofix_ReplaceRegex__show_autofix(c *check.C) {
@@ -157,19 +190,19 @@
// After calling fix.Apply above, the autofix is ready to be used again.
fix.Warnf("Use Y instead of X.")
- fix.Replace("X", "Y")
+ fix.Replace("XXX", "YYY")
fix.Apply()
t.CheckOutputLines(
- "AUTOFIX: ~/Makefile:2: Replacing \"X\" with \"Y\".",
+ "AUTOFIX: ~/Makefile:2: Replacing \"XXX\" with \"YYY\".",
"-\tline2",
- "+\tYXXe2")
+ "+\tYYYe2")
SaveAutofixChanges(lines)
t.CheckFileLines("Makefile",
"line1",
- "YXXe2",
+ "YYYe2",
"line3")
}
@@ -188,7 +221,7 @@
fix.Apply()
Home |
Main Index |
Thread Index |
Old Index