about summary refs log tree commit diff stats
path: root/cpp/011load
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-04-08 01:02:42 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-04-08 01:02:42 -0700
commit96f19e1e57c9d8508c7003aa4de4a87d0c7239c3 (patch)
treef4030c20c24202fd814b9a1ee04d507cd7b07c9c /cpp/011load
parente38c85a1eb6a0107ed43d7d7dbc9f4080a917c59 (diff)
downloadmu-96f19e1e57c9d8508c7003aa4de4a87d0c7239c3.tar.gz
1038 - clean up layer organization a little
Things are quite intricate to avoid reloading all recipes before every
test. But mu wasn't really intended to sidestep intrinsic intricacy.
Diffstat (limited to 'cpp/011load')
-rw-r--r--cpp/011load15
1 files changed, 14 insertions, 1 deletions
diff --git a/cpp/011load b/cpp/011load
index c111ba42..3ef1a409 100644
--- a/cpp/011load
+++ b/cpp/011load
@@ -24,7 +24,6 @@ vector<recipe_number> add_recipes(istream& in) {
     // Command Handlers
     if (command == "recipe") {
       result.push_back(add_recipe(in));
-      recipes_added_by_test.push_back(result.back());
     }
     // End Command Handlers
     else {
@@ -65,6 +64,8 @@ recipe_number add_recipe(istream& in) {
   }
   Recipe[r].name = recipe_name;
 //?   cout << "recipe " << recipe_name << " has " << Recipe[r].steps.size() << " steps.\n"; //? 1
+  // track added recipes because we may need to undo them in tests; see below
+  recently_added_recipes.push_back(r);
   return r;
 }
 
@@ -187,6 +188,18 @@ void skip_comma(istream& in) {
   skip_whitespace(in);
 }
 
+//: Recipes added for tests should be easy to remove as well.
+:(before "End Globals")
+vector<recipe_number> recently_added_recipes;
+:(before "End Setup")
+for (size_t i = 0; i < recently_added_recipes.size(); ++i) {
+//?   cout << "AAA clearing " << Recipe[recently_added_recipes[i]].name << '\n'; //? 2
+  Recipe_number.erase(Recipe[recently_added_recipes[i]].name);
+  Recipe.erase(recently_added_recipes[i]);
+}
+// Clear state for recently_added_recipes
+recently_added_recipes.clear();
+
 :(scenario parse_comment_outside_recipe)
 # comment
 recipe main [