cornucopia 0.1.33 → 0.1.34

Sign up to get free protection for your applications and to get access to all the features.
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "activesupport"
26
26
 
27
27
  spec.add_development_dependency "rails"
28
- spec.add_development_dependency "mysql2"
28
+ # spec.add_development_dependency "mysql2"
29
29
  spec.add_development_dependency "bundler"
30
30
  spec.add_development_dependency "rake"
31
31
  spec.add_development_dependency "rspec-rails"
@@ -2,12 +2,22 @@ require ::File.expand_path("../cornucopia", File.dirname(__FILE__))
2
2
  load ::File.expand_path("capybara/install_finder_extensions.rb", File.dirname(__FILE__))
3
3
  load ::File.expand_path("site_prism/install_element_extensions.rb", File.dirname(__FILE__))
4
4
 
5
+ require "singleton"
6
+
7
+ class CucumberHookStatus
8
+ include Singleton
9
+
10
+ attr_accessor :failed_scenario
11
+ end
12
+
5
13
  if Cucumber::VERSION.split[0].to_i >= 2
6
14
  After do |scenario, block|
7
15
  time = Benchmark.measure do
8
16
  puts "Cornucopia::Hook::page dump" if Cornucopia::Util::Configuration.benchmark
9
17
 
10
18
  if scenario.failed?
19
+ CucumberHookStatus.instance.failed_scenario = scenario
20
+
11
21
  report_name = "Page Dump for: #{Cornucopia::Util::TestHelper.instance.cucumber_name(scenario)}"
12
22
 
13
23
  Cornucopia::Capybara::PageDiagnostics.dump_details(section_label: report_name)
@@ -17,9 +27,10 @@ if Cucumber::VERSION.split[0].to_i >= 2
17
27
  puts "Cornucopia::Hook::page dump time: #{time}" if Cornucopia::Util::Configuration.benchmark
18
28
  end
19
29
 
20
- Around do |scenario, block|
30
+ Around do |scenario_proxy, block|
21
31
  test_name = nil
22
32
 
33
+ scenario = scenario_proxy
23
34
  time = Benchmark.measure do
24
35
  puts "Cornucopia::Hook::before test" if Cornucopia::Util::Configuration.benchmark
25
36
 
@@ -38,35 +49,45 @@ if Cucumber::VERSION.split[0].to_i >= 2
38
49
  puts "Cornucopia::Hook::before test time: #{time}" if Cornucopia::Util::Configuration.benchmark
39
50
 
40
51
  Cornucopia::Util::ReportBuilder.current_report.within_test("Scenario - #{test_name}") do
52
+ CucumberHookStatus.instance.failed_scenario = nil
53
+
41
54
  block.call
42
- end
43
55
 
44
- time = Benchmark.measure do
45
- puts "Cornucopia::Hook::after test" if Cornucopia::Util::Configuration.benchmark
56
+ time = Benchmark.measure do
57
+ puts "Cornucopia::Hook::after test" if Cornucopia::Util::Configuration.benchmark
46
58
 
47
- if scenario.failed?
48
- seed_value = scenario.instance_variable_get(:@seed_value)
49
- puts ("random seed for testing was: #{seed_value}")
59
+ if scenario.failed? || CucumberHookStatus.instance.failed_scenario
60
+ seed_value = scenario.instance_variable_get(:@seed_value)
61
+ puts ("random seed for testing was: #{seed_value}")
50
62
 
51
- Cornucopia::Util::ReportBuilder.current_report.within_section("Test Error: #{test_name}") do |report|
52
- configured_report = nil
53
- if scenario.respond_to?(:feature)
54
- configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber
55
- else
56
- configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber_outline
63
+ if CucumberHookStatus.instance.failed_scenario && !scenario.failed?
64
+ # In 2.0, the scenario in the around block is actually a scenario_proxy. This means that it isn't the real
65
+ # scenario that failed. Therefore sometimes it doesn't have the real value of failed? or exception.
66
+ # For this reason, I capture the "real" scenario in the after hook if it fails and use it here.
67
+ scenario = CucumberHookStatus.instance.failed_scenario
68
+ scenario.instance_variable_set(:@seed_value, seed_value)
57
69
  end
58
70
 
59
- configured_report.add_report_objects scenario: scenario, cucumber: self
60
- configured_report.generate_report(report)
71
+ Cornucopia::Util::ReportBuilder.current_report.within_section("Test Error: #{test_name}") do |report|
72
+ configured_report = nil
73
+ if scenario.respond_to?(:feature)
74
+ configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber
75
+ else
76
+ configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber_outline
77
+ end
78
+
79
+ configured_report.add_report_objects scenario: scenario, cucumber: self
80
+ configured_report.generate_report(report)
81
+ end
82
+ else
83
+ Cornucopia::Util::ReportBuilder.current_report.test_succeeded
61
84
  end
62
- else
63
- Cornucopia::Util::ReportBuilder.current_report.test_succeeded
64
- end
65
85
 
66
- Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
67
- Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
86
+ Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
87
+ Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
68
88
 
69
- Cornucopia::Util::TestHelper.instance.record_test_end(test_name)
89
+ Cornucopia::Util::TestHelper.instance.record_test_end(test_name)
90
+ end
70
91
  end
71
92
 
72
93
  puts "Cornucopia::Hook::after test time: #{time}" if Cornucopia::Util::Configuration.benchmark
@@ -28,7 +28,7 @@ module Cornucopia
28
28
  within_section("Test Error: #{example.full_description}") do |report|
29
29
  configured_report = Cornucopia::Util::Configuration.report_configuration :rspec
30
30
 
31
- configured_report.add_report_objects example: example, rspec: RSpec
31
+ configured_report.add_report_objects example: example, rspec: RSpec, seeds: self
32
32
  configured_report.generate_report(report)
33
33
  end
34
34
  end
@@ -47,6 +47,8 @@ module Cornucopia
47
47
  more_info_fields: [
48
48
  :example__exception__class__name,
49
49
  :example,
50
+ :seeds__seed_value,
51
+ :seeds__context_seed_value,
50
52
  :example__example_group_instance,
51
53
  :example__metadata__caller,
52
54
  {
@@ -103,12 +105,13 @@ module Cornucopia
103
105
  more_info_fields: [
104
106
  :scenario__exception__class__name,
105
107
  :scenario,
106
- :scenario__feature__comment,
108
+ :scenario__seed_value,
109
+ # :scenario__feature__comment,
107
110
  :scenario__feature__keyword,
108
111
  :scenario__feature__description,
109
112
  :scenario__feature__gherkin_statement,
110
113
  :scenario__feature__tags,
111
- :scenario__current_visitor__configuration,
114
+ # :scenario__current_visitor__configuration,
112
115
  :cucumber,
113
116
  :logs,
114
117
  :capybara_page_diagnostics
@@ -284,6 +284,21 @@ module Cornucopia
284
284
  end
285
285
  end
286
286
 
287
+ # For some reason, I've found some instance variables that are set but aren't in instance_variable_names
288
+ unless found_name
289
+ begin
290
+ if parent_object.instance_variable_defined?(variable_name)
291
+ found_name = variable_name.to_s
292
+ end
293
+ rescue
294
+ # the name might be invalid, so if it raises an exception here, ignore it.
295
+ end
296
+
297
+ if parent_object.instance_variable_defined?("@#{variable_name}".to_sym)
298
+ found_name = "@#{variable_name}"
299
+ end
300
+ end
301
+
287
302
  found_name
288
303
  end
289
304
 
@@ -297,7 +312,9 @@ module Cornucopia
297
312
  else
298
313
  if parent_object.respond_to?(export_field[:report_element][level]) &&
299
314
  (!parent_object.methods.include?(export_field[:report_element][level]) ||
300
- parent_object.method(export_field[:report_element][level]).parameters.empty?)
315
+ parent_object.method(export_field[:report_element][level]).parameters.empty? ||
316
+ (parent_object.method(export_field[:report_element][level]).parameters.length == 1 &&
317
+ parent_object.method(export_field[:report_element][level]).parameters[0][0] == :rest))
301
318
  report_object = parent_object.send(export_field[:report_element][level])
302
319
  reported = true
303
320
  elsif parent_object.respond_to?(:[])
@@ -1,3 +1,3 @@
1
1
  module Cornucopia
2
- VERSION = "0.1.33"
2
+ VERSION = "0.1.34"
3
3
  end
metadata CHANGED
@@ -1,223 +1,238 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cornucopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.33
4
+ version: 0.1.34
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - RealNobody
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-06-23 00:00:00.000000000 Z
12
+ date: 2015-08-05 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rails
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: mysql2
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
43
+ - - ! '>='
53
44
  - !ruby/object:Gem::Version
54
45
  version: '0'
55
46
  - !ruby/object:Gem::Dependency
56
47
  name: bundler
57
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
58
50
  requirements:
59
- - - '>='
51
+ - - ! '>='
60
52
  - !ruby/object:Gem::Version
61
53
  version: '0'
62
54
  type: :development
63
55
  prerelease: false
64
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
65
58
  requirements:
66
- - - '>='
59
+ - - ! '>='
67
60
  - !ruby/object:Gem::Version
68
61
  version: '0'
69
62
  - !ruby/object:Gem::Dependency
70
63
  name: rake
71
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
72
66
  requirements:
73
- - - '>='
67
+ - - ! '>='
74
68
  - !ruby/object:Gem::Version
75
69
  version: '0'
76
70
  type: :development
77
71
  prerelease: false
78
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
79
74
  requirements:
80
- - - '>='
75
+ - - ! '>='
81
76
  - !ruby/object:Gem::Version
82
77
  version: '0'
83
78
  - !ruby/object:Gem::Dependency
84
79
  name: rspec-rails
85
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
86
82
  requirements:
87
- - - '>='
83
+ - - ! '>='
88
84
  - !ruby/object:Gem::Version
89
85
  version: '0'
90
86
  type: :development
91
87
  prerelease: false
92
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
93
90
  requirements:
94
- - - '>='
91
+ - - ! '>='
95
92
  - !ruby/object:Gem::Version
96
93
  version: '0'
97
94
  - !ruby/object:Gem::Dependency
98
95
  name: capybara
99
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
100
98
  requirements:
101
- - - '>='
99
+ - - ! '>='
102
100
  - !ruby/object:Gem::Version
103
101
  version: '0'
104
102
  type: :development
105
103
  prerelease: false
106
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
107
106
  requirements:
108
- - - '>='
107
+ - - ! '>='
109
108
  - !ruby/object:Gem::Version
110
109
  version: '0'
111
110
  - !ruby/object:Gem::Dependency
112
111
  name: cucumber
113
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
114
  requirements:
115
- - - '>='
115
+ - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
121
122
  requirements:
122
- - - '>='
123
+ - - ! '>='
123
124
  - !ruby/object:Gem::Version
124
125
  version: '0'
125
126
  - !ruby/object:Gem::Dependency
126
127
  name: cucumber-rails
127
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
128
130
  requirements:
129
- - - '>='
131
+ - - ! '>='
130
132
  - !ruby/object:Gem::Version
131
133
  version: '0'
132
134
  type: :development
133
135
  prerelease: false
134
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
135
138
  requirements:
136
- - - '>='
139
+ - - ! '>='
137
140
  - !ruby/object:Gem::Version
138
141
  version: '0'
139
142
  - !ruby/object:Gem::Dependency
140
143
  name: faker
141
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
142
146
  requirements:
143
- - - '>='
147
+ - - ! '>='
144
148
  - !ruby/object:Gem::Version
145
149
  version: '0'
146
150
  type: :development
147
151
  prerelease: false
148
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
149
154
  requirements:
150
- - - '>='
155
+ - - ! '>='
151
156
  - !ruby/object:Gem::Version
152
157
  version: '0'
153
158
  - !ruby/object:Gem::Dependency
154
159
  name: site_prism
155
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
156
162
  requirements:
157
- - - '>='
163
+ - - ! '>='
158
164
  - !ruby/object:Gem::Version
159
165
  version: '0'
160
166
  type: :development
161
167
  prerelease: false
162
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
163
170
  requirements:
164
- - - '>='
171
+ - - ! '>='
165
172
  - !ruby/object:Gem::Version
166
173
  version: '0'
167
174
  - !ruby/object:Gem::Dependency
168
175
  name: selenium-webdriver
169
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
170
178
  requirements:
171
- - - '>='
179
+ - - ! '>='
172
180
  - !ruby/object:Gem::Version
173
181
  version: '0'
174
182
  type: :development
175
183
  prerelease: false
176
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
177
186
  requirements:
178
- - - '>='
187
+ - - ! '>='
179
188
  - !ruby/object:Gem::Version
180
189
  version: '0'
181
190
  - !ruby/object:Gem::Dependency
182
191
  name: simplecov
183
192
  requirement: !ruby/object:Gem::Requirement
193
+ none: false
184
194
  requirements:
185
- - - '>='
195
+ - - ! '>='
186
196
  - !ruby/object:Gem::Version
187
197
  version: '0'
188
198
  type: :development
189
199
  prerelease: false
190
200
  version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
191
202
  requirements:
192
- - - '>='
203
+ - - ! '>='
193
204
  - !ruby/object:Gem::Version
194
205
  version: '0'
195
206
  - !ruby/object:Gem::Dependency
196
207
  name: launchy
197
208
  requirement: !ruby/object:Gem::Requirement
209
+ none: false
198
210
  requirements:
199
- - - '>='
211
+ - - ! '>='
200
212
  - !ruby/object:Gem::Version
201
213
  version: '0'
202
214
  type: :development
203
215
  prerelease: false
204
216
  version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
205
218
  requirements:
206
- - - '>='
219
+ - - ! '>='
207
220
  - !ruby/object:Gem::Version
208
221
  version: '0'
209
222
  - !ruby/object:Gem::Dependency
210
223
  name: rack
211
224
  requirement: !ruby/object:Gem::Requirement
225
+ none: false
212
226
  requirements:
213
- - - '>='
227
+ - - ! '>='
214
228
  - !ruby/object:Gem::Version
215
229
  version: '0'
216
230
  type: :development
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
219
234
  requirements:
220
- - - '>='
235
+ - - ! '>='
221
236
  - !ruby/object:Gem::Version
222
237
  version: '0'
223
238
  description: A collection of tools I created to simplify and make it easier to see
@@ -229,8 +244,6 @@ extensions: []
229
244
  extra_rdoc_files: []
230
245
  files:
231
246
  - .gitignore
232
- - .ruby-gemset
233
- - .ruby-version
234
247
  - Gemfile
235
248
  - LICENSE.TXT
236
249
  - README.md
@@ -340,26 +353,27 @@ files:
340
353
  homepage: https://github.com/RealNobody/cornucopia
341
354
  licenses:
342
355
  - MIT
343
- metadata: {}
344
356
  post_install_message:
345
357
  rdoc_options: []
346
358
  require_paths:
347
359
  - lib
348
360
  required_ruby_version: !ruby/object:Gem::Requirement
361
+ none: false
349
362
  requirements:
350
- - - '>='
363
+ - - ! '>='
351
364
  - !ruby/object:Gem::Version
352
365
  version: '0'
353
366
  required_rubygems_version: !ruby/object:Gem::Requirement
367
+ none: false
354
368
  requirements:
355
- - - '>='
369
+ - - ! '>='
356
370
  - !ruby/object:Gem::Version
357
371
  version: '0'
358
372
  requirements: []
359
373
  rubyforge_project:
360
- rubygems_version: 2.1.11
374
+ rubygems_version: 1.8.23
361
375
  signing_key:
362
- specification_version: 4
376
+ specification_version: 3
363
377
  summary: A collection of tools to simplify testing tasks.
364
378
  test_files:
365
379
  - spec/dummy/README.rdoc
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 86528ccc5d87da9371e94a93983b1457aa72b646
4
- data.tar.gz: d45cb265ba31b645dd380ad5f5ee2b0948d7828d
5
- SHA512:
6
- metadata.gz: 59f98d9ad75b0036e9ed3fde158fe01677e4ca326520eacee7afc416875b57267918b602dbdd9fc4879c3d89db224d7f8b56993c177b081879290eca1f75d05e
7
- data.tar.gz: 63997a9782f0608bb4b000b887ad4acf0c05099840a925877b08d8e8b3c6c8a500db1bd60a283220e0909e93a5bce90f6ee5c321d87e45e15f0c4adde2c16334
@@ -1 +0,0 @@
1
- cornucopia
@@ -1 +0,0 @@
1
- ruby-2.0.0