class Assert::CLI

Constants

ERROR_EXIT_STATUS
SUCCESS_EXIT_STATUS

Public Class Methods

bench(start_msg, &block) click to toggle source
# 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) click to toggle source
# File lib/assert/cli.rb, line 14
def self.debug?(args)
  args.include?("-d") || args.include?("--debug")
end
debug_finish_msg(time_in_ms) click to toggle source
# File lib/assert/cli.rb, line 26
def self.debug_finish_msg(time_in_ms)
  " (#{time_in_ms} ms)"
end
debug_msg(msg) click to toggle source
# File lib/assert/cli.rb, line 18
def self.debug_msg(msg)
  "[DEBUG] #{msg}"
end
debug_start_msg(msg) click to toggle source
# File lib/assert/cli.rb, line 22
def self.debug_start_msg(msg)
  debug_msg("#{msg}...".ljust(30))
end
new(*args) click to toggle source
# 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

Public Instance Methods

help() click to toggle source
# File lib/assert/cli.rb, line 135
def help
  "Usage: assert [options] [TESTS]\n\n"\
  "Options:"\
  "#{@cli}"
end
run() click to toggle source
# File lib/assert/cli.rb, line 107
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.message}\n\n"
    puts Assert.config.debug ? ex.backtrace.join("\n") : help
    exit(ERROR_EXIT_STATUS)
  rescue => ex
    puts "#{ex.class}: #{ex.message}"
    puts ex.backtrace.join("\n")
    exit(ERROR_EXIT_STATUS)
  end
  exit(
    fails_plus_errors_count == 0 ? SUCCESS_EXIT_STATUS : ERROR_EXIT_STATUS,
  )
end