module Covet::Options

Constants

DEFAULTS

Public Class Methods

parse!(argv) click to toggle source

@return Hash

# File lib/covet/cli.rb, line 191
def self.parse!(argv)
  options = DEFAULTS.dup

  OptionParser.new do |opts|
    opts.banner = "Usage: covet [options]"
    opts.separator ""
    opts.separator "Specific options:"

    opts.on('-c', '--collect CMDLINE', 'collect coverage information for test run of given cmdline') do |cmdline|
      options[:collect_cmdline] = cmdline
    end
    opts.on('--whitelist-gems GEMS', Array, 'whitelist given gems for collection phase') do |gems|
      options[:collect_gem_whitelist] = gems
      gems.each { |gem| CollectionFilter.whitelist_gem(gem) }
    end
    opts.on('-f', '--print-fmt FMT', "Format run list - 'simple' (default) or 'test-runner'") do |fmt|
      case fmt
      # TODO: add 'json' format to dump run list in JSON
      when 'simple', 'test-runner'
        options[:print_run_list_format] = fmt.intern
      else
        raise OptionParser::InvalidArgument,
          "Valid values: 'simple', 'test-runner'"
      end
    end
    opts.on('-e', '--exec', 'Execute run list') do
      options[:print_run_list] = false
      options[:exec_run_list] = true
    end
    opts.on('--disable-method-filter', 'When executing run list, run all test methods for each file') do
      options[:disable_test_method_filter] = true
    end
    opts.on('-r', '--revision REVISION', 'VCS Revision (defaults to last commit)') do |rev|
      options[:revision] = rev
    end
    opts.on('-t', '--test-runner RUNNER') do |runner|
      begin
        Covet.test_runner = runner
      rescue ArgumentError => e
        Kernel.abort "Error: #{e.message}"
      end
      options[:test_runner] = runner.intern
    end
    #opts.on('-o', '--test-order ORDER', 'Specify test order for collection phase.') do |order|
      #begin
        #Covet.test_order = order.to_s
      #rescue ArgumentError => e
        #Kernel.abort "Error: #{e.message}"
      #end
    #end
    opts.on_tail('-v', '--version', 'Show covet version') do
      puts VERSION
      Kernel.exit
    end
    opts.on('-h', '--help', 'Show this message') do
      puts opts
      Kernel.exit
    end
  end.parse!(argv)

  options
end