diff --git a/.gitignore b/.gitignore index 1ef423c94f..6eb67e918a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ Gemfile.lock .bundle/config /vendor/ +/crowbar_framework/vendor/bundle/ diff --git a/.travis.yml b/.travis.yml index 1e7611e7fe..75d874024a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ gemfile: crowbar_framework/Gemfile install: - cd crowbar_framework - - bin/bundle install + - bin/bundle install --without development - bin/rake db:create db:migrate script: diff --git a/crowbar_framework/Gemfile b/crowbar_framework/Gemfile index 272fcadb21..9fcd5d898b 100644 --- a/crowbar_framework/Gemfile +++ b/crowbar_framework/Gemfile @@ -59,15 +59,17 @@ gem "activeresource", "~> 4.0.0", require: "active_resource" unless ENV["PACKAGING"] && ENV["PACKAGING"] == "yes" - group :development, :test do - gem "brakeman", "~> 2.6.3" - gem "rspec-rails", "~> 3.3.0" + group :development do 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 + gem "rspec-rails", "~> 3.3.0" + gem "brakeman", "~> 2.6.3" gem "database_cleaner", "~> 1.4.1" gem "sinatra", "~> 1.4.5" gem "webmock", "~> 1.19.0" 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