diff options
author | Jon Wayne Parrott <jonwayne@google.com> | 2016-08-15 09:56:57 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-15 09:56:57 -0700 |
commit | 499375cea4c9c3e462ad09b3fa36554c92f85d91 (patch) | |
tree | 0bc5fb7606536c12c21bd2eb4835e4d637745c50 | |
parent | 9c1ece5ce4655fde6b665aaf2c2abf04a6f0a87d (diff) | |
download | oauth2client-499375cea4c9c3e462ad09b3fa36554c92f85d91.tar.gz |
Enable cover tox env on Travis (#628)
Replace fragile app engine sdk download script with gcprepotools script -
this ensures the SDK is up-to-date and is a no-op if the SDK is installed
and up-to-date.
Resolves #617
-rw-r--r-- | .travis.yml | 4 | ||||
-rwxr-xr-x | scripts/fetch_gae_sdk.py | 85 | ||||
-rwxr-xr-x | scripts/install.sh | 7 | ||||
-rw-r--r-- | tox.ini | 19 |
4 files changed, 11 insertions, 104 deletions
diff --git a/.travis.yml b/.travis.yml index b1be531..b73b67e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,6 +21,8 @@ matrix: env: TOX_ENV=system-tests - python: 3.4 env: TOX_ENV=system-tests3 + - python: 2.7 + env: TOX_ENV=cover env: global: - GAE_PYTHONPATH=${HOME}/.cache/google_appengine @@ -33,7 +35,7 @@ install: script: - ./scripts/run.sh after_success: -- if [[ "${TOX_ENV}" == "gae" ]]; then tox -e coveralls; fi +- if [[ "${TOX_ENV}" == "cover" ]]; then coveralls; fi notifications: email: false diff --git a/scripts/fetch_gae_sdk.py b/scripts/fetch_gae_sdk.py deleted file mode 100755 index 24a6db5..0000000 --- a/scripts/fetch_gae_sdk.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python -"""Fetch the most recent GAE SDK and decompress it in the current directory. - -Usage: - fetch_gae_sdk.py [<dest_dir>] - -Current releases are listed here: - https://www.googleapis.com/storage/v1/b/appengine-sdks/o?prefix=featured -""" -from __future__ import print_function - -import json -import os -import StringIO -import sys -import urllib2 -import zipfile - - -_SDK_URL = ( - 'https://www.googleapis.com/storage/v1/b/appengine-sdks/o?prefix=featured') - - -def get_gae_versions(): - try: - version_info_json = urllib2.urlopen(_SDK_URL).read() - except: - return {} - try: - version_info = json.loads(version_info_json) - except: - return {} - return version_info.get('items', {}) - - -def _version_tuple(v): - version_string = os.path.splitext(v['name'])[0].rpartition('_')[2] - return tuple(int(x) for x in version_string.split('.')) - - -def get_sdk_urls(sdk_versions): - python_releases = [v for v in sdk_versions - if v['name'].startswith('featured/google_appengine')] - current_releases = sorted(python_releases, key=_version_tuple, - reverse=True) - return [release['mediaLink'] for release in current_releases] - - -def main(argv): - if len(argv) > 2: - print('Usage: {0} [<destination_dir>]'.format(argv[0])) - return 1 - dest_dir = argv[1] if len(argv) > 1 else '.' - if not os.path.exists(dest_dir): - os.makedirs(dest_dir) - - if os.path.exists(os.path.join(dest_dir, 'google_appengine')): - print('GAE SDK already installed at {0}, exiting.'.format(dest_dir)) - return 0 - - sdk_versions = get_gae_versions() - if not sdk_versions: - print('Error fetching GAE SDK version info') - return 1 - sdk_urls = get_sdk_urls(sdk_versions) - for sdk_url in sdk_urls: - try: - sdk_contents = StringIO.StringIO(urllib2.urlopen(sdk_url).read()) - break - except: - pass - else: - print('Could not read SDK from any of ', sdk_urls) - return 1 - sdk_contents.seek(0) - try: - zip_contents = zipfile.ZipFile(sdk_contents) - zip_contents.extractall(dest_dir) - except: - print('Error extracting SDK contents') - return 1 - - -if __name__ == '__main__': - sys.exit(main(sys.argv[:])) diff --git a/scripts/install.sh b/scripts/install.sh index 13b209d..16f312f 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -16,11 +16,12 @@ set -ev -pip install tox +pip install --upgrade pip setuptools tox coveralls # App Engine tests require the App Engine SDK. -if [[ "${TOX_ENV}" == "gae" && ! -d ${GAE_PYTHONPATH} ]]; then - python scripts/fetch_gae_sdk.py `dirname ${GAE_PYTHONPATH}` +if [[ "${TOX_ENV}" == "gae" || "${TOX_ENV}" == "cover" ]]; then + pip install git+https://github.com/GoogleCloudPlatform/python-repo-tools.git + gcprepotools download-appengine-sdk `dirname ${GAE_PYTHONPATH}` fi # Travis ships with an old version of PyPy, so install at least version 2.6. @@ -1,5 +1,5 @@ [tox] -envlist = py27,py34,py35,pypy,gae,cover +envlist = flake8,py27,py34,py35,pypy,gae,cover [testenv] basedeps = mock>=1.3.0 @@ -31,7 +31,7 @@ commands = --cov=oauth2client \ --cov=tests \ --cov-append \ - --gae-sdk={env:GAE_PYTHONPATH} \ + --gae-sdk={env:GAE_PYTHONPATH:} \ tests/contrib/appengine deps = {[testenv]deps} coverage @@ -45,17 +45,6 @@ commands = deps = {[coverbase]deps} -[testenv:coveralls] -basepython = {[coverbase]basepython} -commands = - {[coverbase]commands} - coverage report --show-missing - coveralls -deps = - {[coverbase]deps} - coveralls -passenv = {[testenv:system-tests]passenv} - [testenv:docs] basepython = python2.7 deps = @@ -71,7 +60,7 @@ commands = {toxinidir}/scripts/build_docs.sh basepython = python2.7 deps = {[testenv]basedeps} commands = - py.test --gae-sdk={env:GAE_PYTHONPATH} tests/contrib/appengine + py.test --gae-sdk={env:GAE_PYTHONPATH:} tests/contrib/appengine [testenv:system-tests] basepython = @@ -111,7 +100,7 @@ deps = flake8-import-order [flake8] -exclude = .tox,.git,./*.egg,build, +exclude = .tox,.git,./*.egg,build,.cache,env,__pycache__ application-import-names = oauth2client, tests putty-ignore = # E402 module level import not at top of file |