Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactored for Minitest 5.2 #10

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 26 additions & 32 deletions lib/minitest/colorize.rb
Original file line number Diff line number Diff line change
@@ -1,62 +1,61 @@
require "minitest/colorize/version"
require "minitest/unit"

module MiniTest
module Minitest
class Colorize
attr_accessor :stream
attr_reader :io

def initialize(stream = $stdout)
self.stream = stream.tap do |stream|
stream.sync = true if stream.respond_to?(:sync=)
end
def initialize(io = $stdout)
@io = io
end

def sync
@io.sync
end

def sync=(value)
@io.sync = value if @io.respond_to?(:sync)
end

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

case string
when 'E', 'F'
stream.print red(string)
io.print red(string)
when 'S'
stream.print yellow(string)
io.print yellow(string)
when '.'
stream.print green(string)
io.print green(string)
else
stream.print string
end

unless report.empty?
stream.puts
stream.puts
stream.puts report.shift
stream.puts
io.print string
end
end

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

if string =~ /(\d+) tests, (\d+) assertions, (\d+) failures, (\d+) errors, (\d+) skips/
if string =~ /(\d+) runs, (\d+) assertions, (\d+) failures, (\d+) errors, (\d+) skips/
if $3 != '0' || $4 != '0'
stream.puts red(string)
io.puts red(string)
elsif $5 != '0'
stream.puts yellow(string)
io.puts yellow(string)
else
stream.puts green(string)
io.puts green(string)
end
else
stream.puts string
io.puts string.gsub(/\d+\) Skipped:/) { |o| yellow o }
.gsub(/\d+\) (?:Error|Failure):/) { |o| red o }
end
end

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

protected

def color_enabled?
stream.tty?
io.tty?
end

def tint(color, string)
Expand All @@ -78,11 +77,6 @@ def green(string)
def yellow(string)
tint(33, string)
end

def report
MiniTest::Unit.runner.report
end
end
end

MiniTest::Unit.output = MiniTest::Colorize.new
4 changes: 2 additions & 2 deletions lib/minitest/colorize/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module MiniTest
module Minitest
class Colorize
VERSION = "0.0.5"
VERSION = "0.0.6.pre"
end
end
11 changes: 11 additions & 0 deletions lib/minitest/colorize_plugin.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require "minitest/colorize"

module Minitest
def self.plugin_colorize_init(options)
io = Colorize.new(options[:io])

self.reporter.reporters.grep(Minitest::Reporter).each do |rep|
rep.io = io
end
end
end
9 changes: 4 additions & 5 deletions minitest-colorize.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,18 @@ require "minitest/colorize/version"

Gem::Specification.new do |s|
s.name = "minitest-colorize"
s.version = MiniTest::Colorize::VERSION
s.version = Minitest::Colorize::VERSION
s.authors = ["Gabriel Sobrinho"]
s.email = ["[email protected]"]
s.homepage = "https://github.com/sobrinho/minitest-colorize"
s.summary = %q{Colorize MiniTest output and show failing tests instantly}
s.description = %q{Colorize MiniTest output and show failing tests instantly}
s.summary = %q{Colorize Minitest output and show failing tests instantly}
s.description = %q{Colorize Minitest output and show failing tests instantly}

s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]

s.add_dependency 'minitest', '>= 2.0'
s.add_dependency 'minitest', '>= 5.2'
s.add_development_dependency 'rake', '>= 0.8.7'
s.add_development_dependency 'mocha', '>= 0.9.12'
end
49 changes: 26 additions & 23 deletions test/minitest_colorize_test.rb
Original file line number Diff line number Diff line change
@@ -1,41 +1,44 @@
require 'test_helper'
require 'minitest/colorize_plugin'

class MiniTest::ColorizeTest < MiniTest::Unit::TestCase
def setup
MiniTest::Colorize.any_instance.stubs(:color_enabled?).returns(true)
class Minitest::Colorize
def color_enabled?
true
end
end

class Minitest::ColorizeTest < Minitest::Test
def test_print_fail
assert_output "\e[31mF\e[0m" do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.print 'F'
end
end

def test_print_error
assert_output "\e[31mE\e[0m" do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.print 'E'
end
end

def test_print_skip
assert_output "\e[33mS\e[0m" do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.print 'S'
end
end

def test_print_success
assert_output "\e[32m.\e[0m" do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.print '.'
end
end

def test_print
assert_output "colorize" do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.print 'colorize'
end
end
Expand All @@ -45,49 +48,49 @@ def test_print_without_arguments
output = RUBY_VERSION >= '1.9' ? '' : 'nil'

assert_output output do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.print
end
end

def test_puts_fail
assert_output "\e[31m12 tests, 12 assertions, 4 failures, 0 errors, 0 skips\e[0m\n" do
colorize = MiniTest::Colorize.new
colorize.puts '12 tests, 12 assertions, 4 failures, 0 errors, 0 skips'
assert_output "\e[31m12 runs, 12 assertions, 4 failures, 0 errors, 0 skips\e[0m\n" do
colorize = Minitest::Colorize.new
colorize.puts '12 runs, 12 assertions, 4 failures, 0 errors, 0 skips'
end
end

def test_puts_error
assert_output "\e[31m12 tests, 12 assertions, 0 failures, 4 errors, 0 skips\e[0m\n" do
colorize = MiniTest::Colorize.new
colorize.puts '12 tests, 12 assertions, 0 failures, 4 errors, 0 skips'
assert_output "\e[31m12 runs, 12 assertions, 0 failures, 4 errors, 0 skips\e[0m\n" do
colorize = Minitest::Colorize.new
colorize.puts '12 runs, 12 assertions, 0 failures, 4 errors, 0 skips'
end
end

def test_puts_skip
assert_output "\e[33m12 tests, 12 assertions, 0 failures, 0 errors, 4 skips\e[0m\n" do
colorize = MiniTest::Colorize.new
colorize.puts '12 tests, 12 assertions, 0 failures, 0 errors, 4 skips'
assert_output "\e[33m12 runs, 12 assertions, 0 failures, 0 errors, 4 skips\e[0m\n" do
colorize = Minitest::Colorize.new
colorize.puts '12 runs, 12 assertions, 0 failures, 0 errors, 4 skips'
end
end

def test_puts_success
assert_output "\e[32m12 tests, 12 assertions, 0 failures, 0 errors, 0 skips\e[0m\n" do
colorize = MiniTest::Colorize.new
colorize.puts '12 tests, 12 assertions, 0 failures, 0 errors, 0 skips'
assert_output "\e[32m12 runs, 12 assertions, 0 failures, 0 errors, 0 skips\e[0m\n" do
colorize = Minitest::Colorize.new
colorize.puts '12 runs, 12 assertions, 0 failures, 0 errors, 0 skips'
end
end

def test_puts
assert_output "colorize\n" do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.puts 'colorize'
end
end

def test_puts_without_arguments
assert_output "\n" do
colorize = MiniTest::Colorize.new
colorize = Minitest::Colorize.new
colorize.puts
end
end
Expand Down
2 changes: 0 additions & 2 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
require 'rubygems'
require 'bundler/setup'
require 'mocha'
require 'minitest/autorun'
require 'minitest/colorize'