micron 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -4
- data/Gemfile.lock +54 -42
- data/VERSION +1 -1
- data/lib/micron/app.rb +16 -5
- data/lib/micron/app/options.rb +17 -1
- data/lib/micron/compat/minitest47.rb +45 -0
- data/lib/micron/compat/minitest5.rb +47 -0
- data/lib/micron/fork_runner.rb +4 -4
- data/lib/micron/minitest.rb +11 -42
- data/lib/micron/proc_runner.rb +5 -5
- data/lib/micron/reporter.rb +9 -0
- data/lib/micron/reporter/console.rb +45 -6
- data/lib/micron/runner.rb +10 -9
- data/lib/micron/runner/backtrace_filter.rb +1 -1
- data/lib/micron/runner/clazz.rb +26 -4
- data/lib/micron/runner/fork_worker.rb +3 -0
- data/lib/micron/runner/method.rb +7 -1
- data/lib/micron/runner/parallel_clazz.rb +1 -0
- data/lib/micron/runner/shim.rb +1 -1
- data/lib/micron/runner/test_file.rb +45 -3
- data/lib/micron/test_case.rb +10 -1
- data/lib/micron/test_case/lifecycle_hooks.rb +8 -15
- data/lib/micron/test_case/redir_logging.rb +21 -1
- data/micron.gemspec +10 -11
- metadata +20 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01a37fda7663cd88bfdd2bf65785187f7abd0e33
|
4
|
+
data.tar.gz: 64658365410209329b6ee913f1ea349bec00d8b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 177ec22157dbba989446dec42a9986e31aa5711be9c18ba34b6253b28bd48eda0d190c64c7ef4ff5eb13f697b9b86a225ae873aee9292b05c9e485d712d9f65f
|
7
|
+
data.tar.gz: 196ba6ed92b95e032013ed28d6dca7fe9bdaf71f0f50c135b4668db0afcba8306d5d633a1d5d0fcdd2f36db359fbe0a23193858b1a8ede7e84317d2a0ae60dec
|
data/Gemfile
CHANGED
@@ -7,13 +7,11 @@ end
|
|
7
7
|
gem "easycov", :github => "chetan/easycov"
|
8
8
|
|
9
9
|
gem "hitimes"
|
10
|
-
gem "
|
10
|
+
gem "ansi"
|
11
11
|
|
12
12
|
group :development do
|
13
13
|
gem "yard", "~> 0.8"
|
14
14
|
gem "bundler", "~> 1.1"
|
15
|
-
gem "jeweler", :
|
16
|
-
|
17
|
-
gem "minitest", "~> 4.0", :platforms => [:mri_19, :mri_20, :rbx]
|
15
|
+
gem "jeweler", :github => "chetan/jeweler", :branch => "bixby"
|
18
16
|
end
|
19
17
|
|
data/Gemfile.lock
CHANGED
@@ -1,88 +1,100 @@
|
|
1
1
|
GIT
|
2
2
|
remote: git://github.com/chetan/easycov.git
|
3
|
-
revision:
|
3
|
+
revision: 6e89ff38c36a605c4de8a34893726c73bd93f3b4
|
4
4
|
specs:
|
5
|
-
easycov (0.
|
5
|
+
easycov (0.4.0)
|
6
6
|
multi_json
|
7
7
|
simplecov
|
8
|
+
simplecov-console
|
9
|
+
simplecov-html
|
8
10
|
|
9
11
|
GIT
|
10
|
-
remote:
|
11
|
-
revision:
|
12
|
+
remote: git://github.com/chetan/jeweler.git
|
13
|
+
revision: b1f048d0ee6bc9febbcadb52b75b77e734782eb4
|
12
14
|
branch: bixby
|
13
15
|
specs:
|
14
|
-
jeweler (
|
16
|
+
jeweler (2.0.1)
|
15
17
|
builder
|
16
|
-
bundler (
|
18
|
+
bundler (>= 1.0)
|
17
19
|
git (>= 1.2.5)
|
18
|
-
github_api
|
20
|
+
github_api
|
19
21
|
highline (>= 1.6.15)
|
20
|
-
nokogiri (
|
22
|
+
nokogiri (>= 1.5.10)
|
21
23
|
rake
|
22
24
|
rdoc
|
23
25
|
|
24
26
|
PATH
|
25
27
|
remote: .
|
26
28
|
specs:
|
27
|
-
micron (0.5.
|
28
|
-
|
29
|
+
micron (0.5.1)
|
30
|
+
ansi
|
29
31
|
easycov
|
30
32
|
hitimes
|
31
33
|
|
32
34
|
GEM
|
33
35
|
remote: https://rubygems.org/
|
34
36
|
specs:
|
35
|
-
addressable (2.3.
|
37
|
+
addressable (2.3.6)
|
38
|
+
ansi (1.4.3)
|
36
39
|
builder (3.2.2)
|
37
|
-
colorize (0.
|
38
|
-
|
39
|
-
|
40
|
+
colorize (0.7.2)
|
41
|
+
descendants_tracker (0.0.4)
|
42
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
43
|
+
docile (1.1.3)
|
44
|
+
faraday (0.9.0)
|
45
|
+
multipart-post (>= 1.2, < 3)
|
40
46
|
git (1.2.6)
|
41
|
-
github_api (0.
|
42
|
-
addressable
|
43
|
-
|
47
|
+
github_api (0.11.3)
|
48
|
+
addressable (~> 2.3)
|
49
|
+
descendants_tracker (~> 0.0.1)
|
50
|
+
faraday (~> 0.8, < 0.10)
|
44
51
|
hashie (>= 1.2)
|
45
|
-
multi_json (
|
46
|
-
nokogiri (~> 1.
|
52
|
+
multi_json (>= 1.7.5, < 2.0)
|
53
|
+
nokogiri (~> 1.6.0)
|
47
54
|
oauth2
|
48
|
-
hashie (2.
|
49
|
-
highline (1.6.
|
55
|
+
hashie (2.1.1)
|
56
|
+
highline (1.6.21)
|
57
|
+
hirb (0.7.1)
|
50
58
|
hitimes (1.2.1)
|
51
|
-
|
52
|
-
|
53
|
-
jwt (0.1.8)
|
59
|
+
json (1.8.1)
|
60
|
+
jwt (0.1.11)
|
54
61
|
multi_json (>= 1.5)
|
55
|
-
|
56
|
-
multi_json (1.
|
62
|
+
mini_portile (0.5.3)
|
63
|
+
multi_json (1.9.2)
|
57
64
|
multi_xml (0.5.5)
|
58
|
-
multipart-post (
|
59
|
-
nokogiri (1.
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
jwt (~> 0.1.
|
64
|
-
multi_json (~> 1.
|
65
|
+
multipart-post (2.0.0)
|
66
|
+
nokogiri (1.6.1)
|
67
|
+
mini_portile (~> 0.5.0)
|
68
|
+
oauth2 (0.9.3)
|
69
|
+
faraday (>= 0.8, < 0.10)
|
70
|
+
jwt (~> 0.1.8)
|
71
|
+
multi_json (~> 1.3)
|
65
72
|
multi_xml (~> 0.5)
|
66
73
|
rack (~> 1.2)
|
67
74
|
rack (1.5.2)
|
68
|
-
rake (10.1
|
69
|
-
rdoc (4.
|
75
|
+
rake (10.3.1)
|
76
|
+
rdoc (4.1.1)
|
70
77
|
json (~> 1.4)
|
71
|
-
simplecov (0.
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
78
|
+
simplecov (0.8.2)
|
79
|
+
docile (~> 1.1.0)
|
80
|
+
multi_json
|
81
|
+
simplecov-html (~> 0.8.0)
|
82
|
+
simplecov-console (0.1.3)
|
83
|
+
colorize
|
84
|
+
hirb
|
85
|
+
simplecov
|
86
|
+
simplecov-html (0.8.0)
|
87
|
+
thread_safe (0.3.3)
|
88
|
+
yard (0.8.7.4)
|
76
89
|
|
77
90
|
PLATFORMS
|
78
91
|
ruby
|
79
92
|
|
80
93
|
DEPENDENCIES
|
94
|
+
ansi
|
81
95
|
bundler (~> 1.1)
|
82
|
-
colorize
|
83
96
|
easycov!
|
84
97
|
hitimes
|
85
98
|
jeweler!
|
86
99
|
micron!
|
87
|
-
minitest (~> 4.0)
|
88
100
|
yard (~> 0.8)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
data/lib/micron/app.rb
CHANGED
@@ -46,12 +46,13 @@ module Micron
|
|
46
46
|
# Spawn child runner if called
|
47
47
|
if options[:runclass] then
|
48
48
|
require "micron/proc_runner"
|
49
|
-
|
49
|
+
methods = ENV["MICRON_METHODS"].split(/:/)
|
50
|
+
Micron.runner = Micron::ProcRunner.new(nil, methods, reporters)
|
50
51
|
Micron.runner.run_class
|
51
52
|
exit
|
52
53
|
elsif options[:runmethod] then
|
53
54
|
require "micron/proc_runner"
|
54
|
-
Micron.runner = Micron::ProcRunner.new(nil, reporters)
|
55
|
+
Micron.runner = Micron::ProcRunner.new(nil, nil, reporters)
|
55
56
|
Micron.runner.run_method
|
56
57
|
exit
|
57
58
|
end
|
@@ -81,20 +82,30 @@ module Micron
|
|
81
82
|
|
82
83
|
files.sort!
|
83
84
|
|
85
|
+
# Optionally filter files
|
86
|
+
if options[:tests] and !options[:tests].empty? then
|
87
|
+
files.reject!{ |f|
|
88
|
+
options[:tests].find{ |t| f.include?(t) }.nil?
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
84
92
|
# Run tests
|
85
93
|
if options[:proc] then
|
86
94
|
require "micron/proc_runner"
|
87
|
-
|
95
|
+
runner = Micron::ProcRunner
|
88
96
|
elsif options[:fork] then
|
89
97
|
require "micron/fork_runner"
|
90
|
-
|
98
|
+
runner = Micron::ForkRunner
|
91
99
|
else
|
92
|
-
|
100
|
+
runner = Micron::Runner
|
93
101
|
end
|
102
|
+
|
103
|
+
Micron.runner = runner.new(files, options[:methods], reporters)
|
94
104
|
results = Micron.runner.run
|
95
105
|
|
96
106
|
Micron::Runner::Shim.cleanup!
|
97
107
|
|
108
|
+
# set a non-zero exit code if we had any failures
|
98
109
|
exit(count_failures(results) > 0 ? 1 : 0)
|
99
110
|
end
|
100
111
|
|
data/lib/micron/app/options.rb
CHANGED
@@ -6,7 +6,9 @@ module Micron
|
|
6
6
|
class Options
|
7
7
|
|
8
8
|
DEFAULTS = {
|
9
|
-
:coverage => true
|
9
|
+
:coverage => true,
|
10
|
+
:tests => [],
|
11
|
+
:methods => [],
|
10
12
|
}
|
11
13
|
|
12
14
|
def self.parse(options=nil)
|
@@ -34,6 +36,15 @@ module Micron
|
|
34
36
|
parser = OptionParser.new do |opts|
|
35
37
|
opts.banner = "usage: #{$0} [options]"
|
36
38
|
|
39
|
+
opts.on("-t", "--test PATTERN", "Only run test files matching pattern") do |p|
|
40
|
+
options[:tests] << p
|
41
|
+
end
|
42
|
+
|
43
|
+
opts.on("-m", "--method PATTERN", "Only run test methods matching pattern") do |p|
|
44
|
+
p.strip!
|
45
|
+
options[:methods] << p if not p.empty?
|
46
|
+
end
|
47
|
+
|
37
48
|
opts.on("--nocov", "Disable coverage reporting") {
|
38
49
|
options[:coverage] = false
|
39
50
|
}
|
@@ -53,6 +64,11 @@ module Micron
|
|
53
64
|
opts.on("--runmethod", "Run method in child process") {
|
54
65
|
options[:runmethod] = true
|
55
66
|
}
|
67
|
+
|
68
|
+
opts.on("-h", "--help", "Show this message") do
|
69
|
+
puts opts
|
70
|
+
exit
|
71
|
+
end
|
56
72
|
end
|
57
73
|
|
58
74
|
begin
|
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
# Compatibility layer for MiniTest
|
3
|
+
|
4
|
+
require "micron"
|
5
|
+
|
6
|
+
old_verbose = $VERBOSE
|
7
|
+
$VERBOSE = nil
|
8
|
+
|
9
|
+
module MiniTest
|
10
|
+
Assertion = Micron::Assertion
|
11
|
+
|
12
|
+
class Unit
|
13
|
+
|
14
|
+
VERSION = "4.7"
|
15
|
+
TestCase = Micron::TestCase
|
16
|
+
|
17
|
+
def self.autorun
|
18
|
+
# noop
|
19
|
+
end
|
20
|
+
|
21
|
+
class TestCase
|
22
|
+
|
23
|
+
def name
|
24
|
+
self.class.name
|
25
|
+
end
|
26
|
+
alias_method :__name__, :name
|
27
|
+
|
28
|
+
def micron_method=(method)
|
29
|
+
@micron_method = method
|
30
|
+
end
|
31
|
+
|
32
|
+
def passed?
|
33
|
+
@micron_method.passed?
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.parallelize_me!
|
37
|
+
# noop
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
$VERBOSE = old_verbose
|
@@ -0,0 +1,47 @@
|
|
1
|
+
|
2
|
+
# Compatibility layer for MiniTest
|
3
|
+
|
4
|
+
require "micron"
|
5
|
+
|
6
|
+
old_verbose = $VERBOSE
|
7
|
+
$VERBOSE = nil
|
8
|
+
|
9
|
+
module Minitest
|
10
|
+
|
11
|
+
Assertion = Micron::Assertion
|
12
|
+
|
13
|
+
VERSION = "5.3.3"
|
14
|
+
Test = Micron::TestCase
|
15
|
+
|
16
|
+
def self.autorun
|
17
|
+
# noop
|
18
|
+
end
|
19
|
+
|
20
|
+
class Test
|
21
|
+
|
22
|
+
def name
|
23
|
+
self.class.name
|
24
|
+
end
|
25
|
+
alias_method :__name__, :name
|
26
|
+
|
27
|
+
def micron_method=(method)
|
28
|
+
@micron_method = method
|
29
|
+
end
|
30
|
+
|
31
|
+
def passed?
|
32
|
+
@micron_method.passed?
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.parallelize_me!
|
36
|
+
# noop
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.i_suck_and_my_tests_are_order_dependent!
|
40
|
+
# noop
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
$VERBOSE = old_verbose
|
data/lib/micron/fork_runner.rb
CHANGED
@@ -17,7 +17,7 @@ module Micron
|
|
17
17
|
$0 = "micron: class"
|
18
18
|
# ERR.puts "micron: class (#{$$})"
|
19
19
|
|
20
|
-
test_file = TestFile.new(file)
|
20
|
+
test_file = TestFile.new(file, @method_patterns)
|
21
21
|
report(:start_file, test_file)
|
22
22
|
|
23
23
|
begin
|
@@ -34,9 +34,9 @@ module Micron
|
|
34
34
|
results = worker.wait.result
|
35
35
|
results.each do |clazz|
|
36
36
|
if clazz.kind_of? Exception then
|
37
|
-
puts "Error loading test file: #{file}"
|
38
|
-
puts clazz
|
39
|
-
puts clazz.backtrace
|
37
|
+
STDERR.puts "Error loading test file: #{file}"
|
38
|
+
STDERR.puts clazz
|
39
|
+
STDERR.puts clazz.backtrace
|
40
40
|
exit 1
|
41
41
|
end
|
42
42
|
|
data/lib/micron/minitest.rb
CHANGED
@@ -1,45 +1,14 @@
|
|
1
1
|
|
2
|
-
#
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
module MiniTest
|
10
|
-
Assertion = Micron::Assertion
|
11
|
-
|
12
|
-
class Unit
|
13
|
-
|
14
|
-
VERSION = "4.7"
|
15
|
-
TestCase = Micron::TestCase
|
16
|
-
|
17
|
-
def self.autorun
|
18
|
-
# noop
|
19
|
-
end
|
20
|
-
|
21
|
-
class TestCase
|
22
|
-
|
23
|
-
def name
|
24
|
-
self.class.name
|
25
|
-
end
|
26
|
-
alias_method :__name__, :name
|
27
|
-
|
28
|
-
def micron_method=(method)
|
29
|
-
@micron_method = method
|
30
|
-
end
|
31
|
-
|
32
|
-
def passed?
|
33
|
-
@micron_method.passed?
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.parallelize_me!
|
37
|
-
# noop
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
2
|
+
# for backwards compat with older micron
|
3
|
+
version = "4"
|
4
|
+
begin
|
5
|
+
require "minitest"
|
6
|
+
version = Minitest::VERSION[0]
|
7
|
+
rescue LoadError
|
43
8
|
end
|
44
9
|
|
45
|
-
|
10
|
+
if version == "4" then
|
11
|
+
require "micron/compat/minitest47"
|
12
|
+
elsif version == "5"
|
13
|
+
require "micron/compat/minitest5"
|
14
|
+
end
|
data/lib/micron/proc_runner.rb
CHANGED
@@ -7,8 +7,8 @@ require "micron/test_case/teardown_coverage"
|
|
7
7
|
module Micron
|
8
8
|
class ProcRunner < Runner
|
9
9
|
|
10
|
-
def initialize(files=nil, reporters=nil)
|
11
|
-
super(files, reporters)
|
10
|
+
def initialize(files=nil, method_patterns=nil, reporters=nil)
|
11
|
+
super(files, method_patterns, reporters)
|
12
12
|
end
|
13
13
|
|
14
14
|
def run
|
@@ -37,9 +37,9 @@ module Micron
|
|
37
37
|
while !f.eof
|
38
38
|
clazz = Marshal.load(f) # read Clazz from child via file
|
39
39
|
if clazz.kind_of? Exception then
|
40
|
-
puts "Error loading test file: #{file}"
|
41
|
-
puts clazz
|
42
|
-
puts clazz.backtrace
|
40
|
+
STDERR.puts "Error loading test file: #{file}"
|
41
|
+
STDERR.puts clazz
|
42
|
+
STDERR.puts clazz.backtrace
|
43
43
|
exit 1
|
44
44
|
end
|
45
45
|
|
data/lib/micron/reporter.rb
CHANGED
@@ -11,9 +11,18 @@ module Micron
|
|
11
11
|
def start_class(clazz)
|
12
12
|
end
|
13
13
|
|
14
|
+
def before_class_error(ex)
|
15
|
+
end
|
16
|
+
|
17
|
+
def start_method(method)
|
18
|
+
end
|
19
|
+
|
14
20
|
def end_method(method)
|
15
21
|
end
|
16
22
|
|
23
|
+
def after_class_error(ex)
|
24
|
+
end
|
25
|
+
|
17
26
|
def end_class(clazz)
|
18
27
|
end
|
19
28
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
require "
|
2
|
+
require "ansi"
|
3
3
|
|
4
4
|
module Micron
|
5
5
|
class Reporter
|
@@ -19,6 +19,20 @@ module Micron
|
|
19
19
|
puts clazz.name
|
20
20
|
end
|
21
21
|
|
22
|
+
def before_class_error(ex)
|
23
|
+
puts
|
24
|
+
puts indent(bar(underline("Error during before_class; skipping tests")))
|
25
|
+
puts indent(bar(Micron.dump_ex(ex, true)))
|
26
|
+
puts
|
27
|
+
end
|
28
|
+
|
29
|
+
def after_class_error(ex)
|
30
|
+
puts
|
31
|
+
puts indent(bar(underline("Error during after_class")))
|
32
|
+
puts indent(bar(Micron.dump_ex(ex, true)))
|
33
|
+
puts
|
34
|
+
end
|
35
|
+
|
22
36
|
def end_method(m)
|
23
37
|
name = m.name.to_s
|
24
38
|
duration = sprintf("%0.3f", m.total_duration)
|
@@ -29,11 +43,11 @@ module Micron
|
|
29
43
|
|
30
44
|
# inject color after so we don't screw up the alignment
|
31
45
|
if m.skipped? then
|
32
|
-
str.gsub!(/#{status}$/,
|
46
|
+
str.gsub!(/#{status}$/, colorize(status, :yellow))
|
33
47
|
elsif m.passed? then
|
34
|
-
str.gsub!(/#{status}$/,
|
48
|
+
str.gsub!(/#{status}$/, colorize(status, :green))
|
35
49
|
else
|
36
|
-
str.gsub!(/#{status}$/,
|
50
|
+
str.gsub!(/#{status}$/, colorize(status, :red))
|
37
51
|
end
|
38
52
|
puts str
|
39
53
|
|
@@ -101,7 +115,7 @@ module Micron
|
|
101
115
|
real_runtime = sprintf("%0.3f", @runtime.duration)
|
102
116
|
|
103
117
|
puts
|
104
|
-
puts (
|
118
|
+
puts divider(fail > 0 ? :red : (skip > 0 ? :yellow : :green))
|
105
119
|
puts " PASS: #{pass}, FAIL: #{fail}, SKIP: #{skip}"
|
106
120
|
puts " TOTAL: #{total} with #{total_assertions} assertions in #{total_duration} seconds (wall time: #{real_runtime})"
|
107
121
|
|
@@ -116,7 +130,7 @@ module Micron
|
|
116
130
|
}
|
117
131
|
}
|
118
132
|
end
|
119
|
-
puts (
|
133
|
+
puts divider(fail > 0 ? :red : (skip > 0 ? :yellow : :green))
|
120
134
|
end
|
121
135
|
|
122
136
|
|
@@ -137,10 +151,35 @@ module Micron
|
|
137
151
|
(i + str.gsub(/\n/, "\n#{i}")).rstrip
|
138
152
|
end
|
139
153
|
|
154
|
+
def bar(str)
|
155
|
+
b = "|"
|
156
|
+
str = b + indent(str, 1)
|
157
|
+
str.gsub(/\n/, "\n#{b}")
|
158
|
+
end
|
159
|
+
|
160
|
+
# Add an underline to the given string
|
161
|
+
#
|
162
|
+
# @param [String] str string to underline
|
163
|
+
#
|
164
|
+
# @return [String] underlined string
|
140
165
|
def underline(str)
|
141
166
|
str += "\n" + "-"*str.length
|
142
167
|
end
|
143
168
|
|
169
|
+
# Draw a divider CONSOLE_WIDTH chars wide in the given color
|
170
|
+
def divider(color)
|
171
|
+
colorize(("="*CONSOLE_WIDTH), color)
|
172
|
+
end
|
173
|
+
|
174
|
+
def colorize(str, color, bold=true)
|
175
|
+
ret = ANSI.reset
|
176
|
+
ret += ANSI.bold if bold
|
177
|
+
ret += ANSI.send(color)
|
178
|
+
ret += str
|
179
|
+
ret += ANSI.reset
|
180
|
+
ret
|
181
|
+
end
|
182
|
+
|
144
183
|
end
|
145
184
|
end
|
146
185
|
end
|
data/lib/micron/runner.rb
CHANGED
@@ -24,12 +24,13 @@ module Micron
|
|
24
24
|
NoMemoryError, SignalException, Interrupt, SystemExit
|
25
25
|
]
|
26
26
|
|
27
|
-
attr_reader :results
|
27
|
+
attr_reader :results, :reporters, :files
|
28
28
|
|
29
|
-
def initialize(files, reporters)
|
30
|
-
@files
|
31
|
-
@
|
32
|
-
@reporters
|
29
|
+
def initialize(files, method_patterns, reporters)
|
30
|
+
@files = files
|
31
|
+
@method_patterns = method_patterns || []
|
32
|
+
@reporters = reporters || []
|
33
|
+
@results = []
|
33
34
|
|
34
35
|
@mutex = Mutex.new
|
35
36
|
|
@@ -46,7 +47,7 @@ module Micron
|
|
46
47
|
|
47
48
|
@files.each do |file|
|
48
49
|
|
49
|
-
test_file = TestFile.new(file)
|
50
|
+
test_file = TestFile.new(file, @method_patterns)
|
50
51
|
report(:start_file, test_file)
|
51
52
|
|
52
53
|
begin
|
@@ -58,9 +59,9 @@ module Micron
|
|
58
59
|
|
59
60
|
results.each do |clazz|
|
60
61
|
if clazz.kind_of? Exception then
|
61
|
-
puts "Error loading test file: #{file}"
|
62
|
-
puts clazz
|
63
|
-
puts clazz.backtrace
|
62
|
+
STDERR.puts "Error loading test file: #{file}"
|
63
|
+
STDERR.puts clazz
|
64
|
+
STDERR.puts clazz.backtrace
|
64
65
|
exit 1
|
65
66
|
end
|
66
67
|
|
@@ -25,7 +25,7 @@ module Micron
|
|
25
25
|
end
|
26
26
|
|
27
27
|
# make sure we didn't remove everything - if we did, the error was in our code
|
28
|
-
new_bt = bt.reject { |line| line =~ %r{(bin|lib)/micron} } if new_bt.empty?
|
28
|
+
new_bt = bt.reject { |line| line =~ %r{(bin|lib)/(micron|zeus|spork)} } if new_bt.empty?
|
29
29
|
new_bt = bt.dup if new_bt.empty?
|
30
30
|
else
|
31
31
|
new_bt = bt.dup
|
data/lib/micron/runner/clazz.rb
CHANGED
@@ -7,10 +7,10 @@ module Micron
|
|
7
7
|
|
8
8
|
attr_reader :name, :methods
|
9
9
|
|
10
|
-
def initialize(clazz, file)
|
10
|
+
def initialize(clazz, file, method_patterns)
|
11
11
|
@name = clazz.to_s
|
12
12
|
@file = file
|
13
|
-
@methods = test_methods.map { |m| Method.new(self, m) }
|
13
|
+
@methods = test_methods(method_patterns).map { |m| Method.new(self, m) }
|
14
14
|
end
|
15
15
|
|
16
16
|
# Create a new instance of the Class represented by this object
|
@@ -20,6 +20,7 @@ module Micron
|
|
20
20
|
|
21
21
|
def run
|
22
22
|
methods.each do |method|
|
23
|
+
Micron.runner.report(:start_method, method)
|
23
24
|
method.run
|
24
25
|
Micron.runner.report(:end_method, method)
|
25
26
|
end
|
@@ -28,12 +29,33 @@ module Micron
|
|
28
29
|
|
29
30
|
private
|
30
31
|
|
31
|
-
|
32
|
-
|
32
|
+
# Get all test methods in the TestCase, optionally matching the given
|
33
|
+
# patterns
|
34
|
+
#
|
35
|
+
# @param [Array<String>] patterns list of patterns to filter by
|
36
|
+
#
|
37
|
+
# @return [Array<Symbol>] methods
|
38
|
+
def test_methods(patterns=[])
|
39
|
+
return @test_methods if !@test_methods.nil?
|
40
|
+
|
41
|
+
@test_methods = create.public_methods.find_all { |m|
|
33
42
|
m.to_s =~ /^test_/
|
34
43
|
}
|
44
|
+
|
45
|
+
if !(patterns.nil? or patterns.empty?) then
|
46
|
+
# filter
|
47
|
+
@test_methods.reject!{ |m|
|
48
|
+
patterns.find{ |t| m.to_s.include?(t.to_s) }.nil?
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
@test_methods
|
35
53
|
end
|
36
54
|
|
55
|
+
# Convert the @name to a Constant
|
56
|
+
#
|
57
|
+
# Ruby 2.0+ correctly handles module namespaces while older versions do
|
58
|
+
# not. See clazz19.rb for the workaround (included at bottom).
|
37
59
|
def name_to_const
|
38
60
|
Module.const_get(name)
|
39
61
|
end
|
@@ -163,6 +163,9 @@ module Micron
|
|
163
163
|
# Cleanup all FDs inherited from the parent. We don't need them and we
|
164
164
|
# may throw errors if they are left open. 8192 should be high enough.
|
165
165
|
def clean_parent_file_descriptors
|
166
|
+
ObjectSpace.each_object(File) {|f| f.close unless f.closed? rescue nil}
|
167
|
+
return
|
168
|
+
|
166
169
|
# Don't clean $stdin, $stdout, $stderr (0-2) or our own pipes
|
167
170
|
keep = [ @child_write.to_i, @out.last.to_i, @err.last.to_i ]
|
168
171
|
keep += @liveness_checker.fds if @liveness_checker
|
data/lib/micron/runner/method.rb
CHANGED
@@ -39,13 +39,18 @@ module Micron
|
|
39
39
|
|
40
40
|
time(:setup) { setup(t) }
|
41
41
|
|
42
|
-
|
42
|
+
# run actual test method and measure runtime
|
43
|
+
@runtime = Hitimes::Interval.now
|
44
|
+
t.send(name)
|
45
|
+
@durations[:runtime] = @runtime.stop
|
43
46
|
self.passed = true
|
44
47
|
|
45
48
|
rescue *PASSTHROUGH_EXCEPTIONS
|
49
|
+
@durations[:runtime] = @runtime.stop if @runtime
|
46
50
|
raise
|
47
51
|
|
48
52
|
rescue Exception => e
|
53
|
+
@durations[:runtime] = @runtime.stop if @runtime
|
49
54
|
self.passed = false
|
50
55
|
self.ex = ExceptionInfo.new(e)
|
51
56
|
|
@@ -54,6 +59,7 @@ module Micron
|
|
54
59
|
time(:teardown) {
|
55
60
|
teardown(t) if not t.nil?
|
56
61
|
}
|
62
|
+
@runtime = nil
|
57
63
|
end
|
58
64
|
end
|
59
65
|
|
data/lib/micron/runner/shim.rb
CHANGED
@@ -3,8 +3,9 @@ module Micron
|
|
3
3
|
class Runner
|
4
4
|
class TestFile
|
5
5
|
|
6
|
-
def initialize(filename)
|
7
|
-
@filename
|
6
|
+
def initialize(filename, method_patterns)
|
7
|
+
@filename = filename
|
8
|
+
@method_patterns = method_patterns
|
8
9
|
end
|
9
10
|
|
10
11
|
# Load the test file
|
@@ -40,14 +41,30 @@ module Micron
|
|
40
41
|
results = []
|
41
42
|
test_clazz = TestCase.subclasses.last
|
42
43
|
|
44
|
+
# run before_class
|
43
45
|
begin
|
44
|
-
|
46
|
+
test_clazz.before_class
|
47
|
+
rescue Exception => ex
|
48
|
+
# skip rest of class on error
|
49
|
+
return skip_all_tests(test_clazz, ex)
|
50
|
+
end
|
51
|
+
|
52
|
+
begin
|
53
|
+
clazz = run_clazz.new(test_clazz, @filename, @method_patterns)
|
45
54
|
|
46
55
|
Micron.runner.report(:start_class, clazz)
|
47
56
|
if !clazz.methods.empty? then
|
48
57
|
clazz.run
|
49
58
|
results << clazz
|
50
59
|
end
|
60
|
+
|
61
|
+
# run after_class
|
62
|
+
begin
|
63
|
+
test_clazz.after_class
|
64
|
+
rescue Exception => ex
|
65
|
+
Micron.runner.report(:after_class_error, ex)
|
66
|
+
end
|
67
|
+
|
51
68
|
Micron.runner.report(:end_class, clazz)
|
52
69
|
|
53
70
|
rescue Exception => ex
|
@@ -74,6 +91,31 @@ module Micron
|
|
74
91
|
return method
|
75
92
|
end
|
76
93
|
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
# Mark all tests as skipped due to some error
|
98
|
+
def skip_all_tests(test_clazz, ex)
|
99
|
+
results = []
|
100
|
+
clazz = Clazz.new(test_clazz, @filename, @method_patterns)
|
101
|
+
|
102
|
+
Micron.runner.report(:start_class, clazz)
|
103
|
+
Micron.runner.report(:before_class_error, ex)
|
104
|
+
|
105
|
+
if !clazz.methods.empty? then
|
106
|
+
clazz.methods.each do |method|
|
107
|
+
Micron.runner.report(:start_method, method)
|
108
|
+
method.ex = Micron::Skip.new("before_class failed")
|
109
|
+
Micron.runner.report(:end_method, method)
|
110
|
+
end
|
111
|
+
results << clazz
|
112
|
+
end
|
113
|
+
|
114
|
+
Micron.runner.report(:end_class, clazz)
|
115
|
+
|
116
|
+
results
|
117
|
+
end
|
118
|
+
|
77
119
|
end # TestFile
|
78
120
|
end # Runner
|
79
121
|
end # Micron
|
data/lib/micron/test_case.rb
CHANGED
@@ -9,13 +9,22 @@ module Micron
|
|
9
9
|
include LifecycleHooks
|
10
10
|
include Assertions
|
11
11
|
|
12
|
+
# Run before all test methods in the class
|
13
|
+
def self.before_class
|
14
|
+
end
|
15
|
+
|
16
|
+
# Run after all test methods in the class
|
17
|
+
def self.after_class
|
18
|
+
end
|
19
|
+
|
20
|
+
# Run before each test method
|
12
21
|
def setup
|
13
22
|
end
|
14
23
|
|
24
|
+
# Run after each test method
|
15
25
|
def teardown
|
16
26
|
end
|
17
27
|
|
18
|
-
|
19
28
|
# retrieve all loaded subclasses of this class
|
20
29
|
#
|
21
30
|
# @return [Array<Class>] List of subclasses
|
@@ -2,17 +2,7 @@
|
|
2
2
|
module Micron
|
3
3
|
class TestCase
|
4
4
|
module LifecycleHooks
|
5
|
-
##
|
6
|
-
# Runs before every test, after setup. This hook is meant for
|
7
|
-
# libraries to extend minitest. It is not meant to be used by
|
8
|
-
# test developers.
|
9
|
-
#
|
10
|
-
# See #before_setup for an example.
|
11
5
|
|
12
|
-
def after_setup
|
13
|
-
end
|
14
|
-
|
15
|
-
##
|
16
6
|
# Runs before every test, before setup. This hook is meant for
|
17
7
|
# libraries to extend minitest. It is not meant to be used by
|
18
8
|
# test developers.
|
@@ -44,27 +34,30 @@ module Micron
|
|
44
34
|
# class MiniTest::Unit::TestCase
|
45
35
|
# include MyMinitestPlugin
|
46
36
|
# end
|
47
|
-
|
48
37
|
def before_setup
|
49
38
|
end
|
50
39
|
|
51
|
-
|
52
|
-
# Runs after every test, before teardown. This hook is meant for
|
40
|
+
# Runs before every test, after setup. This hook is meant for
|
53
41
|
# libraries to extend minitest. It is not meant to be used by
|
54
42
|
# test developers.
|
55
43
|
#
|
56
44
|
# See #before_setup for an example.
|
45
|
+
def after_setup
|
46
|
+
end
|
57
47
|
|
48
|
+
# Runs after every test, before teardown. This hook is meant for
|
49
|
+
# libraries to extend minitest. It is not meant to be used by
|
50
|
+
# test developers.
|
51
|
+
#
|
52
|
+
# See #before_setup for an example.
|
58
53
|
def before_teardown
|
59
54
|
end
|
60
55
|
|
61
|
-
##
|
62
56
|
# Runs after every test, after teardown. This hook is meant for
|
63
57
|
# libraries to extend minitest. It is not meant to be used by
|
64
58
|
# test developers.
|
65
59
|
#
|
66
60
|
# See #before_setup for an example.
|
67
|
-
|
68
61
|
def after_teardown
|
69
62
|
end
|
70
63
|
|
@@ -1,6 +1,23 @@
|
|
1
1
|
|
2
2
|
require "logging"
|
3
3
|
|
4
|
+
# Helper for redirecting 'logging' messages to STDOUT when running tests
|
5
|
+
#
|
6
|
+
# You can redirect all logs (root logger) with the following:
|
7
|
+
#
|
8
|
+
# class TestCase < ActiveSupport::TestCase
|
9
|
+
# include Micron::TestCase::RedirLogging
|
10
|
+
# self.redir_logger = Logging.logger.root
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# Or only a specific hierarchy like so:
|
14
|
+
#
|
15
|
+
# class TestCase < ActiveSupport::TestCase
|
16
|
+
# include Micron::TestCase::RedirLogging
|
17
|
+
# self.redir_logger = Logging.logger[Bixby]
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
|
4
21
|
module Micron
|
5
22
|
class TestCase
|
6
23
|
module RedirLogging
|
@@ -41,7 +58,10 @@ module Micron
|
|
41
58
|
end
|
42
59
|
|
43
60
|
module ClassMethods
|
44
|
-
|
61
|
+
|
62
|
+
def redir_logger=(logger)
|
63
|
+
@redir_logger = logger
|
64
|
+
end
|
45
65
|
|
46
66
|
# Search up the TestCase hierarchy for a redir_logger
|
47
67
|
def redir_logger
|
data/micron.gemspec
CHANGED
@@ -2,15 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: micron 0.5.
|
5
|
+
# stub: micron 0.5.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "micron"
|
9
|
-
s.version = "0.5.
|
9
|
+
s.version = "0.5.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
12
13
|
s.authors = ["Chetan Sarva"]
|
13
|
-
s.date = "
|
14
|
+
s.date = "2014-04-22"
|
14
15
|
s.description = "An extremely minimal unit test library for Ruby"
|
15
16
|
s.email = "chetan@pixelcop.net"
|
16
17
|
s.executables = ["micron"]
|
@@ -24,6 +25,8 @@ Gem::Specification.new do |s|
|
|
24
25
|
"lib/micron/app.rb",
|
25
26
|
"lib/micron/app/options.rb",
|
26
27
|
"lib/micron/assertion.rb",
|
28
|
+
"lib/micron/compat/minitest47.rb",
|
29
|
+
"lib/micron/compat/minitest5.rb",
|
27
30
|
"lib/micron/fork_runner.rb",
|
28
31
|
"lib/micron/minitest.rb",
|
29
32
|
"lib/micron/proc_runner.rb",
|
@@ -60,8 +63,7 @@ Gem::Specification.new do |s|
|
|
60
63
|
]
|
61
64
|
s.homepage = "http://github.com/chetan/micron"
|
62
65
|
s.licenses = ["MIT"]
|
63
|
-
s.
|
64
|
-
s.rubygems_version = "2.1.5"
|
66
|
+
s.rubygems_version = "2.2.2"
|
65
67
|
s.summary = "Minimal unit tests for Ruby"
|
66
68
|
|
67
69
|
if s.respond_to? :specification_version then
|
@@ -70,28 +72,25 @@ Gem::Specification.new do |s|
|
|
70
72
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
71
73
|
s.add_runtime_dependency(%q<easycov>, [">= 0"])
|
72
74
|
s.add_runtime_dependency(%q<hitimes>, [">= 0"])
|
73
|
-
s.add_runtime_dependency(%q<
|
75
|
+
s.add_runtime_dependency(%q<ansi>, [">= 0"])
|
74
76
|
s.add_development_dependency(%q<yard>, ["~> 0.8"])
|
75
77
|
s.add_development_dependency(%q<bundler>, ["~> 1.1"])
|
76
78
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
77
|
-
s.add_development_dependency(%q<minitest>, ["~> 4.0"])
|
78
79
|
else
|
79
80
|
s.add_dependency(%q<easycov>, [">= 0"])
|
80
81
|
s.add_dependency(%q<hitimes>, [">= 0"])
|
81
|
-
s.add_dependency(%q<
|
82
|
+
s.add_dependency(%q<ansi>, [">= 0"])
|
82
83
|
s.add_dependency(%q<yard>, ["~> 0.8"])
|
83
84
|
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
84
85
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
85
|
-
s.add_dependency(%q<minitest>, ["~> 4.0"])
|
86
86
|
end
|
87
87
|
else
|
88
88
|
s.add_dependency(%q<easycov>, [">= 0"])
|
89
89
|
s.add_dependency(%q<hitimes>, [">= 0"])
|
90
|
-
s.add_dependency(%q<
|
90
|
+
s.add_dependency(%q<ansi>, [">= 0"])
|
91
91
|
s.add_dependency(%q<yard>, ["~> 0.8"])
|
92
92
|
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
93
93
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
94
|
-
s.add_dependency(%q<minitest>, ["~> 4.0"])
|
95
94
|
end
|
96
95
|
end
|
97
96
|
|
metadata
CHANGED
@@ -1,113 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: micron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chetan Sarva
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: easycov
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: hitimes
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: ansi
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: yard
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0.8'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.8'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.1'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.1'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: jeweler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: minitest
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ~>
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '4.0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ~>
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '4.0'
|
111
97
|
description: An extremely minimal unit test library for Ruby
|
112
98
|
email: chetan@pixelcop.net
|
113
99
|
executables:
|
@@ -124,6 +110,8 @@ files:
|
|
124
110
|
- lib/micron/app.rb
|
125
111
|
- lib/micron/app/options.rb
|
126
112
|
- lib/micron/assertion.rb
|
113
|
+
- lib/micron/compat/minitest47.rb
|
114
|
+
- lib/micron/compat/minitest5.rb
|
127
115
|
- lib/micron/fork_runner.rb
|
128
116
|
- lib/micron/minitest.rb
|
129
117
|
- lib/micron/proc_runner.rb
|
@@ -167,17 +155,17 @@ require_paths:
|
|
167
155
|
- lib
|
168
156
|
required_ruby_version: !ruby/object:Gem::Requirement
|
169
157
|
requirements:
|
170
|
-
- -
|
158
|
+
- - ">="
|
171
159
|
- !ruby/object:Gem::Version
|
172
160
|
version: '0'
|
173
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
162
|
requirements:
|
175
|
-
- -
|
163
|
+
- - ">="
|
176
164
|
- !ruby/object:Gem::Version
|
177
165
|
version: '0'
|
178
166
|
requirements: []
|
179
167
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.
|
168
|
+
rubygems_version: 2.2.2
|
181
169
|
signing_key:
|
182
170
|
specification_version: 4
|
183
171
|
summary: Minimal unit tests for Ruby
|