micro_test 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/mt +4 -29
- data/lib/micro_test.rb +4 -1
- data/lib/micro_test/formatters/base_formatter.rb +20 -0
- data/lib/micro_test/formatters/default_async_formatter.rb +87 -0
- data/lib/micro_test/formatters/default_formatter.rb +89 -0
- data/lib/micro_test/formatters/{doc.rb → doc_formatter.rb} +2 -1
- data/lib/micro_test/formatters/{dots.rb → dots_formatter.rb} +2 -1
- data/lib/micro_test/formatters/{min.rb → min_formatter.rb} +2 -1
- data/lib/micro_test/version.rb +1 -1
- data/test/runner_test.rb +1 -1
- data/test/test_test.rb +11 -10
- metadata +9 -8
- data/lib/micro_test/formatters/mt.rb +0 -63
- data/lib/micro_test/formatters/mt_async.rb +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95b18d1f0d146dbda392fada14c0d687ee85b703
|
4
|
+
data.tar.gz: 34d42a85bac2b5eb1c909383fdd92068f3f4c5ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56ecea611b376a6ad4f02e457b722597dc340a85597c96409a3769816812479909bbc1514837e0cd585bee5073f3e28b9cf9fe00f769786ac90983daf20f0b04
|
7
|
+
data.tar.gz: 0d983415c067420fbb43ba964695576a099d56e1fbcf1a3061f709e426a59a1651d2f9a2383f3800d9d8aca968e96e6a06946403f93fac5ed35194628b5248d3
|
data/bin/mt
CHANGED
@@ -6,15 +6,7 @@ require File.join(lib_path, "micro_test")
|
|
6
6
|
include MicroTest::Color
|
7
7
|
|
8
8
|
# setup the formatters list ---------------------------------------------------
|
9
|
-
|
10
|
-
formatter_names = Dir[File.join(formatters_path, "*.rb")].reduce([]) do |memo, file|
|
11
|
-
if (file =~ /(base_formatter\.rb|_async\.rb)$/).nil?
|
12
|
-
name = file[file.rindex("/") + 1..-4]
|
13
|
-
name = "*#{name}" if name == "mt"
|
14
|
-
memo << name
|
15
|
-
end
|
16
|
-
memo
|
17
|
-
end
|
9
|
+
formatter_names = MicroTest.formatters.map(&:short_name).sort
|
18
10
|
|
19
11
|
# setup the options -----------------------------------------------------------
|
20
12
|
options = {}
|
@@ -91,28 +83,11 @@ else
|
|
91
83
|
end
|
92
84
|
|
93
85
|
# setup the formatter ---------------------------------------------------------
|
94
|
-
|
95
|
-
|
96
|
-
if options[:async]
|
97
|
-
async_path = path.gsub(/\.rb$/, "_async.rb")
|
98
|
-
path = async_path if File.exist?(async_path)
|
99
|
-
end
|
100
|
-
unless File.exist?(path)
|
101
|
-
puts "Formatter not found at #{path}"
|
102
|
-
puts "Please check the formatter name and try again."
|
103
|
-
exit 1
|
104
|
-
end
|
105
|
-
begin
|
106
|
-
require path
|
107
|
-
formatter = MicroTest.const_get("Formatter").new
|
108
|
-
rescue Exception => ex
|
109
|
-
puts "Failed to load the formatter defined at #{path}"
|
110
|
-
puts ex.message
|
111
|
-
exit 1
|
112
|
-
end
|
86
|
+
formatter = MicroTest.formatters.find { |f| f.short_name == options[:formatter] }
|
87
|
+
formatter ||= MicroTest.formatters.find { |f| f.short_name == "default" }
|
113
88
|
|
114
89
|
# setup the test runner -------------------------------------------------------
|
115
|
-
runner = MicroTest::Runner.new(formatter, options)
|
90
|
+
runner = MicroTest::Runner.new(formatter.new, options)
|
116
91
|
|
117
92
|
# setup pry -------------------------------------------------------------------
|
118
93
|
if options[:pry]
|
data/lib/micro_test.rb
CHANGED
@@ -1,2 +1,5 @@
|
|
1
|
-
path = File.
|
1
|
+
path = File.expand_path("../micro_test/*.rb", __FILE__)
|
2
|
+
Dir[path].each { |file| require file }
|
3
|
+
|
4
|
+
path = File.expand_path("../micro_test/formatters/*.rb", __FILE__)
|
2
5
|
Dir[path].each { |file| require file }
|
@@ -2,6 +2,12 @@ require File.join(File.dirname(__FILE__), "..", "color")
|
|
2
2
|
|
3
3
|
module MicroTest
|
4
4
|
|
5
|
+
class << self
|
6
|
+
def formatters
|
7
|
+
@formatters ||= []
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
5
11
|
# The base class for formatters.
|
6
12
|
# Defines the API that formatters can/should implement
|
7
13
|
# to control test run output.
|
@@ -9,6 +15,20 @@ module MicroTest
|
|
9
15
|
include MicroTest::Color
|
10
16
|
attr_accessor :passed, :failed, :duration
|
11
17
|
|
18
|
+
class << self
|
19
|
+
def inherited(subclass)
|
20
|
+
MicroTest.formatters << subclass
|
21
|
+
end
|
22
|
+
|
23
|
+
def short_name
|
24
|
+
@short_name || name
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_short_name(value)
|
28
|
+
@short_name = value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
12
32
|
def initialize
|
13
33
|
@duration = 0
|
14
34
|
@passed = 0
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "base_formatter")
|
2
|
+
|
3
|
+
module MicroTest
|
4
|
+
class DefaultAsyncFormatter < MicroTest::BaseFormatter
|
5
|
+
set_short_name "default_async"
|
6
|
+
|
7
|
+
def after_test(test)
|
8
|
+
test.passed? ? print(green ".") : print(red ".")
|
9
|
+
end
|
10
|
+
|
11
|
+
def after_suite(test_classes)
|
12
|
+
puts
|
13
|
+
test_classes.each do |test_class|
|
14
|
+
print_output_for_test_class test_class
|
15
|
+
end
|
16
|
+
puts
|
17
|
+
puts "".ljust(80, "-")
|
18
|
+
print " #{passed + failed} Tests finished in #{yellow duration} seconds. "
|
19
|
+
totals = []
|
20
|
+
totals << green("#{passed} Passed") if passed > 0
|
21
|
+
totals << red("#{failed} Failed") if failed > 0
|
22
|
+
print "(#{totals.join(", ")})"
|
23
|
+
puts
|
24
|
+
puts
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def print_output_for_test_class(test_class)
|
30
|
+
puts
|
31
|
+
puts test_class.name.ljust(80, "-")
|
32
|
+
test_class.tests.each do |test|
|
33
|
+
print_output_for_test test
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def print_output_for_test(test)
|
38
|
+
return unless test.finished?
|
39
|
+
duration = (test.duration * 10**4).round.to_f / 10**4
|
40
|
+
print yellow(" #{duration.to_s.ljust(6, "0")}")
|
41
|
+
|
42
|
+
if test.passed?
|
43
|
+
print green(" #{test.desc}")
|
44
|
+
else
|
45
|
+
print_test_failure test
|
46
|
+
end
|
47
|
+
|
48
|
+
puts
|
49
|
+
end
|
50
|
+
|
51
|
+
def print_test_failure(test)
|
52
|
+
puts red(" #{test.desc}")
|
53
|
+
test.failed_asserts.each do |assert|
|
54
|
+
print_assert_failure assert
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def print_assert_failure(assert)
|
59
|
+
puts
|
60
|
+
print "".ljust(9)
|
61
|
+
puts "#{assert[:file_path]}:#{red(assert[:line_num])}"
|
62
|
+
puts "".ljust(9) + "".rjust(71, "-")
|
63
|
+
index = assert[:line_num] - 1
|
64
|
+
start = index - 2
|
65
|
+
start = 0 if start <= 0
|
66
|
+
finish = index + 2
|
67
|
+
finish = assert[:lines].length - 1 if finish >= assert[:lines].length
|
68
|
+
print_assert_failure_lines assert, start, finish
|
69
|
+
end
|
70
|
+
|
71
|
+
def print_assert_failure_lines(assert, start, finish)
|
72
|
+
(start..finish).each do |i|
|
73
|
+
print "".ljust(9)
|
74
|
+
if i == index
|
75
|
+
print red((i + 1).to_s.rjust(3, "0"))
|
76
|
+
print red("|")
|
77
|
+
print red(assert[:lines][i])
|
78
|
+
else
|
79
|
+
print (i + 1).to_s.rjust(3, "0")
|
80
|
+
print "|"
|
81
|
+
print assert[:lines][i]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "base_formatter")
|
2
|
+
|
3
|
+
module MicroTest
|
4
|
+
class DefaultFormatter < MicroTest::BaseFormatter
|
5
|
+
set_short_name "default"
|
6
|
+
|
7
|
+
def before_class(test_class)
|
8
|
+
puts
|
9
|
+
print_with_line test_class.name
|
10
|
+
end
|
11
|
+
|
12
|
+
def after_test(test)
|
13
|
+
duration = (test.duration * 10**4).round.to_f / 10**4
|
14
|
+
color = duration < 0.01 ? :yellow : :red
|
15
|
+
print send(color, " #{duration.to_s.ljust(6, "0")}")
|
16
|
+
|
17
|
+
if test.passed?
|
18
|
+
print green(" #{test.desc}")
|
19
|
+
else
|
20
|
+
print_test_failure test
|
21
|
+
end
|
22
|
+
|
23
|
+
puts
|
24
|
+
end
|
25
|
+
|
26
|
+
def after_suite(test_classes)
|
27
|
+
puts
|
28
|
+
print_line
|
29
|
+
print_totals
|
30
|
+
puts " in #{yellow duration} seconds."
|
31
|
+
print_line
|
32
|
+
puts
|
33
|
+
puts
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def print_with_line(value)
|
39
|
+
puts "#{value} ".ljust(80, "-")
|
40
|
+
end
|
41
|
+
|
42
|
+
def print_line
|
43
|
+
puts "".ljust(80, "-")
|
44
|
+
end
|
45
|
+
|
46
|
+
def print_totals
|
47
|
+
totals = []
|
48
|
+
totals << green("#{passed} Passed") if passed > 0
|
49
|
+
totals << red("#{failed} Failed") if failed > 0
|
50
|
+
print totals.join(", ")
|
51
|
+
end
|
52
|
+
|
53
|
+
def print_test_failure(test)
|
54
|
+
puts red(" #{test.desc}")
|
55
|
+
test.failed_asserts.each do |assert|
|
56
|
+
print_assert_failure assert
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def print_assert_failure(assert)
|
61
|
+
puts
|
62
|
+
print "".ljust(9)
|
63
|
+
puts "#{assert[:file_path]}:#{red(assert[:line_num])}"
|
64
|
+
puts "".ljust(9) + "".rjust(71, "-")
|
65
|
+
index = assert[:line_num] - 1
|
66
|
+
start = index - 2
|
67
|
+
start = 0 if start <= 0
|
68
|
+
finish = index + 2
|
69
|
+
finish = assert[:lines].length - 1 if finish >= assert[:lines].length
|
70
|
+
print_assert_failure_lines assert, start, finish
|
71
|
+
end
|
72
|
+
|
73
|
+
def print_assert_failure_lines(assert, start, finish)
|
74
|
+
(start..finish).each do |i|
|
75
|
+
print "".ljust(9)
|
76
|
+
if i == index
|
77
|
+
print red((i + 1).to_s.rjust(3, "0"))
|
78
|
+
print red("|")
|
79
|
+
print red(assert[:lines][i])
|
80
|
+
else
|
81
|
+
print (i + 1).to_s.rjust(3, "0")
|
82
|
+
print "|"
|
83
|
+
print assert[:lines][i]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), "base_formatter")
|
2
2
|
|
3
3
|
module MicroTest
|
4
|
-
class
|
4
|
+
class DotsFormatter < MicroTest::BaseFormatter
|
5
|
+
set_short_name "dots"
|
5
6
|
|
6
7
|
def after_test(test)
|
7
8
|
print(test.passed? ? green(".") : red("."))
|
data/lib/micro_test/version.rb
CHANGED
data/test/runner_test.rb
CHANGED
data/test/test_test.rb
CHANGED
@@ -2,9 +2,10 @@ unless ENV["MT_DEMO"]
|
|
2
2
|
class TestTest < MicroTest::Test
|
3
3
|
|
4
4
|
before do
|
5
|
-
|
6
|
-
|
7
|
-
@
|
5
|
+
@test_test = TestTest.clone
|
6
|
+
@test_test.instance_eval { @subclasses = [] }
|
7
|
+
@test_test.instance_eval { @tests = [] }
|
8
|
+
@Example = Class.new(@test_test) do
|
8
9
|
before {}
|
9
10
|
after {}
|
10
11
|
test("truth") { assert true }
|
@@ -14,14 +15,14 @@ unless ENV["MT_DEMO"]
|
|
14
15
|
end
|
15
16
|
|
16
17
|
test "adds subclass" do
|
17
|
-
assert
|
18
|
-
assert
|
18
|
+
assert @test_test.subclasses.length == 1
|
19
|
+
assert @test_test.subclasses[0] == @Example
|
19
20
|
end
|
20
21
|
|
21
22
|
test "stores subclasses" do
|
22
|
-
assert
|
23
|
-
assert
|
24
|
-
assert
|
23
|
+
assert @test_test.subclasses.is_a?(Array)
|
24
|
+
assert @test_test.subclasses.length == 1
|
25
|
+
assert @test_test.subclasses.first == @Example
|
25
26
|
end
|
26
27
|
|
27
28
|
test "stores tests" do
|
@@ -32,8 +33,8 @@ unless ENV["MT_DEMO"]
|
|
32
33
|
|
33
34
|
test "stores files" do
|
34
35
|
file = __FILE__
|
35
|
-
assert
|
36
|
-
assert
|
36
|
+
assert @test_test.files[file].is_a?(Array)
|
37
|
+
assert @test_test.files[file].select{ |l| l.start_with?(" assert @test_test.files[file].select{ |l| l.start_with?(") }.length > 0
|
37
38
|
end
|
38
39
|
|
39
40
|
test ".reset" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: micro_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Hopkins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: os
|
@@ -51,11 +51,11 @@ files:
|
|
51
51
|
- ext/mkrf_conf.rb
|
52
52
|
- lib/micro_test/color.rb
|
53
53
|
- lib/micro_test/formatters/base_formatter.rb
|
54
|
-
- lib/micro_test/formatters/
|
55
|
-
- lib/micro_test/formatters/
|
56
|
-
- lib/micro_test/formatters/
|
57
|
-
- lib/micro_test/formatters/
|
58
|
-
- lib/micro_test/formatters/
|
54
|
+
- lib/micro_test/formatters/default_async_formatter.rb
|
55
|
+
- lib/micro_test/formatters/default_formatter.rb
|
56
|
+
- lib/micro_test/formatters/doc_formatter.rb
|
57
|
+
- lib/micro_test/formatters/dots_formatter.rb
|
58
|
+
- lib/micro_test/formatters/min_formatter.rb
|
59
59
|
- lib/micro_test/runner.rb
|
60
60
|
- lib/micro_test/test.rb
|
61
61
|
- lib/micro_test/test_wrapper.rb
|
@@ -69,7 +69,7 @@ files:
|
|
69
69
|
- test/runner_test.rb
|
70
70
|
- test/test_test.rb
|
71
71
|
- test/test_wrapper_test.rb
|
72
|
-
homepage:
|
72
|
+
homepage: https://github.com/hopsoft/micro_test
|
73
73
|
licenses:
|
74
74
|
- MIT
|
75
75
|
metadata: {}
|
@@ -102,3 +102,4 @@ test_files:
|
|
102
102
|
- test/runner_test.rb
|
103
103
|
- test/test_test.rb
|
104
104
|
- test/test_wrapper_test.rb
|
105
|
+
has_rdoc:
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "base_formatter")
|
2
|
-
|
3
|
-
module MicroTest
|
4
|
-
class Formatter < MicroTest::BaseFormatter
|
5
|
-
def before_class(test_class)
|
6
|
-
puts
|
7
|
-
puts test_class.name.ljust(80, "-")
|
8
|
-
end
|
9
|
-
|
10
|
-
def after_test(test)
|
11
|
-
duration = (test.duration * 10**4).round.to_f / 10**4
|
12
|
-
if duration < 0.01
|
13
|
-
print yellow(" #{duration.to_s.ljust(6, "0")}")
|
14
|
-
else
|
15
|
-
print red(" #{duration.to_s.ljust(6, "0")}")
|
16
|
-
end
|
17
|
-
|
18
|
-
if test.passed?
|
19
|
-
print green(" #{test.desc}")
|
20
|
-
else
|
21
|
-
puts red(" #{test.desc}")
|
22
|
-
test.failed_asserts.each do |assert|
|
23
|
-
puts
|
24
|
-
print "".ljust(9)
|
25
|
-
puts "#{assert[:file_path]}:#{red(assert[:line_num])}"
|
26
|
-
puts "".ljust(9) + "".rjust(71, "-")
|
27
|
-
index = assert[:line_num] - 1
|
28
|
-
start = index - 2
|
29
|
-
start = 0 if start <= 0
|
30
|
-
finish = index + 2
|
31
|
-
finish = assert[:lines].length - 1 if finish >= assert[:lines].length
|
32
|
-
(start..finish).each do |i|
|
33
|
-
print "".ljust(9)
|
34
|
-
if i == index
|
35
|
-
print red((i + 1).to_s.rjust(3, "0"))
|
36
|
-
print red("|")
|
37
|
-
print red(assert[:lines][i])
|
38
|
-
else
|
39
|
-
print (i + 1).to_s.rjust(3, "0")
|
40
|
-
print "|"
|
41
|
-
print assert[:lines][i]
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
puts
|
48
|
-
end
|
49
|
-
|
50
|
-
def after_suite(test_classes)
|
51
|
-
puts
|
52
|
-
puts "".ljust(80, "-")
|
53
|
-
print " #{passed + failed} Tests finished in #{yellow duration} seconds. "
|
54
|
-
totals = []
|
55
|
-
totals << green("#{passed} Passed") if passed > 0
|
56
|
-
totals << red("#{failed} Failed") if failed > 0
|
57
|
-
print "(#{totals.join(", ")})"
|
58
|
-
puts
|
59
|
-
puts
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "base_formatter")
|
2
|
-
|
3
|
-
module MicroTest
|
4
|
-
class Formatter < MicroTest::BaseFormatter
|
5
|
-
|
6
|
-
def after_test(test)
|
7
|
-
test.passed? ? print(green ".") : print(red ".")
|
8
|
-
end
|
9
|
-
|
10
|
-
def after_suite(test_classes)
|
11
|
-
puts
|
12
|
-
|
13
|
-
test_classes.each do |test_class|
|
14
|
-
puts
|
15
|
-
puts test_class.name.ljust(80, "-")
|
16
|
-
|
17
|
-
test_class.tests.each do |test|
|
18
|
-
next unless test.finished?
|
19
|
-
duration = (test.duration * 10**4).round.to_f / 10**4
|
20
|
-
print yellow(" #{duration.to_s.ljust(6, "0")}")
|
21
|
-
|
22
|
-
if test.passed?
|
23
|
-
print green(" #{test.desc}")
|
24
|
-
else
|
25
|
-
puts red(" #{test.desc}")
|
26
|
-
test.failed_asserts.each do |assert|
|
27
|
-
puts
|
28
|
-
print "".ljust(9)
|
29
|
-
puts "#{assert[:file_path]}:#{red(assert[:line_num])}"
|
30
|
-
puts "".ljust(9) + "".rjust(71, "-")
|
31
|
-
index = assert[:line_num] - 1
|
32
|
-
start = index - 2
|
33
|
-
start = 0 if start <= 0
|
34
|
-
finish = index + 2
|
35
|
-
finish = assert[:lines].length - 1 if finish >= assert[:lines].length
|
36
|
-
(start..finish).each do |i|
|
37
|
-
print "".ljust(9)
|
38
|
-
if i == index
|
39
|
-
print red((i + 1).to_s.rjust(3, "0"))
|
40
|
-
print red("|")
|
41
|
-
print red(assert[:lines][i])
|
42
|
-
else
|
43
|
-
print (i + 1).to_s.rjust(3, "0")
|
44
|
-
print "|"
|
45
|
-
print assert[:lines][i]
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
puts
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
puts
|
56
|
-
puts "".ljust(80, "-")
|
57
|
-
print " #{passed + failed} Tests finished in #{yellow duration} seconds. "
|
58
|
-
totals = []
|
59
|
-
totals << green("#{passed} Passed") if passed > 0
|
60
|
-
totals << red("#{failed} Failed") if failed > 0
|
61
|
-
print "(#{totals.join(", ")})"
|
62
|
-
puts
|
63
|
-
puts
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
end
|