11import fnmatch
22import os
3+ import tempfile
34
45import nox
56
67REPO_TOOLS_REQ = \
78 'git+https://github.com/GoogleCloudPlatform/python-repo-tools.git'
89
10+ COMMON_PYTEST_ARGS = [
11+ '-x' , '--no-success-flaky-report' , '--cov' , '--cov-config' ,
12+ '.coveragerc' , '--cov-append' , '--cov-report=' ]
13+
14+ SAMPLES = [
15+ 'bigquery/api' ,
16+ 'blog/introduction_to_data_models_in_cloud_datastore' ,
17+ 'cloud_logging/api' ,
18+ 'compute/api' ,
19+ 'compute/autoscaler/demo' ,
20+ 'datastore/api' ,
21+ 'managed_vms/cloudsql' ,
22+ 'managed_vms/datastore' ,
23+ 'managed_vms/disk' ,
24+ 'managed_vms/extending_runtime' ,
25+ 'managed_vms/hello_world' ,
26+ 'managed_vms/hello_world_compat' ,
27+ 'managed_vms/memcache' ,
28+ 'managed_vms/pubsub' ,
29+ 'managed_vms/static_files' ,
30+ 'managed_vms/storage' ,
31+ 'monitoring/api' ,
32+ 'storage/api' ,
33+ ]
34+
35+ GAE_SAMPLES = [
36+ 'appengine/app_identity/signing' ,
37+ 'appengine/bigquery' ,
38+ 'appengine/blobstore' ,
39+ 'appengine/cloudsql' ,
40+ 'appengine/images' ,
41+ 'appengine/localtesting' ,
42+ 'appengine/logging/reading_logs' ,
43+ 'appengine/logging/writing_logs' ,
44+ 'appengine/mailgun' ,
45+ 'appengine/memcache/guestbook' ,
46+ 'appengine/multitenancy' ,
47+ 'appengine/ndb/modeling' ,
48+ 'appengine/ndb/overview' ,
49+ 'appengine/ndb/transactions' ,
50+ 'appengine/storage' ,
51+ ]
52+
953
1054def session_lint (session ):
1155 session .install ('flake8' , 'flake8-import-order' )
@@ -36,32 +80,6 @@ def session_reqcheck(session):
3680 session .run ('gcprepotools' , command , reqfile )
3781
3882
39- COMMON_PYTEST_ARGS = [
40- '-x' , '--no-success-flaky-report' , '--cov' , '--cov-config' ,
41- '.coveragerc' , '--cov-append' , '--cov-report=' ]
42-
43- SAMPLES = [
44- 'bigquery/api' ,
45- 'blog/introduction_to_data_models_in_cloud_datastore' ,
46- 'cloud_logging/api' ,
47- 'compute/api' ,
48- 'compute/autoscaler/demo' ,
49- 'datastore/api' ,
50- 'managed_vms/cloudsql' ,
51- 'managed_vms/datastore' ,
52- 'managed_vms/disk' ,
53- 'managed_vms/extending_runtime' ,
54- 'managed_vms/hello_world' ,
55- 'managed_vms/hello_world_compat' ,
56- 'managed_vms/memcache' ,
57- 'managed_vms/pubsub' ,
58- 'managed_vms/static_files' ,
59- 'managed_vms/storage' ,
60- 'monitoring/api' ,
61- 'storage/api' ,
62- ]
63-
64-
6583@nox .parametrize ('interpreter' , ['python2.7' , 'python3.4' ])
6684def session_tests (session , interpreter , extra_pytest_args = None ):
6785 session .interpreter = interpreter
@@ -77,7 +95,33 @@ def session_tests(session, interpreter, extra_pytest_args=None):
7795 success_codes = [0 , 5 ]) # Treat no test collected as success.
7896
7997
98+ def session_gae (session , extra_pytest_args = None ):
99+ session .interpreter = 'python2.7'
100+ session .install (REPO_TOOLS_REQ )
101+ session .install ('-r' , 'requirements-python2.7-dev.txt' )
102+
103+ # Install the app engine sdk and setup import paths.
104+ gae_root = os .environ .get ('GAE_ROOT' , tempfile .gettempdir ())
105+ session .env ['PYTHONPATH' ] = os .path .join (gae_root , 'google_appengine' )
106+ session .run ('gcprepotools' , 'download-appengine-sdk' , gae_root )
107+
108+ # Create a lib directory to prevent the GAE vendor library from
109+ # complaining.
110+ if not os .path .exists ('lib' ):
111+ os .makedirs ('lib' )
112+
113+ pytest_args = COMMON_PYTEST_ARGS + (extra_pytest_args or [])
114+
115+ for sample in (session .posargs or GAE_SAMPLES ):
116+ session .run (
117+ 'py.test' , sample ,
118+ * pytest_args ,
119+ success_codes = [0 , 5 ]) # Treat no test collected as success.
120+
121+
80122def session_travis (session ):
81123 """On travis, just run with python3.4 and don't run slow or flaky tests."""
82124 session_tests (
83125 session , 'python3.4' , extra_pytest_args = ['-m not slow and not flaky' ])
126+ session_gae (
127+ session , extra_pytest_args = ['-m not slow and not flaky' ])
0 commit comments