diff --git a/csharp/compatibility_tests/v3.0.0/test.sh b/csharp/compatibility_tests/v3.0.0/test.sh index 9fcf406c25f80..7c6df4fcc831e 100755 --- a/csharp/compatibility_tests/v3.0.0/test.sh +++ b/csharp/compatibility_tests/v3.0.0/test.sh @@ -34,6 +34,8 @@ cd $(dirname $0) # these tests). TEST_VERSION=3.0.0 +LAST_RELEASED=3.9.0 + # The old version of protobuf that we are testing compatibility against. This # is usually the same as TEST_VERSION (i.e., we use the tests extracted from # that version to test compatibility of the newest runtime against it), but it @@ -52,6 +54,10 @@ case "$1" in OLD_VERSION=3.1.0 OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.1.0/protoc-3.1.0-linux-x86_64.exe ;; + $LAST_RELEASED) + OLD_VERSION=$LAST_RELEASED + OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/$OLD_VERSION/protoc-$OLD_VERSION-linux-x86_64.exe + ;; *) echo "[ERROR]: Unknown version number: $1" exit 1 diff --git a/tests.sh b/tests.sh index 504bfdac67034..27db44424b229 100755 --- a/tests.sh +++ b/tests.sh @@ -147,6 +147,10 @@ build_csharp() { # Run csharp compatibility test between 3.0.0 and the current version. csharp/compatibility_tests/v3.0.0/test.sh 3.0.0 + + LAST_RELEASED=3.9.0 + # Run csharp compatibility test between last released and the current version. + csharp/compatibility_tests/v3.0.0/test.sh $LAST_RELEASED } build_golang() { diff --git a/update_compatibility_version.py b/update_compatibility_version.py new file mode 100644 index 0000000000000..7e111519969b8 --- /dev/null +++ b/update_compatibility_version.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# Usage: ./update_compatibility_version.py .. [] +# +# Example: +# ./update_compatibility_version.py 3.7.1 + +import datetime +import re +import sys +from xml.dom import minidom + +if len(sys.argv) < 2 or len(sys.argv) > 3: + print """ +[ERROR] Please specify a version. + +./update_version.py .. [] + +Example: +./update_version.py 3.7.1 2 +""" + exit(1) + +NEW_VERSION = sys.argv[1] +NEW_VERSION_INFO = NEW_VERSION.split('.') +if len(NEW_VERSION_INFO) != 3: + print """ +[ERROR] Version must be in the format .. + +Example: +./update_version.py 3.7.3 +""" + exit(1) + +if len(sys.argv) > 2: + RC_VERSION = int(sys.argv[2]) + # Do not update compatibility versions for rc release + if RC_VERSION != 0: + exit(0) + +def RewriteTextFile(filename, line_rewriter): + lines = open(filename, 'r').readlines() + updated_lines = [] + for line in lines: + updated_lines.append(line_rewriter(line)) + if lines == updated_lines: + print '%s was not updated. Please double check.' % filename + f = open(filename, 'w') + f.write(''.join(updated_lines)) + f.close() + + +def UpdateCsharp(): + RewriteTextFile('csharp/compatibility_tests/v3.0.0/test.sh', + lambda line : re.sub( + r'LAST_RELEASED=.*$', + 'LAST_RELEASED=%s' % NEW_VERSION, + line)) + +def UpdateTests(): + RewriteTextFile('tests.sh', + lambda line : re.sub( + r'LAST_RELEASED=.*$', + 'LAST_RELEASED=%s' % NEW_VERSION, + line)) + + +UpdateCsharp() +UpdateTests()