From 96208a19f5ad66d4c5807acee03f9bcb0215bf18 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Wed, 17 Aug 2016 14:56:21 -0700 Subject: [PATCH] Unifiy app engine and python2.7 tests. Change-Id: Ie0df6747050035b2ef5f937951d5ff955073e6d4 --- appengine/standard/conftest.py | 15 +++++++++++++++ nox.py | 24 +++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/appengine/standard/conftest.py b/appengine/standard/conftest.py index 4fd85dcc9067..f8e5c3261e7a 100644 --- a/appengine/standard/conftest.py +++ b/appengine/standard/conftest.py @@ -12,6 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os + +import six + + # Import py.test hooks and fixtures for App Engine from gcp.testing.appengine import ( login, @@ -25,3 +30,13 @@ (pytest_runtest_call) (run_tasks) (testbed) + + +def pytest_ignore_collect(path, config): + """Skip App Engine tests in python 3 and if no SDK is available.""" + if 'appengine/standard' in str(path): + if six.PY3: + return True + if 'GAE_SDK_PATH' not in os.environ: + return True + return False diff --git a/nox.py b/nox.py index f2076c171711..31e38ac20abb 100644 --- a/nox.py +++ b/nox.py @@ -121,8 +121,11 @@ def filter_samples(sample_dirs, changed_files): def setup_appengine(session): """Installs the App Engine SDK.""" # Install the app engine sdk and setup import paths. + if session.interpreter.startswith('python3'): + return + gae_root = os.environ.get('GAE_ROOT', tempfile.gettempdir()) - session.env['PYTHONPATH'] = os.path.join(gae_root, 'google_appengine') + session.env['GAE_SDK_PATH'] = os.path.join(gae_root, 'google_appengine') session.run('gcprepotools', 'download-appengine-sdk', gae_root) # Create a lib directory to prevent the GAE vendor library from @@ -132,7 +135,7 @@ def setup_appengine(session): def run_tests_in_sesssion( - session, interpreter, sample_directories, use_appengine=False, + session, interpreter, sample_directories, use_appengine=True, skip_flaky=False, changed_only=False): """This is the main function for executing tests. @@ -189,13 +192,12 @@ def session_tests(session, interpreter): """Runs tests for all non-gae standard samples.""" # session.posargs is any leftover arguments from the command line, # which allows users to run a particular test instead of all of them. - if session.posargs: - sample_directories = session.posargs - elif sample_directories is None: - sample_directories = collect_sample_dirs( - '.', set('./appengine/standard')) + sample_directories = session.posargs + if not sample_directories: + sample_directories = collect_sample_dirs('.') - run_tests_in_sesssion(session, interpreter, sample_directories) + run_tests_in_sesssion( + session, interpreter, sample_directories, skip_flaky=True) def session_gae(session): @@ -212,12 +214,12 @@ def session_travis(session, subsession): sample_directories = collect_sample_dirs( '.', set('./appengine/standard')) run_tests_in_sesssion( - session, 'python3.4', sample_directories, skip_flaky=True, - changed_only=True) + session, 'python3.4', sample_directories, + skip_flaky=True, changed_only=True) else: sample_directories = collect_sample_dirs('appengine/standard') run_tests_in_sesssion( - session, 'python2.7', sample_directories, use_appengine=True, + session, 'python2.7', sample_directories, skip_flaky=True, changed_only=True)