Define a test task that uses hydra to test the files.
Hydra::TestTask.new('hydra') do |t| t.add_files 'test/unit _test.rb' t.add_files 'test/functional/ *_test.rb' t.add_files 'test/integration/ *_test.rb' t.verbose = false # optionally set to true for lots of debug messages t.autosort = false # disable automatic sorting based on runtime of tests end
Create a new HydraTestTask
# File lib/hydra/tasks.rb, line 85 def initialize(name = :hydra) @name = name @files = [] @verbose = false @autosort = true @serial = false @listeners = [Hydra::Listener::ProgressBar.new] @show_time = true @options = '' yield self if block_given? # Ensure we override rspec's at_exit if defined?(RSpec) RSpec::Core::Runner.disable_autorun! end unless @serial @config = find_config_file end @opts = { :verbose => @verbose, :autosort => @autosort, :files => @files, :listeners => @listeners, :environment => @environment, :runner_log_file => @runner_log_file, :options => @options } if @config @opts.merge!(:config => @config) else @opts.merge!(:workers => [{:type => :local, :runners => 1}]) end define end
Create the rake task defined by this HydraTestTask
# File lib/hydra/tasks.rb, line 126 def define desc "Hydra Tests" + (@name == :hydra ? "" : " for #{@name}") task @name do if Object.const_defined?('Rails') && Rails.env == 'development' $stderr.puts %Q{WARNING: Rails Environment is "development". Make sure to set it properly (ex: "RAILS_ENV=test rake hydra")} end start = Time.now if @show_time puts '********************' puts @options.inspect master = Hydra::Master.new(@opts) $stdout.puts "\nFinished in #{'%.6f' % (Time.now - start)} seconds." if @show_time unless master.failed_files.empty? raise "Hydra: Not all tests passes" end end end