diff --git a/crowbar_framework/Gemfile b/crowbar_framework/Gemfile index a4145a717a..a4734c2121 100644 --- a/crowbar_framework/Gemfile +++ b/crowbar_framework/Gemfile @@ -64,6 +64,8 @@ unless ENV["PACKAGING"] && ENV["PACKAGING"] == "yes" gem "byebug", "~> 8.2.2" gem "derailed_benchmarks", "~> 1.3.0" gem "stackprof", "~> 0.2.8" + gem "guard-rspec" + gem "guard-bundler" end group :test do diff --git a/crowbar_framework/Guardfile b/crowbar_framework/Guardfile new file mode 100644 index 0000000000..b129f994be --- /dev/null +++ b/crowbar_framework/Guardfile @@ -0,0 +1,50 @@ +#!/usr/bin/ruby +# +# More info at https://github.com/guard/guard#readme + +guard_opts = { + cmd: "bundle exec rspec --fail-fast", + all_on_start: true, + all_after_pass: true, + failed_mode: :focus +} + +DEBUG = false + +def reload(target) + puts "-> #{target}" if DEBUG + target +end + +def all_specs; reload "all_specs"; "spec" end +def library_specs; reload "library_specs"; "spec/libraries" end +def provider_specs; reload "provider_specs"; "spec/providers" end + +group :rspec do + guard :rspec, guard_opts do + watch('app/controllers/application_controller.rb') { + "spec/controllers" + } + watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" } + watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" } + watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" } + watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| + [ + "spec/routing/#{m[1]}_routing_spec.rb", + "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", + "spec/acceptance/#{m[1]}_spec.rb" + ] + } + watch(%r{^Gemfile$}) { all_specs } + watch(%r{^Gemfile.lock$}) { all_specs } + watch(%r{^spec/spec_helper\.rb$}) { all_specs } + watch(%r{^spec/helpers/.+\.rb$}) { all_specs } + watch(%r{^spec/.+_spec\.rb$}) + end +end + +group :bundler do + guard :bundler do + watch("Gemfile") + end +end