Sha256: 36308d7f7aa31ce7ce68efed57cf0328476cb94336b253f4e6be1769eb027c8f

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

require "minitest/colorize/version"
require "minitest/unit"

module MiniTest
  class Colorize
    attr_accessor :io

    def initialize(io)
      self.io = io
    end

    def print(string = nil)
      return io.print if string.nil?

      if color = colors[string]
        io.print tint(color, string)
      else
        io.print string
      end
    end

    def puts(string = nil)
      return io.puts if string.nil?

      if string =~ /(\d+) tests, (\d+) assertions, (\d+) failures, (\d+) errors, (\d+) skips/
        color = if $3 != '0'
                  colors['F']
                elsif $4 != '0'
                  colors['E']
                elsif $5 != '0'
                  colors['S']
                else
                  colors['.']
                end

        io.puts tint(color, string)
      else
        io.puts string
      end
    end

    def method_missing(method, *args, &block)
      io.send(method, *args, &block)
    end

    protected

    def tint(color, string)
      "\e[#{color}m#{string}\e[0m"
    end

    def colors
      { "F" => 31, "E" => 31, "S" => 33, "." => 32 }
    end
  end
end

MiniTest::Unit.output = MiniTest::Colorize.new(MiniTest::Unit.output)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
minitest-colorize-0.0.2 lib/minitest/colorize.rb