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.15
details: https://anonhg.NetBSD.org/pkgsrc/rev/9a74a0dc3ccf
branches: trunk
changeset: 335835:9a74a0dc3ccf
user: rillig <rillig%pkgsrc.org@localhost>
date: Mon Jul 01 22:25:52 2019 +0000
description:
pkgtools/pkglint: update to 5.7.15
Changes since 5.7.14:
* Added a check for packages that have been removed from the file system
but not been recorded in doc/CHANGES. This will help produce more
accurate release statistics.
* Small refactorings, as usual.
diffstat:
pkgtools/pkglint/Makefile | 4 +-
pkgtools/pkglint/files/autofix.go | 3 -
pkgtools/pkglint/files/autofix_test.go | 25 ++++++++++++++
pkgtools/pkglint/files/linelexer.go | 2 +-
pkgtools/pkglint/files/mklines.go | 2 +-
pkgtools/pkglint/files/mkparser.go | 26 +++++++-------
pkgtools/pkglint/files/package.go | 4 +-
pkgtools/pkglint/files/package_test.go | 4 +-
pkgtools/pkglint/files/pkglint_test.go | 2 +-
pkgtools/pkglint/files/pkgsrc.go | 49 ++++++++++++++++++++++++++--
pkgtools/pkglint/files/pkgsrc_test.go | 46 +++++++++++++++++++++++++-
pkgtools/pkglint/files/shtokenizer.go | 20 +++++-----
pkgtools/pkglint/files/substcontext_test.go | 8 ++--
pkgtools/pkglint/files/util.go | 6 +++
14 files changed, 154 insertions(+), 47 deletions(-)
diffs (truncated from 537 to 300 lines):
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/Makefile
--- a/pkgtools/pkglint/Makefile Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/Makefile Mon Jul 01 22:25:52 2019 +0000
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.586 2019/06/30 20:56:18 rillig Exp $
+# $NetBSD: Makefile,v 1.587 2019/07/01 22:25:52 rillig Exp $
-PKGNAME= pkglint-5.7.14
+PKGNAME= pkglint-5.7.15
CATEGORIES= pkgtools
DISTNAME= tools
MASTER_SITES= ${MASTER_SITE_GITHUB:=golang/}
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/autofix.go
--- a/pkgtools/pkglint/files/autofix.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/autofix.go Mon Jul 01 22:25:52 2019 +0000
@@ -52,9 +52,6 @@
const AutofixFormat = "AutofixFormat"
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}
}
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/autofix_test.go
--- a/pkgtools/pkglint/files/autofix_test.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/autofix_test.go Mon Jul 01 22:25:52 2019 +0000
@@ -988,6 +988,31 @@
t.CheckOutputEmpty()
}
+func (s *Suite) Test_Autofix_Apply__source_autofix_no_change(c *check.C) {
+ t := s.Init(c)
+
+ t.SetUpCommandLine("--autofix", "--source")
+ lines := t.SetUpFileLines("filename",
+ "word word word")
+
+ fix := lines.Lines[0].Autofix()
+ fix.Notef("Word should be replaced, but pkglint is not sure which one.")
+ fix.Replace("word", "replacement")
+ fix.Anyway()
+ fix.Apply()
+
+ lines.SaveAutofixChanges()
+
+ // Nothing is replaced since, as of June 2019, pkglint doesn't
+ // know which of the three "word" should be replaced.
+ //
+ // The note is not logged since fix.Anyway only applies when neither
+ // --show-autofix nor --autofix is given in the command line.
+ t.CheckOutputEmpty()
+ t.CheckFileLines("filename",
+ "word word word")
+}
+
// Ensures that without explanations, the separator between the individual
// diagnostics are generated.
func (s *Suite) Test_Autofix_Apply__source_without_explain(c *check.C) {
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/linelexer.go
--- a/pkgtools/pkglint/files/linelexer.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/linelexer.go Mon Jul 01 22:25:52 2019 +0000
@@ -48,7 +48,7 @@
}
if !llex.EOF() {
- if m := G.res.Match(llex.lines.Lines[llex.index].Text, re); m != nil {
+ if m := match(llex.lines.Lines[llex.index].Text, re); m != nil {
llex.index++
return m
}
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/mklines.go
--- a/pkgtools/pkglint/files/mklines.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/mklines.go Mon Jul 01 22:25:52 2019 +0000
@@ -451,7 +451,7 @@
break
}
if hasSuffix(varname, ".") {
- if !parser.lexer.SkipRegexp(G.res.Compile(`^<\w+>`)) {
+ if !parser.lexer.SkipRegexp(regcomp(`^<\w+>`)) {
break
}
varname += "*"
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/mkparser.go
--- a/pkgtools/pkglint/files/mkparser.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/mkparser.go Mon Jul 01 22:25:52 2019 +0000
@@ -251,7 +251,7 @@
case '=', 'D', 'M', 'N', 'U':
lexer.Skip(1)
- re := G.res.Compile(regex.Pattern(ifelseStr(closing == '}', `^([^$:\\}]|\$\$|\\.)+`, `^([^$:\\)]|\$\$|\\.)+`)))
+ re := regcomp(regex.Pattern(ifelseStr(closing == '}', `^([^$:\\}]|\$\$|\\.)+`, `^([^$:\\)]|\$\$|\\.)+`)))
for p.VarUse() != nil || lexer.SkipRegexp(re) {
}
arg := lexer.Since(mark)
@@ -268,7 +268,7 @@
}
case '[':
- if lexer.SkipRegexp(G.res.Compile(`^\[(?:[-.\d]+|#)\]`)) {
+ if lexer.SkipRegexp(regcomp(`^\[(?:[-.\d]+|#)\]`)) {
return lexer.Since(mark)
}
@@ -283,7 +283,7 @@
lexer.Reset(mark)
- re := G.res.Compile(regex.Pattern(ifelseStr(closing == '}', `^([^:$}]|\$\$)+`, `^([^:$)]|\$\$)+`)))
+ re := regcomp(regex.Pattern(ifelseStr(closing == '}', `^([^:$}]|\$\$)+`, `^([^:$)]|\$\$)+`)))
for p.VarUse() != nil || lexer.SkipRegexp(re) {
}
modifier := lexer.Since(mark)
@@ -309,7 +309,7 @@
func (p *MkParser) varUseText(closing byte) string {
lexer := p.lexer
start := lexer.Mark()
- re := G.res.Compile(regex.Pattern(ifelseStr(closing == '}', `^([^$:}]|\$\$)+`, `^([^$:)]|\$\$)+`)))
+ re := regcomp(regex.Pattern(ifelseStr(closing == '}', `^([^$:}]|\$\$)+`, `^([^$:)]|\$\$)+`)))
for p.VarUse() != nil || lexer.SkipRegexp(re) {
}
return lexer.Since(start)
@@ -391,7 +391,7 @@
return false
}
- re := G.res.Compile(`^([^$@\\]|\\.)+`)
+ re := regcomp(`^([^$@\\]|\\.)+`)
for p.VarUse() != nil || lexer.SkipString("$$") || lexer.SkipRegexp(re) {
}
@@ -498,11 +498,11 @@
if lhs != nil {
lexer.SkipHspace()
- if m := lexer.NextRegexp(G.res.Compile(`^(<|<=|==|!=|>=|>)[\t ]*(0x[0-9A-Fa-f]+|\d+(?:\.\d+)?)`)); m != nil {
+ if m := lexer.NextRegexp(regcomp(`^(<|<=|==|!=|>=|>)[\t ]*(0x[0-9A-Fa-f]+|\d+(?:\.\d+)?)`)); m != nil {
return &MkCond{CompareVarNum: &MkCondCompareVarNum{lhs, m[1], m[2]}}
}
- m := lexer.NextRegexp(G.res.Compile(`^(?:<|<=|==|!=|>=|>)`))
+ m := lexer.NextRegexp(regcomp(`^(?:<|<=|==|!=|>=|>)`))
if m == nil {
return &MkCond{Var: lhs} // See devel/bmake/files/cond.c:/\* For \.if \$/
}
@@ -510,7 +510,7 @@
op := m[0]
if op == "==" || op == "!=" {
- if mrhs := lexer.NextRegexp(G.res.Compile(`^"([^"\$\\]*)"`)); mrhs != nil {
+ if mrhs := lexer.NextRegexp(regcomp(`^"([^"\$\\]*)"`)); mrhs != nil {
return &MkCond{CompareVarStr: &MkCondCompareVarStr{lhs, op, mrhs[1]}}
}
}
@@ -559,7 +559,7 @@
}
// See devel/bmake/files/cond.c:/^CondCvtArg
- if m := lexer.NextRegexp(G.res.Compile(`^(?:0x[0-9A-Fa-f]+|\d+(?:\.\d+)?)`)); m != nil {
+ if m := lexer.NextRegexp(regcomp(`^(?:0x[0-9A-Fa-f]+|\d+(?:\.\d+)?)`)); m != nil {
return &MkCond{Num: m[0]}
}
}
@@ -652,8 +652,8 @@
for {
if p.VarUse() != nil ||
- lexer.SkipRegexp(G.res.Compile(`^[\w.*+,{}]+`)) ||
- lexer.SkipRegexp(G.res.Compile(`^\[[\w-]+\]`)) {
+ lexer.SkipRegexp(regcomp(`^[\w.*+,{}]+`)) ||
+ lexer.SkipRegexp(regcomp(`^\[[\w-]+\]`)) {
continue
}
@@ -696,7 +696,7 @@
return lexer.Since(mark)
}
- m := lexer.NextRegexp(G.res.Compile(`^\d[\w.]*`))
+ m := lexer.NextRegexp(regcomp(`^\d[\w.]*`))
if m != nil {
return m[0]
}
@@ -749,7 +749,7 @@
if lexer.SkipByte('-') && lexer.Rest() != "" {
versionMark := lexer.Mark()
- for p.VarUse() != nil || lexer.SkipRegexp(G.res.Compile(`^[\w\[\]*_.\-]+`)) {
+ for p.VarUse() != nil || lexer.SkipRegexp(regcomp(`^[\w\[\]*_.\-]+`)) {
}
if !lexer.SkipString("{,nb*}") {
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/package.go
--- a/pkgtools/pkglint/files/package.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/package.go Mon Jul 01 22:25:52 2019 +0000
@@ -1214,8 +1214,8 @@
}
func (pkg *Package) checkFreeze(filename string) {
- freezeStart := G.Pkgsrc.FreezeStart
- if freezeStart == "" {
+ freezeStart := G.Pkgsrc.LastFreezeStart
+ if freezeStart == "" || G.Pkgsrc.LastFreezeEnd != "" {
return
}
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/package_test.go
--- a/pkgtools/pkglint/files/package_test.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/package_test.go Mon Jul 01 22:25:52 2019 +0000
@@ -962,7 +962,7 @@
"ERROR: gnu-style.mk:1: Unknown Makefile line format: \"ifeq ($(CC),gcc)\".",
"ERROR: gnu-style.mk:3: Unknown Makefile line format: \"else\".",
"ERROR: gnu-style.mk:5: Unknown Makefile line format: \"endif\".",
- "ERROR: gnu-style.mk:1: Expected \"# $NetBSD: package_test.go,v 1.48 2019/06/30 20:56:19 rillig Exp $\".",
+ "ERROR: gnu-style.mk:1: Expected \""+MkCvsID+"\".",
"WARN: gnu-style.mk:2: IS_GCC is defined but not used.",
// There is no warning about files/gnu-style.mk since pkglint
@@ -983,7 +983,7 @@
"ERROR: ../../category/other/gnu-style.mk:1: Unknown Makefile line format: \"ifeq ($(CC),gcc)\".",
"ERROR: ../../category/other/gnu-style.mk:3: Unknown Makefile line format: \"else\".",
"ERROR: ../../category/other/gnu-style.mk:5: Unknown Makefile line format: \"endif\".",
- "ERROR: ../../category/other/gnu-style.mk:1: Expected \"# $NetBSD: package_test.go,v 1.48 2019/06/30 20:56:19 rillig Exp $\".",
+ "ERROR: ../../category/other/gnu-style.mk:1: Expected \""+MkCvsID+"\".",
"WARN: ../../category/other/gnu-style.mk:2: IS_GCC is defined but not used.",
"ERROR: patches/patch-Makefile.mk: Contains no patch.",
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/pkglint_test.go
--- a/pkgtools/pkglint/files/pkglint_test.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/pkglint_test.go Mon Jul 01 22:25:52 2019 +0000
@@ -246,7 +246,7 @@
exitcode := t.Main("-Wall", "--autofix", t.File("filename.mk"))
t.CheckOutputLines(
- "AUTOFIX: ~/filename.mk:1: Inserting a line \"# $NetBSD: pkglint_test.go,v 1.44 2019/06/30 20:56:19 rillig Exp $\" before this line.")
+ "AUTOFIX: ~/filename.mk:1: Inserting a line \"" + MkCvsID + "\" before this line.")
t.Check(exitcode, equals, 0)
}
diff -r 55ee768f1ef9 -r 9a74a0dc3ccf pkgtools/pkglint/files/pkgsrc.go
--- a/pkgtools/pkglint/files/pkgsrc.go Mon Jul 01 22:13:09 2019 +0000
+++ b/pkgtools/pkglint/files/pkgsrc.go Mon Jul 01 22:25:52 2019 +0000
@@ -36,8 +36,9 @@
suggestedUpdates []SuggestedUpdate
suggestedWipUpdates []SuggestedUpdate
- LastChange map[string]*Change
- FreezeStart string // e.g. "2018-01-01", or ""
+ LastChange map[string]*Change
+ LastFreezeStart string // e.g. "2018-01-01", or ""
+ LastFreezeEnd string // e.g. "2018-01-01", or ""
listVersions map[string][]string // See Pkgsrc.ListVersions
@@ -64,6 +65,7 @@
nil,
make(map[string]*Change),
"",
+ "",
make(map[string][]string),
NewScope(),
make(map[string]string),
@@ -517,11 +519,14 @@
if hasPrefix(line.Text, "\tmk/") {
infra = true
if hasPrefix(line.Text, "\tmk/bsd.pkg.mk: started freeze for") {
- if m, freezeDate := match1(line.Text, `(\d\d\d\d-\d\d-\d\d)\]$`); m {
- src.FreezeStart = freezeDate
+ if m, date := match1(line.Text, `(\d\d\d\d-\d\d-\d\d)\]$`); m {
+ src.LastFreezeStart = date
+ src.LastFreezeEnd = ""
}
} else if hasPrefix(line.Text, "\tmk/bsd.pkg.mk: freeze ended for") {
- src.FreezeStart = ""
+ if m, date := match1(line.Text, `(\d\d\d\d-\d\d-\d\d)\]$`); m {
+ src.LastFreezeEnd = date
+ }
}
}
if infra {
@@ -603,6 +608,40 @@
}
}
}
+
+ src.checkRemovedAfterLastFreeze()
+}
+
+func (src *Pkgsrc) checkRemovedAfterLastFreeze() {
+ if src.LastFreezeStart == "" || G.Wip {
+ return
+ }
+
+ var wrong []*Change
+ for pkgpath, change := range src.LastChange {
+ switch change.Action {
+ case Added, Updated, Downgraded:
+ if !dirExists(src.File(pkgpath)) {
+ wrong = append(wrong, change)
Home |
Main Index |
Thread Index |
Old Index