Class: Assert::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/assert/cli.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ CLI



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/assert/cli.rb', line 34

def initialize(*args)
  @args = args
  @cli = CLIRB.new do
    option "runner_seed", "use a given seed to run tests",
           abbrev: "s", value: Integer
    option "changed_only", "only run test files with changes",
           abbrev: "c"
    option "changed_ref", "reference for changes, use with `-c` opt",
           abbrev: "r", value: ""
    option "single_test", "only run the test on the given file/line",
           abbrev: "t", value: ""
    option "pp_objects", "pretty-print objects in fail messages",
           abbrev: "p"
    option "capture_output", "capture stdout and display in result details",
           abbrev: "o"
    option "halt_on_fail", "halt a test when it fails",
           abbrev: "h"
    option "profile", "output test profile info",
           abbrev: "e"
    option "verbose", "output verbose runtime test info",
           abbrev: "v"
    option "list", "list test files on $stdout",
           abbrev: "l"

    # show loaded test files, cli err backtraces, etc
    option "debug", "run in debug mode", abbrev: "d"
  end
end

Class Method Details

.bench(start_msg, &block) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/assert/cli.rb', line 24

def self.bench(start_msg, &block)
  if !Assert.config.debug
    block.call; return
  end
  print debug_start_msg(start_msg)
  RoundedMillisecondTime.new(Benchmark.measure(&block).real).tap do |time_in_ms|
    puts debug_finish_msg(time_in_ms)
  end
end

.debug?(args) ⇒ Boolean



8
9
10
# File 'lib/assert/cli.rb', line 8

def self.debug?(args)
  args.include?("-d") || args.include?("--debug")
end

.debug_finish_msg(time_in_ms) ⇒ Object



20
21
22
# File 'lib/assert/cli.rb', line 20

def self.debug_finish_msg(time_in_ms)
  " (#{time_in_ms} ms)"
end

.debug_msg(msg) ⇒ Object



12
13
14
# File 'lib/assert/cli.rb', line 12

def self.debug_msg(msg)
  "[DEBUG] #{msg}"
end

.debug_start_msg(msg) ⇒ Object



16
17
18
# File 'lib/assert/cli.rb', line 16

def self.debug_start_msg(msg)
  debug_msg("#{msg}...".ljust(30))
end

Instance Method Details

#helpObject



85
86
87
88
89
# File 'lib/assert/cli.rb', line 85

def help
  "Usage: assert [options] [TESTS]\n\n"\
  "Options:"\
  "#{@cli}"
end

#runObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/assert/cli.rb', line 63

def run
  begin
    @cli.parse!(@args)
    catch(:halt) do
      Assert::AssertRunner.new(Assert.config, @cli.args, @cli.opts).run
    end
  rescue CLIRB::HelpExit
    puts help
  rescue CLIRB::VersionExit
    puts Assert::VERSION
  rescue CLIRB::Error => exception
    puts "#{exception.message}\n\n"
    puts  Assert.config.debug ? exception.backtrace.join("\n") : help
    exit(1)
  rescue StandardError => exception
    puts "#{exception.class}: #{exception.message}"
    puts exception.backtrace.join("\n")
    exit(1)
  end
  exit(0)
end