You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2016/11/17 17:58:22 UTC
[5/6] lucene-solr:branch_6_1: LUCENE-7542: Release smoker should fail
when CHANGES.txt has a release section for a future release
LUCENE-7542: Release smoker should fail when CHANGES.txt has a release section for a future release
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/6f7a20e8
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/6f7a20e8
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/6f7a20e8
Branch: refs/heads/branch_6_1
Commit: 6f7a20e8fb6c5f7831e9fe10d0d0034143be6fc7
Parents: 01be040
Author: Steve Rowe <sa...@apache.org>
Authored: Thu Nov 17 12:54:33 2016 -0500
Committer: Steve Rowe <sa...@apache.org>
Committed: Thu Nov 17 12:57:04 2016 -0500
----------------------------------------------------------------------
dev-tools/scripts/smokeTestRelease.py | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6f7a20e8/dev-tools/scripts/smokeTestRelease.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index 4e19a33..afa21e4 100644
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -424,6 +424,7 @@ reChangesSectionHREF = re.compile('<a id="(.*?)".*?>(.*?)</a>', re.IGNORECASE)
reUnderbarNotDashHTML = re.compile(r'<li>(\s*(LUCENE|SOLR)_\d\d\d\d+)')
reUnderbarNotDashTXT = re.compile(r'\s+((LUCENE|SOLR)_\d\d\d\d+)', re.MULTILINE)
def checkChangesContent(s, version, name, project, isHTML):
+ currentVersionTuple = versionToTuple(version, name)
if isHTML and s.find('Release %s' % version) == -1:
raise RuntimeError('did not see "Release %s" in %s' % (version, name))
@@ -452,7 +453,8 @@ def checkChangesContent(s, version, name, project, isHTML):
raise RuntimeError('did not see "%s" in %s' % (sub, name))
if isHTML:
- # Make sure a section only appears once under each release:
+ # Make sure that a section only appears once under each release,
+ # and that each release is not greater than the current version
seenIDs = set()
seenText = set()
@@ -461,6 +463,9 @@ def checkChangesContent(s, version, name, project, isHTML):
if text.lower().startswith('release '):
release = text[8:].strip()
seenText.clear()
+ releaseTuple = versionToTuple(release, name)
+ if releaseTuple > currentVersionTuple:
+ raise RuntimeError('Future release %s is greater than %s in %s' % (release, version, name))
if id in seenIDs:
raise RuntimeError('%s has duplicate section "%s" under release "%s"' % (name, text, release))
seenIDs.add(id)
@@ -468,6 +473,27 @@ def checkChangesContent(s, version, name, project, isHTML):
raise RuntimeError('%s has duplicate section "%s" under release "%s"' % (name, text, release))
seenText.add(text)
+
+reVersion = re.compile(r'(\d+)\.(\d+)(?:\.(\d+))?\s*(-alpha|-beta|final|RC\d+)?\s*(?:\[.*\])?', re.IGNORECASE)
+def versionToTuple(version, name):
+ versionMatch = reVersion.match(version)
+ if versionMatch is None:
+ raise RuntimeError('Version %s in %s cannot be parsed' % (version, name))
+ versionTuple = versionMatch.groups()
+ while versionTuple[-1] is None or versionTuple[-1] == '':
+ versionTuple = versionTuple[:-1]
+ if versionTuple[-1].lower() == '-alpha':
+ versionTuple = versionTuple[:-1] + ('0',)
+ elif versionTuple[-1].lower() == '-beta':
+ versionTuple = versionTuple[:-1] + ('1',)
+ elif versionTuple[-1].lower() == 'final':
+ versionTuple = versionTuple[:-2] + ('100',)
+ elif versionTuple[-1].lower()[:2] == 'rc':
+ versionTuple = versionTuple[:-2] + (versionTuple[-1][2:],)
+ print('%s: %s' % (version, versionTuple))
+ return versionTuple
+
+
reUnixPath = re.compile(r'\b[a-zA-Z_]+=(?:"(?:\\"|[^"])*"' + '|(?:\\\\.|[^"\'\\s])*' + r"|'(?:\\'|[^'])*')" \
+ r'|(/(?:\\.|[^"\'\s])*)' \
+ r'|("/(?:\\.|[^"])*")' \