Pass the group in the options hash instead of a new parameter in the Guard::Guard.initialize method!

This commit is contained in:
Rémy Coutable 2011-08-17 10:04:42 +02:00
parent 563b020d4f
commit dc2ab97d23
5 changed files with 35 additions and 42 deletions

View File

@ -82,11 +82,11 @@ module Guard
listener.start listener.start
end end
def add_guard(name, watchers = [], options = {}, group = nil) def add_guard(name, watchers = [], options = {})
if name.to_sym == :ego if name.to_sym == :ego
UI.deprecation("Guard::Ego is now part of Guard. You can remove it from your Guardfile.") UI.deprecation("Guard::Ego is now part of Guard. You can remove it from your Guardfile.")
else else
guard = get_guard_class(name).new(watchers, options, group) guard = get_guard_class(name).new(watchers, options)
@guards << guard @guards << guard
end end
end end

View File

@ -118,7 +118,8 @@ module Guard
def guard(name, options = {}, &watch_definition) def guard(name, options = {}, &watch_definition)
@watchers = [] @watchers = []
watch_definition.call if watch_definition watch_definition.call if watch_definition
::Guard.add_guard(name.to_s.downcase.to_sym, @watchers, options, @current_group || :default) options.update(:group => (@current_group || :default))
::Guard.add_guard(name.to_s.downcase.to_sym, @watchers, options)
end end
def watch(pattern, &action) def watch(pattern, &action)

View File

@ -3,9 +3,9 @@ module Guard
attr_accessor :watchers, :options, :group attr_accessor :watchers, :options, :group
def initialize(watchers = [], options = {}, group = nil) def initialize(watchers = [], options = {})
@group = options.delete(:group) || :default
@watchers, @options = watchers, options @watchers, @options = watchers, options
@group ||= :default
end end
# Guardfile template needed inside guard gem # Guardfile template needed inside guard gem

View File

@ -201,41 +201,41 @@ describe Guard::Dsl do
describe "#group" do describe "#group" do
it "evaluates only the specified string group" do it "evaluates only the specified string group" do
::Guard.should_receive(:add_guard).with(:pow, [], {}, :default) ::Guard.should_receive(:add_guard).with(:pow, [], { :group => :default })
::Guard.should_receive(:add_guard).with(:test, [], {}, :w) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :w })
subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => ['w']) subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => ['w'])
end end
it "evaluates only the specified symbol group" do it "evaluates only the specified symbol group" do
::Guard.should_receive(:add_guard).with(:pow, [], {}, :default) ::Guard.should_receive(:add_guard).with(:pow, [], { :group => :default })
::Guard.should_receive(:add_guard).with(:test, [], {}, :w) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :w })
subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => [:w]) subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => [:w])
end end
it "evaluates only the specified groups" do it "evaluates only the specified groups" do
::Guard.should_receive(:add_guard).with(:pow, [], {}, :default) ::Guard.should_receive(:add_guard).with(:pow, [], { :group => :default })
::Guard.should_receive(:add_guard).with(:rspec, [], {}, :x) ::Guard.should_receive(:add_guard).with(:rspec, [], { :group => :x })
::Guard.should_receive(:add_guard).with(:ronn, [], {}, :x) ::Guard.should_receive(:add_guard).with(:ronn, [], { :group => :x })
::Guard.should_receive(:add_guard).with(:less, [], {}, :y) ::Guard.should_receive(:add_guard).with(:less, [], { :group => :y })
subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => [:x, :y]) subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => [:x, :y])
end end
it "evaluates always guard outside any group (even when a group is given)" do it "evaluates always guard outside any group (even when a group is given)" do
::Guard.should_receive(:add_guard).with(:pow, [], {}, :default) ::Guard.should_receive(:add_guard).with(:pow, [], { :group => :default })
::Guard.should_receive(:add_guard).with(:test, [], {}, :w) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :w })
subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => [:w]) subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string, :group => [:w])
end end
it "evaluates all groups when no group option is specified" do it "evaluates all groups when no group option is specified" do
::Guard.should_receive(:add_guard).with(:pow, [], {}, :default) ::Guard.should_receive(:add_guard).with(:pow, [], { :group => :default })
::Guard.should_receive(:add_guard).with(:test, [], {}, :w) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :w })
::Guard.should_receive(:add_guard).with(:rspec, [], {}, :x) ::Guard.should_receive(:add_guard).with(:rspec, [], { :group => :x })
::Guard.should_receive(:add_guard).with(:ronn, [], {}, :x) ::Guard.should_receive(:add_guard).with(:ronn, [], { :group => :x })
::Guard.should_receive(:add_guard).with(:less, [], {}, :y) ::Guard.should_receive(:add_guard).with(:less, [], { :group => :y })
subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string) subject.evaluate_guardfile(:guardfile_contents => valid_guardfile_string)
end end
@ -243,31 +243,31 @@ describe Guard::Dsl do
describe "#guard" do describe "#guard" do
it "loads a guard specified as a quoted string from the DSL" do it "loads a guard specified as a quoted string from the DSL" do
::Guard.should_receive(:add_guard).with(:test, [], {}, :default) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :default })
subject.evaluate_guardfile(:guardfile_contents => "guard 'test'") subject.evaluate_guardfile(:guardfile_contents => "guard 'test'")
end end
it "loads a guard specified as a double quoted string from the DSL" do it "loads a guard specified as a double quoted string from the DSL" do
::Guard.should_receive(:add_guard).with(:test, [], {}, :default) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :default })
subject.evaluate_guardfile(:guardfile_contents => 'guard "test"') subject.evaluate_guardfile(:guardfile_contents => 'guard "test"')
end end
it "loads a guard specified as a symbol from the DSL" do it "loads a guard specified as a symbol from the DSL" do
::Guard.should_receive(:add_guard).with(:test, [], {}, :default) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :default })
subject.evaluate_guardfile(:guardfile_contents => "guard :test") subject.evaluate_guardfile(:guardfile_contents => "guard :test")
end end
it "loads a guard specified as a symbol and called with parens from the DSL" do it "loads a guard specified as a symbol and called with parens from the DSL" do
::Guard.should_receive(:add_guard).with(:test, [], {}, :default) ::Guard.should_receive(:add_guard).with(:test, [], { :group => :default })
subject.evaluate_guardfile(:guardfile_contents => "guard(:test)") subject.evaluate_guardfile(:guardfile_contents => "guard(:test)")
end end
it "receives options when specified, from normal arg" do it "receives options when specified, from normal arg" do
::Guard.should_receive(:add_guard).with(:test, [], { :opt_a => 1, :opt_b => 'fancy' }, :default) ::Guard.should_receive(:add_guard).with(:test, [], { :opt_a => 1, :opt_b => 'fancy', :group => :default })
subject.evaluate_guardfile(:guardfile_contents => "guard 'test', :opt_a => 1, :opt_b => 'fancy'") subject.evaluate_guardfile(:guardfile_contents => "guard 'test', :opt_a => 1, :opt_b => 'fancy'")
end end
@ -280,7 +280,7 @@ describe Guard::Dsl do
watch('c') watch('c')
end" end"
::Guard.should_receive(:add_guard).with(:test, anything, {}, :default) do |name, watchers, options| ::Guard.should_receive(:add_guard).with(:test, anything, { :group => :default }) do |name, watchers, options|
watchers.size.should == 2 watchers.size.should == 2
watchers[0].pattern.should == 'a' watchers[0].pattern.should == 'a'
watchers[0].action.call.should == proc { 'b' }.call watchers[0].action.call.should == proc { 'b' }.call

View File

@ -98,7 +98,7 @@ describe Guard do
context "with no watchers given" do context "with no watchers given" do
it "gives an empty array of watchers" do it "gives an empty array of watchers" do
@guard_rspec_class.should_receive(:new).with([], {}, nil).and_return(@guard_rspec) @guard_rspec_class.should_receive(:new).with([], {}).and_return(@guard_rspec)
Guard.add_guard(:rspec, []) Guard.add_guard(:rspec, [])
end end
@ -106,7 +106,7 @@ describe Guard do
context "with watchers given" do context "with watchers given" do
it "give the watchers array" do it "give the watchers array" do
@guard_rspec_class.should_receive(:new).with([:foo], {}, nil).and_return(@guard_rspec) @guard_rspec_class.should_receive(:new).with([:foo], {}).and_return(@guard_rspec)
Guard.add_guard(:rspec, [:foo]) Guard.add_guard(:rspec, [:foo])
end end
@ -114,7 +114,7 @@ describe Guard do
context "with no options given" do context "with no options given" do
it "gives an empty hash of options" do it "gives an empty hash of options" do
@guard_rspec_class.should_receive(:new).with([], {}, nil).and_return(@guard_rspec) @guard_rspec_class.should_receive(:new).with([], {}).and_return(@guard_rspec)
Guard.add_guard(:rspec, [], {}) Guard.add_guard(:rspec, [], {})
end end
@ -122,17 +122,9 @@ describe Guard do
context "with options given" do context "with options given" do
it "give the options hash" do it "give the options hash" do
@guard_rspec_class.should_receive(:new).with([], { :foo => true }, nil).and_return(@guard_rspec) @guard_rspec_class.should_receive(:new).with([], { :foo => true, :group => :backend }).and_return(@guard_rspec)
Guard.add_guard(:rspec, [], { :foo => true }) Guard.add_guard(:rspec, [], { :foo => true, :group => :backend })
end
end
context "with the group :backend given" do
it "initialize the guard and pass it its group" do
@guard_rspec_class.should_receive(:new).with([], {}, :backend).and_return(@guard_rspec)
Guard.add_guard(:rspec, [], {}, :backend)
end end
end end
end end