Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: third_party/recipe_engine/simulation_test.py

Issue 1347263002: Revert of Cross-repo recipe package system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/recipe_engine/recipe_test_api.py ('k') | third_party/recipe_engine/third_party/__init__.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/recipe_engine/simulation_test.py
diff --git a/third_party/recipe_engine/simulation_test.py b/third_party/recipe_engine/simulation_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a9b2cd1869c79bab82d14d01c722c7fd5028d22
--- /dev/null
+++ b/third_party/recipe_engine/simulation_test.py
@@ -0,0 +1,98 @@
+# Copyright 2014-2015 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.
+
+"""Provides simulator test coverage for individual recipes."""
+
+import logging
+import re
+import os
+import sys
+
+from . import expect_tests
+
+# This variable must be set in the dynamic scope of the functions in this file.
+# We do this instead of passing because the threading system of expect tests
+# doesn't know how to serialize it.
+_UNIVERSE = None
+
+def RunRecipe(test_data):
+ from .third_party import annotator
+ from . import main
+ from . import config_types
+
+ stream = annotator.StructuredAnnotationStream(stream=open(os.devnull, 'w'))
+ config_types.ResetTostringFns()
+ result = main.run_steps(
+ test_data.properties, stream, _UNIVERSE, test_data)
+
+ return expect_tests.Result(list(result.steps_ran.values()))
+
+
+def test_gen_coverage():
+ return (
+ [os.path.join(x, '*') for x in _UNIVERSE.recipe_dirs] +
+ [os.path.join(x, '*', 'example.py') for x in _UNIVERSE.module_dirs] +
+ [os.path.join(x, '*', 'test_api.py') for x in _UNIVERSE.module_dirs]
+ )
+
+def cover_omit():
+ omit = [ ]
+ for mod_dir_base in _UNIVERSE.module_dirs:
+ if os.path.isdir(mod_dir_base):
+ omit.append(os.path.join(mod_dir_base, '*', 'resources', '*'))
+ return omit
+
+@expect_tests.covers(test_gen_coverage)
+def GenerateTests():
+ from . import loader
+
+ cover_mods = [ ]
+ for mod_dir_base in _UNIVERSE.module_dirs:
+ if os.path.isdir(mod_dir_base):
+ cover_mods.append(os.path.join(mod_dir_base, '*', '*.py'))
+
+ for recipe_path, recipe_name in _UNIVERSE.loop_over_recipes():
+ recipe = _UNIVERSE.load_recipe(recipe_name)
+ test_api = loader.create_test_api(recipe.LOADED_DEPS, _UNIVERSE)
+
+ covers = cover_mods + [recipe_path]
+
+ for test_data in recipe.GenTests(test_api):
+ root, name = os.path.split(recipe_path)
+ name = os.path.splitext(name)[0]
+ expect_path = os.path.join(root, '%s.expected' % name)
+
+ test_data.properties['recipe'] = recipe_name.replace('\\', '/')
+ yield expect_tests.Test(
+ '%s.%s' % (recipe_name, test_data.name),
+ expect_tests.FuncCall(RunRecipe, test_data),
+ expect_dir=expect_path,
+ expect_base=test_data.name,
+ covers=covers,
+ break_funcs=(recipe.RunSteps,)
+ )
+
+
+def main(universe):
+ """Runs simulation tests on a given repo of recipes.
+
+ Args:
+ universe: a RecipeUniverse to operate on.
+ Returns:
+ Doesn't -- exits with a status code
+ """
+
+ # annotated_run has different behavior when these environment variables
+ # are set, so unset to make simulation tests environment-invariant.
+ for env_var in ['TESTING_MASTER_HOST',
+ 'TESTING_MASTER',
+ 'TESTING_SLAVENAME']:
+ if env_var in os.environ:
+ logging.warn("Ignoring %s environment variable." % env_var)
+ os.environ.pop(env_var)
+
+ global _UNIVERSE
+ _UNIVERSE = universe
+ expect_tests.main('recipe_simulation_test', GenerateTests,
+ cover_omit=cover_omit())
« no previous file with comments | « third_party/recipe_engine/recipe_test_api.py ('k') | third_party/recipe_engine/third_party/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698