minitest-ci 1.0.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.autotest CHANGED
@@ -1,26 +1,11 @@
1
1
  # -*- ruby -*-
2
2
 
3
3
  require 'autotest/restart'
4
+ require 'autotest/isolate'
4
5
 
5
6
  Autotest.add_hook :initialize do |at|
6
7
  at.add_exception 'test/reports'
7
- # at.extra_files << "../some/external/dependency.rb"
8
- #
9
- # at.libs << ":../some/external"
10
- #
11
- # at.add_exception 'vendor'
12
- #
13
- # at.add_mapping(/dependency.rb/) do |f, _|
14
- # at.files_matching(/test_.*rb$/)
15
- # end
16
- #
17
- # %w(TestA TestB).each do |klass|
18
- # at.extra_class_map[klass] = "test/test_misc.rb"
19
- # end
20
8
  false
21
9
  end
22
10
 
23
- # Autotest.add_hook :run_command do |at|
24
- # system "rake build"
25
- # end
26
11
  # vim: syntax=ruby
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 2.0.0 / 2012-04-15
2
+ * 1 major enhancement
3
+
4
+ * Updates to use #record method from newer MiniTest. Removes copied code, yay!
5
+
1
6
  === 1.0.0 / 2011-09-23
2
7
 
3
8
  * 1 major enhancement
data/Manifest.txt CHANGED
@@ -1,5 +1,4 @@
1
1
  .autotest
2
- .gitignore
3
2
  History.txt
4
3
  Manifest.txt
5
4
  README.txt
data/README.txt CHANGED
@@ -5,11 +5,12 @@
5
5
  == DESCRIPTION:
6
6
 
7
7
  CI reporter plugin for MiniTest
8
+
8
9
  This gem was made possible by ATT Interactive.
9
10
 
10
11
  == FEATURES/PROBLEMS:
11
12
 
12
- * Monkeypatches MiniTest::Unit#_run_suite so I have to fix the version of MiniTest I support.
13
+ * Uses MiniTest::Unit#record which is only available since version 2.12.0
13
14
 
14
15
  == SYNOPSIS:
15
16
 
data/Rakefile CHANGED
@@ -4,13 +4,14 @@ require 'rubygems'
4
4
  require 'hoe'
5
5
 
6
6
  Hoe.plugin :isolate
7
+ Hoe.plugin :git
7
8
 
8
9
  Hoe.spec 'minitest-ci' do
9
10
  developer 'Brian Henderson', 'bhenderson@attinteractive.com'
10
11
 
11
12
  self.testlib = :none
12
13
 
13
- extra_deps << ['minitest', '2.6.0']
14
+ extra_deps << ['minitest', '~> 2.12.0']
14
15
  extra_dev_deps << ['nokogiri', '~> 1.5.0']
15
16
  extra_dev_deps << ['rdoc', '>= 2.4.2']
16
17
  end
data/lib/minitest/ci.rb CHANGED
@@ -1,12 +1,7 @@
1
- begin
2
- gem 'minitest', '2.6.0'
3
- require "minitest/unit"
4
- rescue Gem::LoadError => e
5
- msg = [
6
- 'minitest version 2.6.0 required',
7
- 'try: gem install minitest -v 2.6.0'
8
- ]
9
- raise e.exception msg.join("\n")
1
+ require 'minitest/unit'
2
+ #unless MiniTest::Unit::VERSION >= '2.12.0'
3
+ unless MiniTest::Unit.public_method_defined? :record
4
+ abort 'you are running an unsupported version of MiniTest. try upgrading.'
10
5
  end
11
6
 
12
7
  require 'fileutils'
@@ -14,92 +9,49 @@ require 'cgi'
14
9
 
15
10
  module MiniTest
16
11
  module Ci
17
- ###
18
- # copied
19
- file = if RUBY_VERSION =~ /^1\.9/ then # bt's expanded, but __FILE__ isn't :(
20
- File.expand_path __FILE__
21
- elsif __FILE__ =~ /^[^\.]/ then # assume both relative
22
- require 'pathname'
23
- pwd = Pathname.new Dir.pwd
24
- pn = Pathname.new File.expand_path(__FILE__)
25
- pn = File.join(".", pn.relative_path_from(pwd)) unless pn.relative?
26
- pn.to_s
27
- else # assume both are expanded
28
- __FILE__
29
- end
30
- # end of copy
31
- ###
32
- CI_MINI_DIR = File.dirname(File.dirname(file))
33
-
34
- VERSION = '1.0.4'
35
-
36
- @test_dir = nil #'test/reports'
37
- @error = nil
38
- @munit = nil
12
+
13
+ VERSION = '2.0.0'
14
+
15
+ @report_dir = nil
39
16
  @suites = Hash.new {|h,k| h[k] = []}
40
17
 
41
18
  class << self
42
- attr_accessor :test_dir
43
- end
44
-
45
- def add_error e
46
- @error = e
19
+ # Accessor method to change the report dir if you don't like the
20
+ # defaults.
21
+ attr_accessor :report_dir
47
22
  end
48
23
 
49
- def push suite, method, time, num
50
- a = [method, time, num]
51
- if @error
52
- a << @error
53
- @error = nil
54
- end
55
- @suites[suite] << a
24
+ def push suite, method, num_assertions, time, error
25
+ @suites[suite] << [method, num_assertions, time, error]
56
26
  end
57
27
 
58
- def finish
59
- @munit.puts
60
- @munit.puts 'generating ci files'
28
+ def finish io
29
+ io.puts
30
+ io.puts 'generating ci files'
61
31
 
62
32
  clean
63
33
 
64
- Dir.chdir @test_dir do
34
+ Dir.chdir report_dir do
65
35
  @suites.each do |name, suite|
66
36
  generate_suite name, suite
67
37
  end
68
38
  end
69
39
  end
70
40
 
71
- def munit= m
72
- @munit = m
73
- end
74
-
75
41
  private
76
42
 
77
43
  def clean
78
- FileUtils.rm_rf @test_dir
79
- FileUtils.mkdir_p @test_dir
44
+ FileUtils.rm_rf report_dir
45
+ FileUtils.mkdir_p report_dir
80
46
  end
81
47
 
82
48
  def escape o
83
49
  CGI.escapeHTML(o.to_s)
84
50
  end
85
51
 
86
- # use original as well as filtering this file.
87
- def filter_backtrace bt
88
- bt = MiniTest::filter_backtrace bt
89
- orig_mini_dir = MiniTest::MINI_DIR
90
-
91
- orig_verbose, $VERBOSE = $VERBOSE, nil
92
-
93
- MiniTest.const_set :MINI_DIR, CI_MINI_DIR
94
- MiniTest::filter_backtrace bt
95
- ensure
96
- MiniTest.const_set :MINI_DIR, orig_mini_dir
97
- $VERBOSE = orig_verbose
98
- end
99
-
100
52
  def generate_suite name, suite
101
53
  total_time, assertions, errors, failures, skips = 0, 0, 0, 0, 0
102
- suite.each do |_, t, a, e|
54
+ suite.each do |_, a, t, e|
103
55
  total_time += t
104
56
  assertions += a
105
57
  case e
@@ -116,12 +68,12 @@ module MiniTest
116
68
  f.puts '<?xml version="1.0" encoding="UTF-8"?>'
117
69
  f.puts "<testsuite time='#{"%6f" % total_time}' skipped='#{skips}' failures='#{failures}' errors='#{errors}' name='#{name}' assertions='#{assertions}' tests='#{suite.count}'>"
118
70
 
119
- suite.each do |method, time, asserts, error|
71
+ suite.each do |method, asserts, time, error|
120
72
  f.puts " <testcase time='#{"%6f" % time}' name='#{method}' assertions='#{asserts}'>"
121
73
  if error
122
- bt = filter_backtrace(error.backtrace).join "\n"
74
+ bt = MiniTest::filter_backtrace error.backtrace
123
75
  f.write " <#{type error} type='#{escape error.class}' message=#{escape( error.message ).inspect}>"
124
- f.puts escape bt
76
+ f.puts escape bt.join "\n"
125
77
  f.puts " </#{type error}>"
126
78
  end
127
79
  f.puts " </testcase>"
@@ -145,53 +97,19 @@ module MiniTest
145
97
 
146
98
  class CiUnit < Unit
147
99
 
148
- # copied out of MiniTest::Unit
149
- def _run_suite suite, type
150
- # added this line
151
- MiniTest::Ci.munit = self
152
-
153
- header = "#{type}_suite_header"
154
- puts send(header, suite) if respond_to? header
155
-
156
- filter = options[:filter] || '/./'
157
- filter = Regexp.new $1 if filter =~ /\/(.*)\//
158
-
159
- assertions = suite.send("#{type}_methods").grep(filter).map { |method|
160
- inst = suite.new method
161
- inst._assertions = 0
162
-
163
- print "#{suite}##{method} = " if @verbose
164
-
165
- @start_time = Time.now
166
- result = inst.run self
167
- time = Time.now - @start_time
168
-
169
- print "%.2f s = " % time if @verbose
170
- print result
171
- puts if @verbose
172
-
173
- # added this line
174
- MiniTest::Ci.push suite, method, time, inst._assertions
175
-
176
- inst._assertions
177
- }
178
-
179
- return assertions.size, assertions.inject(0) { |sum, n| sum + n }
180
- end
181
-
182
- def puke klass, meth, e
183
- MiniTest::Ci.add_error e
100
+ def record suite, method, assertions, time, error
101
+ MiniTest::Ci.push suite, method, assertions, time, error
184
102
  super
185
103
  end
186
104
 
187
105
  def status io = self.output
188
106
  super
189
- MiniTest::Ci.finish
107
+ MiniTest::Ci.finish io
190
108
  end
191
109
 
192
110
  end
193
111
  end
194
112
 
195
113
  # set defaults
196
- MiniTest::Ci.test_dir = 'test/reports'
114
+ MiniTest::Ci.report_dir = 'test/reports'
197
115
  MiniTest::Unit.runner = MiniTest::CiUnit.new
@@ -41,23 +41,22 @@ class TestMinitest::TestCi < MiniTest::Unit::TestCase
41
41
  old_out, MiniTest::Unit.output = MiniTest::Unit.output, @output
42
42
  begin
43
43
  runner = MiniTest::CiUnit.new
44
- MiniTest::Ci.munit = runner
45
44
 
46
45
  runner._run_suite MockTestSuite, :test
47
46
 
48
47
  @@test_suites.delete MockTestSuite
49
- MiniTest::Ci.finish
48
+ MiniTest::Ci.finish runner.output
50
49
  ensure
51
50
  MiniTest::Unit.output = old_out
52
51
  end
52
+ MiniTest::Unit.runner = nil # reset
53
53
 
54
54
  def self.output
55
55
  @output
56
56
  end
57
57
 
58
58
  def setup
59
- file = "#{MiniTest::Ci.test_dir}/TEST-MockTestSuite.xml"
60
- assert File.exists?( file ), 'expected xml file to exists'
59
+ file = "#{MiniTest::Ci.report_dir}/TEST-MockTestSuite.xml"
61
60
  @file = File.read file
62
61
  @doc = Nokogiri.parse @file
63
62
  @doc = @doc.at_xpath('/testsuite')
@@ -114,12 +113,8 @@ class TestMinitest::TestCi < MiniTest::Unit::TestCase
114
113
  assert_match( /generating ci files/, self.class.output.read )
115
114
  end
116
115
 
117
- def test_filter_backtrace
118
- bt = begin; raise; rescue => e; e.backtrace; end
119
-
120
- bt = MiniTest::Ci.send :filter_backtrace, bt
121
-
122
- assert_equal 1, bt.size
123
- assert_match( /#{__FILE__}/, bt.first )
116
+ def test_filtering_backtraces
117
+ error = @doc.at_xpath('/testsuite/testcase[@name="test_raise_error"]')
118
+ refute_match /lib\/minitest/, error.inner_text
124
119
  end
125
120
  end
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-ci
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 15
4
5
  prerelease:
5
- version: 1.0.4
6
+ segments:
7
+ - 2
8
+ - 0
9
+ - 0
10
+ version: 2.0.0
6
11
  platform: ruby
7
12
  authors:
8
13
  - Brian Henderson
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-10-17 00:00:00 Z
18
+ date: 2012-04-15 00:00:00 Z
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: minitest
@@ -18,31 +23,45 @@ dependencies:
18
23
  requirement: &id001 !ruby/object:Gem::Requirement
19
24
  none: false
20
25
  requirements:
21
- - - "="
26
+ - - ~>
22
27
  - !ruby/object:Gem::Version
23
- version: 2.6.0
28
+ hash: 63
29
+ segments:
30
+ - 2
31
+ - 12
32
+ - 0
33
+ version: 2.12.0
24
34
  type: :runtime
25
35
  version_requirements: *id001
26
36
  - !ruby/object:Gem::Dependency
27
- name: nokogiri
37
+ name: rdoc
28
38
  prerelease: false
29
39
  requirement: &id002 !ruby/object:Gem::Requirement
30
40
  none: false
31
41
  requirements:
32
42
  - - ~>
33
43
  - !ruby/object:Gem::Version
34
- version: 1.5.0
44
+ hash: 19
45
+ segments:
46
+ - 3
47
+ - 10
48
+ version: "3.10"
35
49
  type: :development
36
50
  version_requirements: *id002
37
51
  - !ruby/object:Gem::Dependency
38
- name: rdoc
52
+ name: nokogiri
39
53
  prerelease: false
40
54
  requirement: &id003 !ruby/object:Gem::Requirement
41
55
  none: false
42
56
  requirements:
43
- - - ">="
57
+ - - ~>
44
58
  - !ruby/object:Gem::Version
45
- version: 2.4.2
59
+ hash: 3
60
+ segments:
61
+ - 1
62
+ - 5
63
+ - 0
64
+ version: 1.5.0
46
65
  type: :development
47
66
  version_requirements: *id003
48
67
  - !ruby/object:Gem::Dependency
@@ -53,11 +72,16 @@ dependencies:
53
72
  requirements:
54
73
  - - ~>
55
74
  - !ruby/object:Gem::Version
56
- version: "2.12"
75
+ hash: 7
76
+ segments:
77
+ - 3
78
+ - 0
79
+ version: "3.0"
57
80
  type: :development
58
81
  version_requirements: *id004
59
82
  description: |-
60
83
  CI reporter plugin for MiniTest
84
+
61
85
  This gem was made possible by ATT Interactive.
62
86
  email:
63
87
  - bhenderson@attinteractive.com
@@ -71,7 +95,6 @@ extra_rdoc_files:
71
95
  - README.txt
72
96
  files:
73
97
  - .autotest
74
- - .gitignore
75
98
  - History.txt
76
99
  - Manifest.txt
77
100
  - README.txt
@@ -93,19 +116,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
116
  requirements:
94
117
  - - ">="
95
118
  - !ruby/object:Gem::Version
119
+ hash: 3
120
+ segments:
121
+ - 0
96
122
  version: "0"
97
123
  required_rubygems_version: !ruby/object:Gem::Requirement
98
124
  none: false
99
125
  requirements:
100
126
  - - ">="
101
127
  - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
102
131
  version: "0"
103
132
  requirements: []
104
133
 
105
134
  rubyforge_project: minitest-ci
106
- rubygems_version: 1.8.11
135
+ rubygems_version: 1.8.20
107
136
  signing_key:
108
137
  specification_version: 3
109
- summary: CI reporter plugin for MiniTest This gem was made possible by ATT Interactive.
138
+ summary: CI reporter plugin for MiniTest This gem was made possible by ATT Interactive.
110
139
  test_files:
111
140
  - test/test_minitest_ci.rb
data/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- *.swp
2
- tmp
3
- test/reports