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

Returns a new instance of CLI.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/assert/cli.rb', line 41

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



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/assert/cli.rb', line 27

def self.bench(start_msg, &block)
  unless 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

Returns:

  • (Boolean)


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

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

.debug_finish_msg(time_in_ms) ⇒ Object



23
24
25
# File 'lib/assert/cli.rb', line 23

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

.debug_msg(msg) ⇒ Object



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

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

.debug_start_msg(msg) ⇒ Object



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

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

Instance Method Details

#helpObject



92
93
94
95
96
# File 'lib/assert/cli.rb', line 92

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

#runObject



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/assert/cli.rb', line 70

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 => ex
    puts "#{ex.message}\n\n"
    puts Assert.config.debug ? ex.backtrace.join("\n") : help
    exit(1)
  rescue => ex
    puts "#{ex.class}: #{ex.message}"
    puts ex.backtrace.join("\n")
    exit(1)
  end
  exit(0)
end