Class: Minitest::NyanCat

Inherits:
Object
  • Object
show all
Includes:
NyanCat::Common
Defined in:
lib/minitest/nyan_cat_plugin.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io) ⇒ NyanCat

Returns a new instance of NyanCat.



26
27
28
29
30
31
# 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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(msg, *args) ⇒ Object



79
80
81
# File 'lib/minitest/nyan_cat_plugin.rb', line 79

def method_missing(msg, *args)
  output.send(msg, *args)
end

Instance Attribute Details

#outputObject (readonly)

Returns the value of attribute output.



24
25
26
# File 'lib/minitest/nyan_cat_plugin.rb', line 24

def output
  @output
end

Class Method Details

.nyan!Object



33
34
35
# File 'lib/minitest/nyan_cat_plugin.rb', line 33

def self.nyan!
  @nyan = true
end

.nyan?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/minitest/nyan_cat_plugin.rb', line 37

def self.nyan?
  @nyan ||= false
end

Instance Method Details



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/minitest/nyan_cat_plugin.rb', line 41

def print(o)
  case o
  when "." then
    @passing_count += 1
    tick PASS
  when "E", "F" then
    @failure_count += 1
    tick FAIL
  when "S" then
    @pending_count += 1
    tick PENDING
  else
    output.print o
  end
end

#puts(*o) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 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