diff --git a/lib/guard/jasmine-headless-webkit.rb b/lib/guard/jasmine-headless-webkit.rb index 62e3cef..44d7a4b 100644 --- a/lib/guard/jasmine-headless-webkit.rb +++ b/lib/guard/jasmine-headless-webkit.rb @@ -12,13 +12,18 @@ module Guard attr_reader :files_to_rerun + DEFAULT_OPTIONS = { + :all_on_start => true, + :run_before => false, + :valid_extensions => DEFAULT_EXTENSIONS + } + def initialize(watchers = [], options = {}) super - @options = { - :all_on_start => true, - :run_before => false, - :valid_extensions => DEFAULT_EXTENSIONS - }.merge(options) + + @options = DEFAULT_OPTIONS.merge(options) + @filtered_options = options + DEFAULT_OPTIONS.keys.each { |key| @filtered_options.delete(key) } UI.deprecation ":run_before is deprecated. Use guard-shell to do something beforehand. This will be removed in a future release." if @options[:run_before] @@ -68,7 +73,7 @@ module Guard UI.info(SOME_SPECS_MESSAGE % paths.join(' ')) end - if failed_files = JasmineHeadlessWebkitRunner.run(paths) + if failed_files = JasmineHeadlessWebkitRunner.run(paths, @filtered_options) @files_to_rerun = failed_files end diff --git a/lib/guard/jasmine-headless-webkit/runner.rb b/lib/guard/jasmine-headless-webkit/runner.rb index d8de8fb..211b011 100644 --- a/lib/guard/jasmine-headless-webkit/runner.rb +++ b/lib/guard/jasmine-headless-webkit/runner.rb @@ -4,11 +4,13 @@ require 'jasmine-headless-webkit' module Guard class JasmineHeadlessWebkitRunner class << self - def run(paths = []) + def run(paths = [], options = {}) file = Tempfile.new('guard-jasmine-headless-webkit') file.close - Jasmine::Headless::Runner.run(:report => file.path, :colors => true, :files => paths) + options.merge!(:report => file.path, :colors => true, :files => paths) + + Jasmine::Headless::Runner.run(options) notify(file.path) end diff --git a/spec/lib/guard/jasmine-headless-webkit/runner_spec.rb b/spec/lib/guard/jasmine-headless-webkit/runner_spec.rb index 3623e7e..e01b0b8 100644 --- a/spec/lib/guard/jasmine-headless-webkit/runner_spec.rb +++ b/spec/lib/guard/jasmine-headless-webkit/runner_spec.rb @@ -3,6 +3,14 @@ require 'guard/jasmine-headless-webkit/runner' require 'fakefs/spec_helpers' describe Guard::JasmineHeadlessWebkitRunner do + describe '.run' do + it 'should pass along options' do + Jasmine::Headless::Runner.expects(:run).with(has_key(:full_run)) + + Guard::JasmineHeadlessWebkitRunner.run([], :full_run => false) + end + end + describe '.notify' do include FakeFS::SpecHelpers diff --git a/spec/lib/guard/jasmine-headless-webkit_spec.rb b/spec/lib/guard/jasmine-headless-webkit_spec.rb index 161f087..27bd199 100644 --- a/spec/lib/guard/jasmine-headless-webkit_spec.rb +++ b/spec/lib/guard/jasmine-headless-webkit_spec.rb @@ -57,6 +57,16 @@ describe Guard::JasmineHeadlessWebkit do guard.files_to_rerun.should == [] end end + + context 'pass along jhw options' do + let(:options) { { :all_on_start => false, :full_run => false } } + + it 'should only pass along jhw options' do + Guard::JasmineHeadlessWebkitRunner.expects(:run).with([], :full_run => false) + + guard.run_all + end + end end describe '#run_on_change' do @@ -64,7 +74,7 @@ describe Guard::JasmineHeadlessWebkit do context 'two files' do it "should only run one" do - Guard::JasmineHeadlessWebkitRunner.expects(:run).with(one_file).returns(one_file) + Guard::JasmineHeadlessWebkitRunner.expects(:run).with(one_file, {}).returns(one_file) guard.run_on_change(%w{test.js test.js}).should be_false guard.files_to_rerun.should == one_file @@ -83,7 +93,7 @@ describe Guard::JasmineHeadlessWebkit do context 'one file one prior' do it "should not run all" do guard.instance_variable_set(:@files_to_rerun, [ "two.js" ]) - Guard::JasmineHeadlessWebkitRunner.expects(:run).with(one_file + [ "two.js" ]).returns(one_file) + Guard::JasmineHeadlessWebkitRunner.expects(:run).with(one_file + [ "two.js" ], {}).returns(one_file) guard.run_on_change(one_file).should be_false guard.files_to_rerun.should == one_file @@ -93,7 +103,7 @@ describe Guard::JasmineHeadlessWebkit do context 'failed hard' do it "should not run all" do guard.instance_variable_set(:@files_to_rerun, one_file) - Guard::JasmineHeadlessWebkitRunner.expects(:run).with(one_file).returns(nil) + Guard::JasmineHeadlessWebkitRunner.expects(:run).with(one_file, {}).returns(nil) guard.run_on_change(one_file).should be_false guard.files_to_rerun.should == one_file