From f7e03ca60e86c466762f4d55e0ddc21579c8653b Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Mon, 17 Dec 2018 04:02:46 +0800 Subject: [PATCH] Add Rake tasks openfoodnetwork:specs:engines:NAME:rspec The task name follows the directory name under engines/. For example, for the Web engine in engines/web, run: bundle exec rake openfoodnetwork:specs:engines:web:rspec --- lib/tasks/specs.rake | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/tasks/specs.rake diff --git a/lib/tasks/specs.rake b/lib/tasks/specs.rake new file mode 100644 index 0000000000..544c011ce6 --- /dev/null +++ b/lib/tasks/specs.rake @@ -0,0 +1,30 @@ +namespace :openfoodnetwork do + namespace :specs do + namespace :engines do + def detect_engine_paths + Pathname("engines/").children.select(&:directory?) + end + + def engine_name_for_engine(engine_path) + engine_path.basename.to_path + end + + def execute_rspec_for_engine(engine_path) + system "cd #{engine_path.expand_path} && bundle exec rspec" + end + + engine_paths = detect_engine_paths + + engine_paths.each do |engine_path| + engine_name = engine_name_for_engine(engine_path) + + namespace engine_name do + task :rspec do + success = execute_rspec_for_engine(engine_path) + abort "Failure when running tests for engine \"#{engine_name}\"" unless success + end + end + end + end + end +end