Class: Assert::CLI
- Inherits:
-
Object
- Object
- Assert::CLI
- Defined in:
- lib/assert/cli.rb
Constant Summary collapse
- SUCCESS_EXIT_STATUS =
0
- ERROR_EXIT_STATUS =
1
Class Method Summary collapse
- .bench(start_msg, &block) ⇒ Object
- .debug?(args) ⇒ Boolean
- .debug_finish_msg(time_in_ms) ⇒ Object
- .debug_msg(msg) ⇒ Object
- .debug_start_msg(msg) ⇒ Object
Instance Method Summary collapse
- #help ⇒ Object
-
#initialize(*args) ⇒ CLI
constructor
A new instance of CLI.
- #run ⇒ Object
Constructor Details
#initialize(*args) ⇒ CLI
Returns a new instance of CLI.
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 69 70 71 |
# File 'lib/assert/cli.rb', line 44 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
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/assert/cli.rb', line 30 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
14 15 16 |
# File 'lib/assert/cli.rb', line 14 def self.debug?(args) args.include?("-d") || args.include?("--debug") end |
.debug_finish_msg(time_in_ms) ⇒ Object
26 27 28 |
# File 'lib/assert/cli.rb', line 26 def self.debug_finish_msg(time_in_ms) " (#{time_in_ms} ms)" end |
.debug_msg(msg) ⇒ Object
18 19 20 |
# File 'lib/assert/cli.rb', line 18 def self.debug_msg(msg) "[DEBUG] #{msg}" end |
.debug_start_msg(msg) ⇒ Object
22 23 24 |
# File 'lib/assert/cli.rb', line 22 def self.debug_start_msg(msg) debug_msg("#{msg}...".ljust(30)) end |
Instance Method Details
#help ⇒ Object
101 102 103 104 105 |
# File 'lib/assert/cli.rb', line 101 def help "Usage: assert [options] [TESTS]\n\n"\ "Options:"\ "#{@cli}" end |
#run ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/assert/cli.rb', line 73 def run fails_plus_errors_count = 0 begin @cli.parse!(@args) catch(:halt) do fails_plus_errors_count = Assert::AssertRunner.new(Assert.config, @cli.args, @cli.opts).run end rescue CLIRB::HelpExit puts help exit(SUCCESS_EXIT_STATUS) rescue CLIRB::VersionExit puts Assert::VERSION exit(SUCCESS_EXIT_STATUS) rescue CLIRB::Error => ex puts "#{ex.}\n\n" puts Assert.config.debug ? ex.backtrace.join("\n") : help exit(ERROR_EXIT_STATUS) rescue => ex puts "#{ex.class}: #{ex.}" puts ex.backtrace.join("\n") exit(ERROR_EXIT_STATUS) end exit( fails_plus_errors_count == 0 ? SUCCESS_EXIT_STATUS : ERROR_EXIT_STATUS, ) end |