cornucopia 0.1.33 → 0.1.34

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.
@@ -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