Module: Covet::Options

Defined in:
lib/covet/cli.rb

Constant Summary collapse

DEFAULTS =
{
  :collect_cmdline => nil,
  :VCS => :git,
  :revision => :last_commit,
  :test_order => :random_seeded, # one of [:random_seeded, :random, or :ordered]
  :test_runner => :minitest, # ENV['COVET_TEST_RUNNER']
  :exec_run_list => false,
  :disable_test_method_filter => false,
  :print_run_list => true,
  :print_run_list_format => :simple,
  :collect_gem_whitelist => [], # ENV['COVET_GEM_WHITELIST']
  :debug => false, # TODO: use
  :verbose => 0, # TODO: levels 0, 1, 2, maybe?
}.freeze

Class Method Summary collapse

Class Method Details

.parse!(argv) ⇒ Object

Returns Hash.

Returns:

  • Hash



191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# 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