Index: recipe_engine/simulation_test.py |
diff --git a/recipe_engine/simulation_test.py b/recipe_engine/simulation_test.py |
index 81091a0a362f8a19f24cdd09110c20df6e2f3613..87c81ff8a0618d9e807033e40cd96390dd860bb3 100644 |
--- a/recipe_engine/simulation_test.py |
+++ b/recipe_engine/simulation_test.py |
@@ -4,6 +4,8 @@ |
"""Provides simulator test coverage for individual recipes.""" |
+import StringIO |
+import contextlib |
import json |
import logging |
import os |
@@ -11,6 +13,7 @@ import re |
import sys |
from . import env |
+from . import stream |
import expect_tests |
# This variable must be set in the dynamic scope of the functions in this file. |
@@ -55,6 +58,24 @@ def RenderExpectation(test_data, raw_expectations): |
return expect_tests.Result(raw_expectations) |
+class SimulationAnnotatorStreamEngine(stream.AnnotatorStreamEngine): |
+ |
+ def __init__(self): |
+ self._step_buffer_map = {} |
+ super(SimulationAnnotatorStreamEngine, self).__init__( |
+ self.step_buffer(None)) |
+ |
+ def step_buffer(self, step_name): |
+ return self._step_buffer_map.setdefault(step_name, StringIO.StringIO()) |
+ |
+ def _new_step_stream(self, step_name, allow_subannotations, nest_level): |
+ return self._create_step_stream( |
+ step_name, |
+ self.step_buffer(step_name), |
+ allow_subannotations, |
+ nest_level) |
+ |
+ |
def RunRecipe(test_data): |
"""Actually runs the recipe given the GenTests-supplied test_data.""" |
from . import config_types |
@@ -64,8 +85,14 @@ def RunRecipe(test_data): |
from . import stream |
config_types.ResetTostringFns() |
- with stream.StreamEngineInvariants() as stream_engine: |
- step_runner = step_runner.SimulationStepRunner(stream_engine, test_data) |
+ |
+ annotator = SimulationAnnotatorStreamEngine() |
+ stream_engine = stream.ProductStreamEngine( |
+ stream.StreamEngineInvariants(), |
+ annotator) |
+ with stream_engine: |
+ step_runner = step_runner.SimulationStepRunner(stream_engine, test_data, |
+ annotator) |
engine = run.RecipeEngine(step_runner, test_data.properties, _UNIVERSE) |
recipe_script = _UNIVERSE.load_recipe(test_data.properties['recipe']) |