class Minitest::NyanCat

Attributes

output[R]

Public Class Methods

new(io) click to toggle source
# File lib/minitest/nyan_cat_plugin.rb, line 26
def initialize(io)
  @example_count = total_count
  @current = @color_index = @passing_count = @failure_count = @pending_count = 0
  @example_results = []
  @output = io
end
nyan!() click to toggle source
# File lib/minitest/nyan_cat_plugin.rb, line 33
def self.nyan!
  @nyan = true
end
nyan?() click to toggle source
# File lib/minitest/nyan_cat_plugin.rb, line 37
def self.nyan?
  @nyan ||= false
end

Public Instance Methods

method_missing(msg, *args) click to toggle source
# File lib/minitest/nyan_cat_plugin.rb, line 79
def method_missing(msg, *args)
  output.send(msg, *args)
end
print(o) click to toggle source
puts(*o) click to toggle source
# File lib/minitest/nyan_cat_plugin.rb, line 57
def puts(*o)
  if o.first =~ /Finished in (.+)s/
    output.puts "\nYou've Nyaned for #{format_duration($1.to_f)}\n".each_char.map {|c| rainbowify(c)}.join
    summary = "#{@example_count} example#{'s' unless @example_count == 1}, #{@failure_count} failure#{'s' unless @failure_count == 1}"
    summary << ", #{@pending_count} pending" if @pending_count > 0

    if @failure_count > 0
      # Red background with white chars
      output.puts "#{ESC}41m#{ESC}37m#{summary}#{NND}\n"
    elsif pending_count > 0
      # Gray background with white chars
      output.puts "#{ESC}43m#{ESC}40m#{summary}#{NND}\n"
    else
      # Green background with white chars
      output.puts "#{ESC}42m#{ESC}37m#{summary}#{NND}\n"
    end
  elsif o.first =~ /runs/
  else
    output.puts(o)
  end
end

Private Instance Methods

failure_color(text) click to toggle source

Override to make it work with Minitest

# File lib/minitest/nyan_cat_plugin.rb, line 106
def failure_color(text)
  "#{ESC}31m#{text}#{NND}"
end
pending_color(text) click to toggle source

Override to make it work with Minitest

# File lib/minitest/nyan_cat_plugin.rb, line 101
def pending_color(text)
  "#{ESC}33m#{text}#{NND}"
end
scoreboard() click to toggle source

Override to make it work with Minitest

# File lib/minitest/nyan_cat_plugin.rb, line 111
def scoreboard
  padding = @example_count.to_s.length

  [
    @current.to_s.rjust(padding),
    success_color(@passing_count.to_s.rjust(padding)),
    failure_color(@failure_count.to_s.rjust(padding)),
    pending_color(@pending_count.to_s.rjust(padding))
  ]
end
success_color(text) click to toggle source

Override to make it work with Minitest

# File lib/minitest/nyan_cat_plugin.rb, line 96
def success_color(text)
  "#{ESC}32m#{text}#{NND}"
end
total_count() click to toggle source

Hack to get the total number of assertions

# File lib/minitest/nyan_cat_plugin.rb, line 86
def total_count
  Minitest::Runnable.runnables.map(&:runnable_methods).flatten.size
end
wrap(text, code_or_symbol) click to toggle source

Override method since it assumes RSpec is used

# File lib/minitest/nyan_cat_plugin.rb, line 91
def wrap(text, code_or_symbol)
  text
end