2012-09-08 23:27:41 -04:00
|
|
|
require 'guard/guard'
|
|
|
|
|
|
|
|
module ::Guard
|
|
|
|
class Bacon < Guard
|
|
|
|
def run_all
|
|
|
|
system "bundle exec bacon -Itest -q -a"
|
|
|
|
puts
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
|
|
|
def run_spec(path)
|
|
|
|
if File.exists?(path)
|
2012-09-08 23:56:51 -04:00
|
|
|
@success &&= system "bundle exec bacon -Itest -q #{path}"
|
2012-09-08 23:27:41 -04:00
|
|
|
puts
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def file_changed(path)
|
|
|
|
run_spec(path)
|
|
|
|
end
|
|
|
|
|
|
|
|
def run_on_changes(paths)
|
2012-09-08 23:56:51 -04:00
|
|
|
@success = true
|
2012-09-08 23:27:41 -04:00
|
|
|
paths.delete(:all)
|
|
|
|
|
|
|
|
paths.each do |path|
|
|
|
|
file_changed(path)
|
|
|
|
end
|
|
|
|
|
2012-09-08 23:56:51 -04:00
|
|
|
run_all if @success
|
2012-09-08 23:27:41 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
guard 'bacon' do
|
|
|
|
# Example of mapping a lib file to one or more test files
|
|
|
|
watch('lib/pry/indent.rb') { 'test/test_indent.rb' }
|
|
|
|
|
2012-09-15 17:50:15 -04:00
|
|
|
watch(%r{^lib/pry/commands/([^.]+)\.rb}) { |m| "test/test_commands/test_#{m[1]}.rb" }
|
|
|
|
|
2012-09-08 23:27:41 -04:00
|
|
|
# If no such mapping exists, just run all of them
|
|
|
|
watch(%r{^lib/}) { :all }
|
|
|
|
|
|
|
|
# If we modified one test file, run it
|
|
|
|
watch(%r{^test.*/test_.+\.rb$})
|
|
|
|
end
|
|
|
|
|