Project import generated by Copybara.

GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/.expect_tests_pretest.py b/.expect_tests_pretest.py
new file mode 100644
index 0000000..75456cd
--- /dev/null
+++ b/.expect_tests_pretest.py
@@ -0,0 +1,70 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# pylint: disable=undefined-variable
+
+import os
+import sys
+
+
+def _fix_sys_path_for_appengine(pretest_filename):
+  """Adds the App Engine built-in libraries to sys.path."""
+  # Scan the path to this file to locate the infra repo base directory.
+  infra_base_dir = os.path.abspath(pretest_filename)
+  pos = infra_base_dir.rfind('/infra/appengine')
+  if pos == -1:
+    return
+  infra_base_dir = infra_base_dir[:pos + len('/infra')]
+
+  # Remove the base infra directory from the path, since this isn't available
+  # on appengine.
+  sys.path.remove(infra_base_dir)
+
+  # Add the google_appengine directory.
+  pretest_APPENGINE_ENV_PATH = os.path.join(
+      os.path.dirname(infra_base_dir), 'gcloud', 'platform', 'google_appengine')
+  sys.path.insert(0, pretest_APPENGINE_ENV_PATH)
+
+  # Unfortunate hack, because of appengine.
+  import dev_appserver as pretest_dev_appserver
+  pretest_dev_appserver.fix_sys_path()
+
+  # Remove google_appengine SDK from sys.path after use.
+  sys.path.remove(pretest_APPENGINE_ENV_PATH)
+
+  # This is not added by fix_sys_path.
+  sys.path.append(os.path.join(pretest_APPENGINE_ENV_PATH, 'lib', 'mox'))
+
+
+def _load_appengine_config(pretest_filename):
+  """Runs appengine_config.py to reproduce the App Engine environment."""
+  app_dir = os.path.abspath(os.path.dirname(pretest_filename))
+
+  # Add the application directory to sys.path.
+  inserted = False
+  if app_dir not in sys.path:
+    sys.path.insert(0, app_dir)
+    inserted = True
+
+  # import appengine_config.py, thus executing its contents.
+  import appengine_config  # Unused Variable pylint: disable=W0612
+
+  # Clean up.
+  if inserted:
+    sys.path.remove(app_dir)
+
+
+# Using pretest_filename is magic, because it is available in the locals() of
+# the script which execfiles this file.
+_fix_sys_path_for_appengine(pretest_filename)
+
+os.environ['SERVER_SOFTWARE'] = 'test ' + os.environ.get('SERVER_SOFTWARE', '')
+os.environ['CURRENT_VERSION_ID'] = 'test.123'
+os.environ.setdefault('NO_GCE_CHECK', 'True')
+
+# Load appengine_config from the appengine project to ensure that any changes to
+# configuration there are available to the tests (e.g. sys.path modifications,
+# namespaces, etc.). This is according to
+# https://cloud.google.com/appengine/docs/python/tools/localunittesting
+_load_appengine_config(pretest_filename)