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
|
2012-09-17 03:12:40 -04:00
|
|
|
def deduce_test_from(token)
|
|
|
|
"test/test_#{token}.rb"
|
|
|
|
end
|
|
|
|
|
|
|
|
Dir['lib/pry/*.rb'].each do |rb|
|
|
|
|
rb[%r(lib/pry/(.+)\.rb$)]
|
|
|
|
test_rb = deduce_test_from $1
|
|
|
|
if File.exists?(test_rb)
|
|
|
|
watch(rb) { test_rb }
|
|
|
|
else
|
|
|
|
exempt = %w(
|
|
|
|
commands
|
|
|
|
version
|
|
|
|
).map {|token| deduce_test_from token}
|
|
|
|
puts 'Missing ' + test_rb if
|
|
|
|
ENV['WANT_TEST_COMPLAINTS'] and not exempt.include?(test_rb)
|
|
|
|
end
|
|
|
|
end
|
2012-09-08 23:27:41 -04:00
|
|
|
|
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
|
|
|
|
|
2012-09-17 03:12:40 -04:00
|
|
|
# vim:ft=ruby
|