Skip to content
Snippets Groups Projects
Commit 9dc90a5b authored by cypherpunks's avatar cypherpunks Committed by Nick Mathewson
Browse files

Add `check-changes` rule for checking formatting of changes files.

Additional fixes to make the change work;
- fix Python 2 vs 3 issues
- fix some PEP 8 warnings
- handle paths with numbers correctly
- mention the make rule in doc/HACKING.
parent 4ced3b59
No related branches found
No related tags found
No related merge requests found
......@@ -111,6 +111,12 @@ check-logs:
./scripts/maint/checkLogs.pl \
src/*/*.[ch] | sort -n
.PHONY: check-changes
check-changes:
@if test -d "$(top_srcdir)/changes"; then \
$(PYTHON) $(top_srcdir)/scripts/maint/lintChanges.py $(top_srcdir)/changes/*; \
fi
version:
@echo "Tor @VERSION@"
@if test -d "$(top_srcdir)/.git" && test -x "`which git 2>&1;true`"; then \
......
o Minor features (testing):
- Add make rule `check-changes` to verify the format of changes files.
Closes ticket 15180.
......@@ -61,9 +61,10 @@ it's a bugfix, mention what bug it fixes and when the bug was
introduced. To find out which Git tag the change was introduced in,
you can use "git describe --contains <sha1 of commit>".
If at all possible, try to create this file in the same commit where
you are making the change. Please give it a distinctive name that no
other branch will use for the lifetime of your change.
If at all possible, try to create this file in the same commit where you are
making the change. Please give it a distinctive name that no other branch will
use for the lifetime of your change. To verify the format of the changes file,
you can use "make check-changes".
When we go to make a release, we will concatenate all the entries
in changes to make a draft changelog, and clear the directory. We'll
......
#!/usr/bin/python
from __future__ import print_function
from __future__ import with_statement
import sys
import re
import os
def lintfile(fname):
have_warned = []
def warn(s):
if not have_warned:
have_warned.append(1)
print fname,":"
print "\t",s
print("{}:".format(fname))
print("\t{}".format(s))
m = re.search(r'(\d{3,})', fname)
m = re.search(r'(\d{3,})', os.path.basename(fname))
if m:
bugnum = m.group(1)
else:
......@@ -23,7 +26,7 @@ def lintfile(fname):
contents = f.read()
if bugnum and bugnum not in contents:
warn("bug number %s does not appear"%bugnum)
warn("bug number {} does not appear".format(bugnum))
lines = contents.split("\n")
isBug = ("bug" in lines[0] or "fix" in lines[0])
......@@ -44,11 +47,12 @@ def lintfile(fname):
if re.search(r'[bB]ug (\d+)', contents):
if not re.search(r'[Bb]ugfix on ', contents):
warn("bugfix does not say 'bugfix on X.Y.Z'")
elif not re.search('[fF]ixes ([a-z ]*)bug (\d+); bugfix on ', contents):
elif not re.search('[fF]ixes ([a-z ]*)bug (\d+); bugfix on ',
contents):
warn("bugfix incant is not semicoloned")
if __name__=='__main__':
if __name__ == '__main__':
for fname in sys.argv[1:]:
if fname.endswith("~"):
continue
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment