From 94c7ccd589d9d298a01a5b01bffda80080086ab0 Mon Sep 17 00:00:00 2001 From: Steve Rowe Date: Wed, 25 May 2016 16:09:22 -0400 Subject: [PATCH] - Modernize example usage - Fail if script version is incompatible with release version --- dev-tools/scripts/smokeTestRelease.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/dev-tools/scripts/smokeTestRelease.py b/dev-tools/scripts/smokeTestRelease.py index fdb92889247..4e19a3381e6 100644 --- a/dev-tools/scripts/smokeTestRelease.py +++ b/dev-tools/scripts/smokeTestRelease.py @@ -1192,7 +1192,7 @@ revision_re = re.compile(r'rev([a-f\d]+)') def parse_config(): epilogue = textwrap.dedent(''' Example usage: - python3.2 -u dev-tools/scripts/smokeTestRelease.py http://people.apache.org/~whoever/staging_area/lucene-solr-4.3.0-RC1-rev1469340 + python3 -u dev-tools/scripts/smokeTestRelease.py https://dist.apache.org/repos/dist/dev/lucene/lucene-solr-6.0.1-RC2-revc7510a0... ''') description = 'Utility to test a release.' parser = argparse.ArgumentParser(description=description, epilog=epilogue, @@ -1350,8 +1350,25 @@ def confirmAllReleasesAreTestedForBackCompat(smokeVersion, unpackPath): else: print(' success!') +def getScriptVersion(): + topLevelDir = '../..' # Assumption: this script is in dev-tools/scripts/ of a checkout + m = re.compile(r'(.*)/').match(sys.argv[0]) # Get this script's directory + if m is not None and m.group(1) != '.': + origCwd = os.getcwd() + os.chdir(m.group(1)) + os.chdir('../..') + topLevelDir = os.getcwd() + os.chdir(origCwd) + reBaseVersion = re.compile(r'version\.base\s*=\s*(\d+\.\d+)') + return reBaseVersion.search(open('%s/lucene/version.properties' % topLevelDir).read()).group(1) + def main(): c = parse_config() + + scriptVersion = getScriptVersion() + if not c.version.startswith(scriptVersion + '.'): + raise RuntimeError('smokeTestRelease.py for %s.X is incompatible with a %s release.' % (scriptVersion, c.version)) + print('NOTE: output encoding is %s' % sys.stdout.encoding) smokeTest(c.java, c.url, c.revision, c.version, c.tmp_dir, c.is_signed, ' '.join(c.test_args))