From 761de5a80a651ad8c41792bfb57db91a4f3563e0 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Fri, 3 Jun 2011 16:45:19 -0400 Subject: [PATCH] smarter filtering of files by extension --- lib/guard/jasmine-headless-webkit.rb | 15 ++++++++++++++- spec/lib/guard/jasmine-headless-webkit_spec.rb | 15 ++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/guard/jasmine-headless-webkit.rb b/lib/guard/jasmine-headless-webkit.rb index a5fa445..5c5b848 100644 --- a/lib/guard/jasmine-headless-webkit.rb +++ b/lib/guard/jasmine-headless-webkit.rb @@ -4,11 +4,14 @@ require 'guard/jasmine-headless-webkit/runner' module Guard class JasmineHeadlessWebkit < Guard + DEFAULT_EXTENSIONS = %w{js coffee} + def initialize(watchers = [], options = {}) super @options = { :all_on_start => true, - :run_before => false + :run_before => false, + :valid_extensions => DEFAULT_EXTENSIONS }.merge(options) end @@ -23,6 +26,7 @@ module Guard end def run_on_change(paths) + paths = filter_paths(paths) @ran_jammit = false if run_before and run_jammit @ran_jammit = true @@ -35,6 +39,14 @@ module Guard end private + def filter_paths(paths) + paths.find_all { |path| File.extname(path)[valid_extensions] } + end + + def valid_extensions + %r{\.(#{@options[:valid_extensions].join('|')})$} + end + def run_before if @options[:run_before] run_program(@options[:run_before]) @@ -61,6 +73,7 @@ module Guard class Dsl def newest_js_file(path) + p binding Dir[path + '*.{js,coffee}'].sort { |left, right| File.mtime(right) <=> File.mtime(left) }.first end end diff --git a/spec/lib/guard/jasmine-headless-webkit_spec.rb b/spec/lib/guard/jasmine-headless-webkit_spec.rb index a7dd50c..4cc6198 100644 --- a/spec/lib/guard/jasmine-headless-webkit_spec.rb +++ b/spec/lib/guard/jasmine-headless-webkit_spec.rb @@ -32,7 +32,7 @@ describe Guard::JasmineHeadlessWebkit do Guard::JasmineHeadlessWebkitRunner.expects(:run).returns(1) guard.expects(:run_all).never - guard.run_on_change(%w{test}) + guard.run_on_change(%w{test.js}) end end @@ -41,7 +41,7 @@ describe Guard::JasmineHeadlessWebkit do Guard::JasmineHeadlessWebkitRunner.expects(:run).returns(0) guard.expects(:run_all).once - guard.run_on_change(%w{test}) + guard.run_on_change(%w{test.js}) end end @@ -53,6 +53,15 @@ describe Guard::JasmineHeadlessWebkit do guard.run_on_change([]) end end + + context "Files I don't care about given, ignore" do + it 'should run all but not run once' do + Guard::JasmineHeadlessWebkitRunner.expects(:run).never + guard.expects(:run_all).once + + guard.run_on_change(%w{test.jst}) + end + end end context 'with run_before' do @@ -106,7 +115,7 @@ describe Guard::JasmineHeadlessWebkit do let(:options) { { :jammit => true } } it "should run jammit only once" do - guard.run_on_change(%w{path.txt}) + guard.run_on_change(%w{path.js}) end end end