From a9b9b09853b797189afa047dbdab06e010819528 Mon Sep 17 00:00:00 2001 From: Nick Gauthier Date: Tue, 24 Aug 2010 09:50:25 -0400 Subject: [PATCH] cleaned up test suite. allowed warmsnake to be run --- bin/warmsnake.rb | 110 ++++++++++++++++++++++---------------------- test/runner_test.rb | 8 +--- 2 files changed, 56 insertions(+), 62 deletions(-) diff --git a/bin/warmsnake.rb b/bin/warmsnake.rb index 6c3caf7..03c4a86 100644 --- a/bin/warmsnake.rb +++ b/bin/warmsnake.rb @@ -1,64 +1,62 @@ #!/usr/bin/env ruby -if File.expand_path($0) == File.expand_path(__FILE__) - require 'rubygems' - require 'hydra' - - @files = ARGV.inject([]){|memo,f| memo += Dir.glob f} - - if @files.empty? - puts "You must specify a list of files to run" - puts "If you specify a pattern, it must be in quotes" - puts %{USAGE: #{$0} test/unit/my_test.rb "test/functional/**/*_test.rb"} - exit(1) - end - - Signal.trap("TERM", "KILL") do - puts "Warm Snake says bye bye" - exit(0) - end - - bold_yellow = "\033[1;33m" - reset = "\033[0m" - - - loop do - env_proc = Process.fork do - puts "#{bold_yellow}Booting Environment#{reset}" +require 'rubygems' +require 'hydra' + +@files = ARGV.inject([]){|memo,f| memo += Dir.glob f} + +if @files.empty? + puts "You must specify a list of files to run" + puts "If you specify a pattern, it must be in quotes" + puts %{USAGE: #{$0} test/unit/my_test.rb "test/functional/**/*_test.rb"} + exit(1) +end + +Signal.trap("TERM", "KILL") do + puts "Warm Snake says bye bye" + exit(0) +end + +bold_yellow = "\033[1;33m" +reset = "\033[0m" + + +loop do + env_proc = Process.fork do + puts "#{bold_yellow}Booting Environment#{reset}" + start = Time.now + ENV['RAILS_ENV']='test' + require 'config/environment' + require 'test/test_helper' + finish = Time.now + puts "#{bold_yellow}Environment Booted (#{finish-start})#{reset}" + + loop do + puts "#{bold_yellow}Running#{reset} [#{@files.inspect}]" start = Time.now - ENV['RAILS_ENV']='test' - require 'config/environment' - require 'test/test_helper' + Hydra::Master.new( + :files => @files.dup, + :listeners => Hydra::Listener::ProgressBar.new(STDOUT), + :workers => [{:type => :local, :runners => 4}] + ) finish = Time.now - puts "#{bold_yellow}Environment Booted (#{finish-start})#{reset}" - - loop do - puts "#{bold_yellow}Running#{reset} [#{@files.inspect}]" - start = Time.now - Hydra::Master.new( - :files => @files.dup, - :listeners => Hydra::Listener::ProgressBar.new(STDOUT), - :workers => [{:type => :local, :runners => 4}] - ) - finish = Time.now - puts "#{bold_yellow}Tests finished#{reset} (#{finish-start})" - - puts "" - - $stdout.write "Press #{bold_yellow}ENTER#{reset} to retest. Type #{bold_yellow}r#{reset} then hit enter to reboot environment. #{bold_yellow}CTRL-C#{reset} to quit\n> " - begin - command = $stdin.gets - rescue Interrupt - exit(0) - end - break if !command.nil? and command.chomp == "r" + puts "#{bold_yellow}Tests finished#{reset} (#{finish-start})" + + puts "" + + $stdout.write "Press #{bold_yellow}ENTER#{reset} to retest. Type #{bold_yellow}r#{reset} then hit enter to reboot environment. #{bold_yellow}CTRL-C#{reset} to quit\n> " + begin + command = $stdin.gets + rescue Interrupt + exit(0) end + break if !command.nil? and command.chomp == "r" end - begin - Process.wait env_proc - rescue Interrupt - puts "\n#{bold_yellow}SSsssSsssSSssSs#{reset}" - break - end + end + begin + Process.wait env_proc + rescue Interrupt + puts "\n#{bold_yellow}SSsssSsssSSssSs#{reset}" + break end end diff --git a/test/runner_test.rb b/test/runner_test.rb index 9642a2b..a23bcdd 100644 --- a/test/runner_test.rb +++ b/test/runner_test.rb @@ -50,7 +50,6 @@ class RunnerTest < Test::Unit::TestCase end should "run two rspec tests" do - puts "First test" runner = Hydra::Runner.new(:io => File.new('/dev/null', 'w')) runner.run_file(rspec_file) assert File.exists?(target_file) @@ -81,8 +80,8 @@ class RunnerTest < Test::Unit::TestCase # we run this in a fork to not contaminate # the main test environment pid = Process.fork do - puts "THE FOLLOWING WARNINGS CAN BE IGNORED" - puts "It is caused by Cucumber loading all rb files near its features" + # need to get into the fixtures directory so cucumber doesn't load up the whole project + Dir.chdir(File.join(File.dirname(__FILE__), 'fixtures')) runner = Hydra::Runner.new(:io => File.new('/dev/null', 'w')) runner.run_file(cucumber_feature_file) @@ -95,8 +94,6 @@ class RunnerTest < Test::Unit::TestCase assert File.exists?(alternate_target_file) assert_equal "HYDRA", File.read(alternate_target_file) assert !File.exists?(target_file) - - puts "END IGNORABLE OUTPUT" end Process.wait pid end @@ -137,7 +134,6 @@ class RunnerTest < Test::Unit::TestCase # grab its response. This makes us wait for it to finish response = pipe.gets - puts response.output # tell it to shut down pipe.write(Hydra::Messages::Worker::Shutdown.new)