Skip to content

Commit

Permalink
Added require option
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeremy Stephens committed Oct 28, 2009
1 parent 4615430 commit 5aa8685
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 4 deletions.
7 changes: 6 additions & 1 deletion README.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Provides some autotest-like behavior for watchr (http://github.com/mynyml/watchr

* Cucumber support
* Expose algorithm to map test classes to test files
* Add INT signal trapping

== Example use

Expand All @@ -31,13 +32,17 @@ test.watchr
=== Configuration options
* command
* An ERB template for the command
* Default: <tt>"<%= ruby %> -I<%= include %> <%= predicate %>"</tt>
* Default: <tt>"<%= ruby %> -I<%= include %> <% list_of_requires.each { |lib| %>-r<%= lib %> <% } %><%= predicate %>"</tt>
* ruby
* The ruby executable to use
* Default: <tt>"ruby"</tt>
* include
* Paths to include (with -I)
* Default: <tt>".:#{self.lib_dir}:#{self.test_dir}"</tt>
* require
* Libraries to include (with -r)
* Can either be a string or an array (Ex: <tt>config.require = %w{rubygems active_support}</tt>)
* Default: <tt>nil</tt>
* lib_dir
* The lib path, where your library lives
* Default: <tt>"lib"</tt>
Expand Down
21 changes: 18 additions & 3 deletions lib/autowatchr.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

class Autowatchr
class Config
attr_writer :command, :ruby, :include, :lib_dir, :test_dir, :lib_re,
:test_re, :failed_results_re, :completed_re, :failing_only, :run_suite
attr_writer :command, :ruby, :include, :require, :lib_dir, :test_dir,
:lib_re, :test_re, :failed_results_re, :completed_re, :failing_only,
:run_suite

def initialize(options = {})
@failing_only = @run_suite = true
Expand All @@ -17,7 +18,7 @@ def initialize(options = {})
end

def command
@command ||= "<%= ruby %> -I<%= include %> <%= predicate %>"
@command ||= "<%= ruby %> -I<%= include %> <% list_of_requires.each { |lib| %>-r<%= lib %> <% } %><%= predicate %>"
end

def ruby
Expand All @@ -28,6 +29,20 @@ def include
@include ||= ".:#{self.lib_dir}:#{self.test_dir}"
end

def require
@require
end

def list_of_requires
if @require.nil? || @require.empty?
[]
elsif @require.is_a?(Array)
@require
else
[@require]
end
end

def lib_dir
@lib_dir ||= "lib"
end
Expand Down
21 changes: 21 additions & 0 deletions test/test_autowatchr.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ def test_defaults
end
assert_equal "ruby", aw.config.ruby
assert_equal ".:lib:test", aw.config.include
assert_equal nil, aw.config.require
assert_equal "lib", aw.config.lib_dir
assert_equal "test", aw.config.test_dir
assert_equal '^lib.*/.*\.rb$', aw.config.lib_re
Expand Down Expand Up @@ -95,6 +96,26 @@ def test_run_lib_file
end
end

def test_run_lib_file_with_require
expected_cmd = "/usr/local/bin/ruby -I.:#{@lib_dir}:#{@test_dir} -rrubygems #{@test_dir}/test_foo.rb"
Autowatchr.any_instance.expects_system_call(expected_cmd, "foo")

silence_stream(STDOUT) do
aw = new_autowatchr(:require => 'rubygems')
aw.run_lib_file("#{@lib_dir}/foo.rb")
end
end

def test_run_lib_file_with_mulitple_requires
expected_cmd = "/usr/local/bin/ruby -I.:#{@lib_dir}:#{@test_dir} -rrubygems -rblah #{@test_dir}/test_foo.rb"
Autowatchr.any_instance.expects_system_call(expected_cmd, "foo")

silence_stream(STDOUT) do
aw = new_autowatchr(:require => %w{rubygems blah})
aw.run_lib_file("#{@lib_dir}/foo.rb")
end
end

def test_running_multiple_test_files
expected_cmd = "/usr/local/bin/ruby -I.:#{@lib_dir}:#{@test_dir} -e \"%w[#{@test_dir}/test_bar.rb #{@test_dir}/test_foo.rb].each do |f| require f end\""
Autowatchr.any_instance.expects_system_call(expected_cmd, "all")
Expand Down

0 comments on commit 5aa8685

Please sign in to comment.