rspec-html-formatter 0.0.0 → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
- ---
2
- SHA512:
3
- data.tar.gz: 0dd65d1010a89ba0f5ebb54f14b40099310af6bf3be752aaa93173675f5e32988c698be05af7e0d49c38140649a44c0d35b07e20295b5ceb1c24c3318fa61f21
4
- metadata.gz: d5060bf391258f7f076e66fe1a115904591ce627b10982b5dfe264fe0ebb48d4aa71a517c774630d7975a48a39cd6eaa674da0ce0e4a798dfe7004d5cb59fe5b
5
- SHA1:
6
- data.tar.gz: ff4abded4f4c8a74dfac637847b09f7b270ef9ae
7
- metadata.gz: 8c3d3802576d723af7fb84ab36f96388aec5435c
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 982bf172aa7aeaa7696664ed17e1704f81cbf94b
4
+ data.tar.gz: 01e2b555f5676e2840a0d2377c2eccd12857efd2
5
+ SHA512:
6
+ metadata.gz: 2a0cfa23f39c68fb356004edc056581750b29ba67e3c6161174fa13185959702445acef2f75213f765588d69f3806b4cfaf8f52e165bd6995331335f02b28db4
7
+ data.tar.gz: 18e1c7acbfe7ca13f34cdad6cf2e4d01574f8d956f70f55147f36f3ca3197a9d490b151bca4a25aa4ffe353c7ec547c6a54ef0836ea29291522ea4c78a6f6575
data/README.md CHANGED
@@ -4,11 +4,18 @@ rspec-html-formator
4
4
  Extended html formator for rspec. It create seperate html file for each rspec test script.
5
5
  It is useful when you have large number of rspec testcases with different owners.
6
6
 
7
+ ### install
8
+ `gem install rspec-html-formatter`
9
+
7
10
  ### how to use
8
11
  ```
9
- gem install rspec-html-formatter
10
- rspec spec/sample_spec.rb -f SplithtmlFormatter -r splithtml_formatter -r splithtml_printer
12
+ export HTML_REPORTS=/tmp/reports
13
+ rspec -f SplithtmlFormatter -r splithtml_formatter -r splithtml_printer spec/sample_spec.rb
11
14
  ```
15
+ The log files will be created into $HTML_REPORTS
16
+ If it is not set, use "`pwd`/spec/reports"
12
17
 
13
18
  ### Dependence
14
- rspec 2.14
19
+ rspec 3 since version 0.0.1
20
+
21
+ for rspec 2.14, `gem install rspec-html-formatter -v 0.0.0`
@@ -1,4 +1,4 @@
1
- require 'rspec/core/formatters/base_text_formatter'
1
+ require 'rspec/core/formatters/base_formatter'
2
2
 
3
3
  PREFIX = "spec"
4
4
 
@@ -18,10 +18,16 @@ class FileOutput
18
18
 
19
19
  end
20
20
 
21
- class SplithtmlFormatter < RSpec::Core::Formatters::BaseTextFormatter
22
-
21
+ class SplithtmlFormatter < RSpec::Core::Formatters::BaseFormatter
22
+
23
+ RSpec::Core::Formatters.register self, :start, :example_group_started, :start_dump,
24
+ :example_started, :example_passed, :example_failed,
25
+ :example_pending, :dump_summary
26
+
27
+
23
28
  def initialize(output)
24
29
  super(output)
30
+ @failed_examples = []
25
31
  @example_group_number = 0
26
32
  @example_number = 0
27
33
  @failure_number = 0
@@ -70,8 +76,8 @@ public
70
76
  super(example_count)
71
77
  end
72
78
 
73
- def example_group_started(example_group)
74
- super(example_group)
79
+ def example_group_started(notification)
80
+ super
75
81
  @start_time = Time.now().to_f()
76
82
  @example_number = 0
77
83
  @failure_number = 0
@@ -80,40 +86,38 @@ public
80
86
  @run_time = 0.0
81
87
  @example_group_red = false
82
88
  @example_group_number += 1
83
- test_file_name = File.basename(example_group.metadata[:example_group][:file_path])
84
- @printer = new_html(example_group.description.to_s)
89
+ test_file_name = File.basename(notification.group.file_path)
90
+ @printer = new_html(notification.group.description.to_s)
85
91
  @printer.print_html_start(test_file_name)
86
- @printer.print_example_group_start(example_group.description)
92
+ @printer.print_example_group_start(notification.group.description)
87
93
  @printer.flush()
88
94
  debug_print("start:" + @printer.object_id.to_s)
89
95
  end
90
96
 
91
- def example_group_finished(example_group)
92
- super(example_group)
97
+ def example_group_finished(notification)
98
+ super
93
99
  @printer.print_example_group_end()
94
- test_file_path = File.expand_path(example_group.metadata[:example_group][:file_path])
100
+ test_file_path = File.expand_path(notification.group.file_path)
95
101
  @end_time = Time.now().to_f()
96
102
  @printer.print_summary(false, @run_time, @example_number, @failure_number, @pending_number, test_file_path, @start_time, @end_time)
97
103
  @printer.flush()
98
104
  debug_print("finished:" + @printer.object_id.to_s)
99
105
  end
100
106
 
101
- def example_started(example)
102
- super(example)
107
+ def example_started(notification)
103
108
  @example_number += 1
104
109
  @printer.print_example_start()
105
110
  end
106
111
 
107
- def example_passed(example)
112
+ def example_passed(passed)
108
113
  @printer.move_progress(100)
109
- @printer.print_example_passed( example.description, example.execution_result[:run_time] )
114
+ @printer.print_example_passed( passed.example.description, passed.example.execution_result.run_time )
110
115
  @printer.flush()
111
- @run_time += example.execution_result[:run_time]
116
+ @run_time += passed.example.execution_result.run_time
112
117
  end
113
118
 
114
- def example_failed(example)
115
- super(example)
116
-
119
+ def example_failed(failure)
120
+ @failed_examples << failure.example
117
121
  unless @header_red
118
122
  @header_red = true
119
123
  @printer.make_header_red
@@ -126,43 +130,44 @@ public
126
130
 
127
131
  @printer.move_progress(100)
128
132
 
129
- exception = example.metadata[:execution_result][:exception]
133
+ example = failure.example
134
+ exception = failure.exception
130
135
  exception_details = if exception
131
136
  {
132
137
  :message => exception.message,
133
- :backtrace => format_backtrace(exception.backtrace, example).join("\n")
138
+ :backtrace => failure.formatted_backtrace.join("\n")
134
139
  }
135
140
  else
136
141
  false
137
142
  end
138
-
139
143
  extra = extra_failure_content(exception)
140
-
141
- @printer.print_example_failed(
142
- example.execution_result[:pending_fixed],
143
- example.description,
144
- example.execution_result[:run_time],
145
- @failed_examples.size,
146
- exception_details,
147
- (extra == "") ? false : extra,
148
- true
149
- )
150
-
144
+ debug_print("extra: #{extra}")
145
+ @printer.print_example_failed(
146
+ example.execution_result.pending_fixed,
147
+ example.description,
148
+ example.execution_result.run_time,
149
+ @failed_examples.size,
150
+ exception_details,
151
+ (extra == "") ? false : extra,
152
+ true
153
+ )
151
154
  @printer.flush()
152
155
  @failure_number += 1
153
- @run_time += example.execution_result[:run_time]
156
+ @run_time += example.execution_result.run_time
154
157
  end
155
158
 
156
- def example_pending(example)
159
+ def example_pending(pending)
160
+ example = pending.example
157
161
  @printer.make_header_yellow unless @header_red
158
162
  @printer.make_example_group_header_yellow(example_group_number) unless @example_group_red
159
163
  @printer.move_progress(100)
160
- @printer.print_example_pending( example.description, example.metadata[:execution_result][:pending_message] )
164
+ @printer.print_example_pending( example.description, example.execution_result.pending_message)
161
165
  @printer.flush()
162
166
  @pending_number += 1
163
- @run_time += example.execution_result[:run_time]
167
+ @run_time += example.execution_result.run_time
164
168
  end
165
169
 
170
+ # support for https://github.com/railsware/rspec-example_steps
166
171
  def example_step_started(example, type, message, options)
167
172
  example_started(example)
168
173
  end
@@ -187,7 +192,7 @@ public
187
192
 
188
193
  @printer.move_progress(100)
189
194
 
190
- exception = example.metadata[:execution_result][:exception]
195
+ exception = example.exception
191
196
  exception_details = if exception
192
197
  {
193
198
  :message => exception.message,
@@ -198,7 +203,7 @@ public
198
203
  end
199
204
 
200
205
  @printer.print_example_failed(
201
- example.execution_result[:pending_fixed],
206
+ example.execution_result.pending_fixed,
202
207
  type.to_s().upcase() + ' ' + message,
203
208
  0,
204
209
  @failed_examples.size,
@@ -220,24 +225,24 @@ public
220
225
  @pending_number += 1
221
226
  end
222
227
 
223
- def extra_failure_content(exception)
224
- require 'rspec/core/formatters/snippet_extractor'
225
- backtrace = exception.backtrace.map {|line| backtrace_line(line)}
226
- backtrace.compact!
227
- @snippet_extractor ||= RSpec::Core::Formatters::SnippetExtractor.new
228
- " <pre class=\"ruby\"><code>#{@snippet_extractor.snippet(backtrace)}</code></pre>"
228
+ def extra_failure_content(failure)
229
+ RSpec::Support.require_rspec_core "formatters/snippet_extractor"
230
+ backtrace = failure.exception.backtrace.map {|line| RSpec.configuration.backtrace_formatter.backtrace_line(line)}
231
+ backtrace.compact!
232
+ @snippet_extractor ||= RSpec::Core::Formatters::SnippetExtractor.new
233
+ " <pre class=\"ruby\"><code>#{@snippet_extractor.snippet(backtrace)}</code></pre>"
229
234
  end
230
235
 
231
- def start_dump
232
- end
236
+ #def start_dump
237
+ #end
233
238
 
234
- def dump_failures
235
- end
239
+ #def dump_failures
240
+ #end
236
241
 
237
- def dump_pending
238
- end
242
+ #def dump_pending
243
+ #end
239
244
 
240
- def dump_summary(duration, example_count, failure_count, pending_count)
241
- end
245
+ #def dump_summary(duration, example_count, failure_count, pending_count)
246
+ #end
242
247
 
243
248
  end
@@ -18,10 +18,12 @@ describe "Two failed cases test" do
18
18
 
19
19
  it "failed test1" do
20
20
  puts "this line from failed test1"
21
+ 0/0
21
22
  end
22
23
 
23
24
  it "failed test2" do
24
25
  puts "this line from failed test2"
26
+ 0/0
25
27
  end
26
28
 
27
29
  it "passed test2" do
@@ -72,6 +74,8 @@ describe "Logger test" do
72
74
  puts "this line from passed test7"
73
75
  end
74
76
 
77
+ it "pending test1"
78
+
75
79
  end
76
80
 
77
81
 
metadata CHANGED
@@ -1,58 +1,51 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rspec-html-formatter
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - chenhaiq
8
8
  - Zhang Yuan
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2014-09-16 00:00:00 Z
12
+ date: 2014-09-16 00:00:00.000000000 Z
14
13
  dependencies: []
15
-
16
- description: Extended html formator for rspec. It create seperate html file for each rspec test script.
14
+ description: Extended html formator for rspec. It create seperate html file for each
15
+ rspec test script.
17
16
  email: chocean@gmail.com
18
17
  executables: []
19
-
20
18
  extensions: []
21
-
22
19
  extra_rdoc_files: []
23
-
24
- files:
25
- - .gitignore
20
+ files:
21
+ - ".gitignore"
26
22
  - LICENSE
27
23
  - README.md
28
24
  - lib/splithtml_formatter.rb
29
25
  - lib/splithtml_printer.rb
30
26
  - spec/sample_spec.rb
31
27
  homepage: https://github.com/chenhaiq/rspec-html-formatter
32
- licenses:
28
+ licenses:
33
29
  - MIT
34
30
  metadata: {}
35
-
36
31
  post_install_message:
37
32
  rdoc_options: []
38
-
39
- require_paths:
33
+ require_paths:
40
34
  - lib
41
- required_ruby_version: !ruby/object:Gem::Requirement
42
- requirements:
43
- - &id001
44
- - ">="
45
- - !ruby/object:Gem::Version
46
- version: "0"
47
- required_rubygems_version: !ruby/object:Gem::Requirement
48
- requirements:
49
- - *id001
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
50
45
  requirements: []
51
-
52
46
  rubyforge_project:
53
- rubygems_version: 2.0.14
47
+ rubygems_version: 2.2.2
54
48
  signing_key:
55
49
  specification_version: 4
56
50
  summary: create seperate html file for each rspec script
57
51
  test_files: []
58
-