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:18 UTC

[1/6] lucene-solr:branch_6_3: LUCENE-7542: Release smoker should fail when CHANGES.txt has a release section for a future release

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_5_5 b8862d3b7 -> 719eae651
  refs/heads/branch_5x b2a0ccdfe -> 3d7c3d497
  refs/heads/branch_6_0 3e79bac4d -> b354ee3df
  refs/heads/branch_6_1 01be040cb -> 6f7a20e8f
  refs/heads/branch_6_2 4e7c6141a -> 9e5ae13ff
  refs/heads/branch_6_3 10dbe4de8 -> 94ffce67f


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/94ffce67
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/94ffce67
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/94ffce67

Branch: refs/heads/branch_6_3
Commit: 94ffce67f4959c2f9205082793e316481b64eb1c
Parents: 10dbe4d
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:55:16 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/94ffce67/dev-tools/scripts/smokeTestRelease.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index 7b18fdb..3def8fc 100644
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -431,6 +431,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))
@@ -459,7 +460,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()
 
@@ -468,6 +470,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)
@@ -475,6 +480,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'|("/(?:\\.|[^"])*")'   \


[2/6] lucene-solr:branch_5x: LUCENE-7542: Release smoker should fail when CHANGES.txt has a release section for a future release

Posted by sa...@apache.org.
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/3d7c3d49
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/3d7c3d49
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/3d7c3d49

Branch: refs/heads/branch_5x
Commit: 3d7c3d4979d01f209bc860cc1810e6ed42c85a58
Parents: b2a0ccd
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:55:49 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/3d7c3d49/dev-tools/scripts/smokeTestRelease.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index 3316583..69eea8e 100644
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -423,6 +423,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))
@@ -451,7 +452,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()
 
@@ -460,6 +462,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)
@@ -467,6 +472,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'|("/(?:\\.|[^"])*")' \


[5/6] lucene-solr:branch_6_1: LUCENE-7542: Release smoker should fail when CHANGES.txt has a release section for a future release

Posted by sa...@apache.org.
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'|("/(?:\\.|[^"])*")'   \


[6/6] lucene-solr:branch_6_0: LUCENE-7542: Release smoker should fail when CHANGES.txt has a release section for a future release

Posted by sa...@apache.org.
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/b354ee3d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b354ee3d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b354ee3d

Branch: refs/heads/branch_6_0
Commit: b354ee3dfc31f39a7154ca53bc2f02b57e2faf0a
Parents: 3e79bac
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:21 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/b354ee3d/dev-tools/scripts/smokeTestRelease.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index b7608f1..31b5ace 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'|("/(?:\\.|[^"])*")'   \


[4/6] lucene-solr:branch_6_2: LUCENE-7542: Release smoker should fail when CHANGES.txt has a release section for a future release

Posted by sa...@apache.org.
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/9e5ae13f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/9e5ae13f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/9e5ae13f

Branch: refs/heads/branch_6_2
Commit: 9e5ae13ffa98d1e74d3b830d0a4eedd9b4c2a4fd
Parents: 4e7c614
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:56:49 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/9e5ae13f/dev-tools/scripts/smokeTestRelease.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index 7b18fdb..3def8fc 100644
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -431,6 +431,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))
@@ -459,7 +460,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()
 
@@ -468,6 +470,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)
@@ -475,6 +480,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'|("/(?:\\.|[^"])*")'   \


[3/6] lucene-solr:branch_5_5: LUCENE-7542: Release smoker should fail when CHANGES.txt has a release section for a future release

Posted by sa...@apache.org.
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/719eae65
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/719eae65
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/719eae65

Branch: refs/heads/branch_5_5
Commit: 719eae6512c711e225eb5b3dc282b8b83aaaec12
Parents: b8862d3
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:56:11 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/719eae65/dev-tools/scripts/smokeTestRelease.py
----------------------------------------------------------------------
diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py
index 3316583..69eea8e 100644
--- a/dev-tools/scripts/smokeTestRelease.py
+++ b/dev-tools/scripts/smokeTestRelease.py
@@ -423,6 +423,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))
@@ -451,7 +452,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()
 
@@ -460,6 +462,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)
@@ -467,6 +472,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'|("/(?:\\.|[^"])*")' \