これで良さそう
directories(%w[apps lib config spec].select { |d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist") })
guard :rspec, cmd: 'bundle exec rspec -c -fd' do
require 'guard/rspec/dsl'
dsl = Guard::RSpec::Dsl.new(self)
# RSpec files
rspec = dsl.rspec
watch(rspec.spec_helper) { rspec.spec_dir }
watch(rspec.spec_support) { rspec.spec_dir }
watch(rspec.spec_files)
# Hanami files
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^apps/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^apps/(.+)/controllers/(.+)\.rb$}) { |m| "spec/requests/#{m[1]}/#{m[2]}_spec.rb" }
end
想定動作
- apps, lib 以下のファイルを変更したときに対応するspecが実行される
- specs/requestsにはAPIのE2Eテストを配置する想定、controllersに変更があった場合に対応するunitテストと一緒に実行される