I was having a problem running focused unit tests with TextMate 1.5.9, ruby 1.9.1 and rails 2.3.5. TextMate passes the params to the script like this:
ruby unit/booking_test.rb --name=test_cost_is_calculated_correctly_when_theres_a_surcharge
This doesn’t work (all tests are run instead) because the parameter is not passed correctly to the script. This works, however:
ruby unit/booking_test.rb --name test_cost_is_calculated_correctly_when_theres_a_surcharge
On ruby 1.8.7 both ways of passing the argument work just fine, while on ruby 1.9.1 only the second way works.
Since we want to pass two arguments to the script (‘––name’, ‘test_foobar’) instead of one (‘––name=test_foobar’), let’s patch TextMate. Open
/Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/RubyMate/runscript.rb
and replace
if name and !name.empty?
args << "--name #{name}"
elsif test_name and !test_name.empty?
args << "--name test_#{test_name.gsub(/\s+/,'_')}"
elsif spec and !spec.empty? and context and !context.empty?
args << %Q{--name "/test_spec \\{.*#{context}\\} \\d{3} \\[#{spec}\\]/"}
with
args << "--name"
if name and !name.empty?
args << name
elsif test_name and !test_name.empty?
args << "test_#{test_name.gsub(/\s+/,'_')}"
elsif spec and !spec.empty? and context and !context.empty?
args << %Q{"/test_spec \\{.*#{context}\\} \\d{3} \\[#{spec}\\]/"}
This will make the focused unit tests work.
0 Responses to “Focused unit tests in ruby 1.9”