Class: Spec::Runner::CommandLine
- Defined in:
- lib/spec/runner/command_line.rb
Overview
Facade to run specs without having to fork a new ruby process (using ‘spec …`)
Class Method Summary collapse
Class Method Details
.run(argv, err, out, exit = true, warn_if_no_files = true) ⇒ Object
Runs specs. argv
is the commandline args as per the spec commandline API, err
and out
are the streams output will be written to. exit
tells whether or not a system exit should be called after the specs are run and warn_if_no_files
tells whether or not a warning (the help message) should be printed to err
in case no files are specified.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/spec/runner/command_line.rb', line 12 def self.run(argv, err, out, exit=true, warn_if_no_files=true) old_context_runner = defined?($context_runner) ? $context_runner : nil $context_runner = OptionParser.new.create_context_runner(argv, err, out, warn_if_no_files) return if $context_runner.nil? # This is the case if we use --drb # If ARGV is a glob, it will actually each over each one of the matching files. argv.each do |file_or_dir| if File.directory?(file_or_dir) Dir["#{file_or_dir}/**/*.rb"].each do |file| load file end elsif File.file?(file_or_dir) load file_or_dir else raise "File or directory not found: #{file_or_dir}" end end $context_runner.run(exit) $context_runner = old_context_runner end |