cornucopia 0.1.20 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38c170b2d71c1c3175246f92d3c5c50897420be5
4
- data.tar.gz: 69bf621ca28be4ef849ae7119af8ec11400bac56
3
+ metadata.gz: df8ca3046295b778c73f4422cddec24ecdc92e11
4
+ data.tar.gz: 1a1e0632e7bf439078e67e06a083401bd3861e01
5
5
  SHA512:
6
- metadata.gz: 9f44990328b4b86fa801836ed300369ca1759fd3f313de82ec47b8427ec615ae5adf120d12379e77db1a0ddb8b898bfa2802f2ac6b8362154e9e32dbdee73a5e
7
- data.tar.gz: cfd8f828be669a1f230fd2430448409d06d22ef376014cb6121845cb03675a832f9852380ddccbab8c6e3998a22112287cd0574e02624dee63c9379a03384967
6
+ metadata.gz: 4b96c1ee70f6264b86871f8afe5662c2ce1bff0a4e47b207105b6618f93718d9c50367933b2dcde212b807cc7dbc39019b253908811336b441419ec0bed7763d
7
+ data.tar.gz: 37b84256e2d5ede37af744e73eb0c5d223f4e414d9f947f29470d4ac2b6a9e0abbff6db8e0a4533e602ce81b5f55306194e217da075add1cd299ff96f06efe70
@@ -2,36 +2,108 @@ 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
- Around do |scenario, block|
6
- seed_value = Cornucopia::Util::Configuration.seed ||
7
- 100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
5
+ if Cucumber::VERSION.split[0].to_i >= 2
6
+ Around do |scenario, block|
7
+ seed_value = Cornucopia::Util::Configuration.seed ||
8
+ 100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
8
9
 
9
- scenario.instance_variable_set :@seed_value, seed_value
10
+ scenario.instance_variable_set :@seed_value, seed_value
10
11
 
11
- Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
12
- Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
12
+ Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
13
+ Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
13
14
 
14
- Cornucopia::Util::ReportBuilder.current_report.within_test("#{scenario.feature.title} : #{scenario.title}") do
15
- block.call
15
+ test_name = ""
16
+ if scenario.respond_to?(:feature)
17
+ test_name = "#{scenario.feature.title} : #{scenario.title}"
18
+ elsif scenario.respond_to?(:line)
19
+ test_name = "Scenario - Line: #{scenario.line}"
20
+ else
21
+ test_name = "Scenario - Unknown"
22
+ end
23
+ Cornucopia::Util::ReportBuilder.current_report.within_test(test_name) do
24
+ block.call
25
+ end
26
+
27
+ if scenario.failed?
28
+ seed_value = scenario.instance_variable_get(:@seed_value)
29
+ puts ("random seed for testing was: #{seed_value}")
30
+
31
+ report_name = ""
32
+ if scenario.respond_to?(:feature)
33
+ report_name = "Test Error: #{scenario.feature.title}:#{scenario.title}"
34
+ else
35
+ report_name = "Line - #{scenario.line}"
36
+ end
37
+ Cornucopia::Util::ReportBuilder.current_report.within_section(report_name) do |report|
38
+ configured_report = nil
39
+ if scenario.respond_to?(:feature)
40
+ configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber
41
+ else
42
+ configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber_outline
43
+ end
44
+
45
+ configured_report.add_report_objects scenario: scenario, cucumber: self
46
+ configured_report.generate_report(report)
47
+ end
48
+ else
49
+ Cornucopia::Util::ReportBuilder.current_report.test_succeeded
50
+ end
51
+
52
+ Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
53
+ Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
16
54
  end
55
+ else
56
+ Before do |scenario, block|
57
+ seed_value = Cornucopia::Util::Configuration.seed ||
58
+ 100000000000000000000000000000000000000 + rand(899999999999999999999999999999999999999)
17
59
 
18
- if scenario.failed?
19
- seed_value = scenario.instance_variable_get(:@seed_value)
20
- puts ("random seed for testing was: #{seed_value}")
60
+ scenario.instance_variable_set :@seed_value, seed_value
21
61
 
22
- Cornucopia::Util::ReportBuilder.current_report.
23
- within_section("Test Error: #{scenario.feature.title}:#{scenario.title}") do |report|
24
- configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber
62
+ Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
63
+ Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
25
64
 
26
- configured_report.add_report_objects scenario: scenario, cucumber: self
27
- configured_report.generate_report(report)
65
+ test_name = ""
66
+ if scenario.respond_to?(:feature)
67
+ test_name = "#{scenario.feature.title} : #{scenario.title}"
68
+ elsif scenario.respond_to?(:line)
69
+ test_name = "Scenario - Line: #{scenario.line}"
70
+ else
71
+ test_name = "Scenario - Unknown"
28
72
  end
29
- else
30
- Cornucopia::Util::ReportBuilder.current_report.test_succeeded
73
+ Cornucopia::Util::ReportBuilder.current_report.start_test(scenario, test_name)
31
74
  end
32
75
 
33
- Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
34
- Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
76
+ After do |scenario, block|
77
+ if scenario.failed?
78
+ seed_value = scenario.instance_variable_get(:@seed_value)
79
+ puts ("random seed for testing was: #{seed_value}")
80
+
81
+ report_name = ""
82
+ if scenario.respond_to?(:feature)
83
+ report_name = "Test Error: #{scenario.feature.title}:#{scenario.title}"
84
+ else
85
+ report_name = "Line - #{scenario.line}"
86
+ end
87
+ Cornucopia::Util::ReportBuilder.current_report.within_section(report_name) do |report|
88
+ configured_report = nil
89
+ if scenario.respond_to?(:feature)
90
+ configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber
91
+ else
92
+ configured_report = Cornucopia::Util::Configuration.report_configuration :cucumber_outline
93
+ end
94
+
95
+ configured_report.add_report_objects scenario: scenario, cucumber: self
96
+ configured_report.generate_report(report)
97
+ end
98
+ else
99
+ Cornucopia::Util::ReportBuilder.current_report.test_succeeded
100
+ end
101
+
102
+ Cornucopia::Capybara::FinderDiagnostics::FindAction.clear_diagnosed_finders
103
+ Cornucopia::Capybara::PageDiagnostics.clear_dumped_pages
104
+
105
+ Cornucopia::Util::ReportBuilder.current_report.end_test(scenario)
106
+ end
35
107
  end
36
108
 
37
109
  at_exit do
@@ -129,6 +129,61 @@ module Cornucopia
129
129
  :cucumber__integration_session
130
130
  ]
131
131
  },
132
+ cucumber_outline: {
133
+ min_fields: [
134
+ {
135
+ report_element: :scenario__scenario_outline__name,
136
+ report_options: { label: "feature_outline" }
137
+ },
138
+ {
139
+ report_element: :scenario__name,
140
+ report_options: { label: "scenario_example" }
141
+ },
142
+ {
143
+ report_element: :scenario__scenario_outline__example_sections__0__0__0,
144
+ # report_options: { format: ->(value) { "#{value.file}:#{value.line}" } }
145
+ report_options: { format_object: Cornucopia::Util::CucumberFormatter,
146
+ format_function: :format_location }
147
+ },
148
+ :scenario__exception__to_s,
149
+ :scenario__exception__backtrace
150
+ ],
151
+ more_info_fields: [
152
+ :scenario__exception__class__name,
153
+ :scenario,
154
+ :scenario__scenario_outline__example_sections__0__1__comments,
155
+ :scenario__scenario_outline__example_sections__0__1__keyword,
156
+ :scenario__scenario_outline__example_sections__0__1__description,
157
+ :scenario__source_tag_names,
158
+ :scenario__scenario_outline__example_sections__0__1__tags,
159
+ :scenario__scenario_outline__example_sections__0__0,
160
+ :scenario__scenario_outline,
161
+ :cucumber,
162
+ :logs,
163
+ :capybara_page_diagnostics
164
+ ],
165
+ expand_fields: [
166
+ :scenario,
167
+ :scenario__scenario_outline,
168
+ :cucumber,
169
+ ],
170
+ expand_inline_fields: [
171
+ ],
172
+ exclude_fields: [
173
+ :scenario__background,
174
+ :scenario__scenario_outline__background,
175
+ :scenario__table,
176
+ :scenario__feature,
177
+ :scenario__current_visitor,
178
+ :scenario__raw_steps,
179
+ :scenario__title,
180
+ :cucumber____cucumber_runtime,
181
+ :cucumber____natural_language,
182
+ :cucumber___rack_test_sessions,
183
+ :cucumber___rack_mock_sessions,
184
+ :cucumber__integration_session
185
+ ]
186
+ },
132
187
  spinach: {
133
188
  min_fields: [
134
189
  :failure_description,
@@ -290,6 +290,7 @@ module Cornucopia
290
290
  def export_field_record(export_field, parent_object, parent_object_name, report_table, level, options = {})
291
291
  parent_expanded = options.delete(:expanded_field)
292
292
  report_object = nil
293
+ reported = false
293
294
 
294
295
  if (options.delete(:report_object_set))
295
296
  report_object = parent_object
@@ -298,14 +299,21 @@ module Cornucopia
298
299
  (!parent_object.methods.include?(export_field[:report_element][level]) ||
299
300
  parent_object.method(export_field[:report_element][level]).parameters.empty?)
300
301
  report_object = parent_object.send(export_field[:report_element][level])
302
+ reported = true
301
303
  elsif parent_object.respond_to?(:[])
302
304
  key_value = export_field[:report_element][level]
303
305
  if key_value.to_s =~ /^-?[0-9]+$/
304
306
  key_value = key_value.to_s.to_i
305
307
  end
306
308
 
307
- report_object = parent_object.send(:[], key_value)
308
- else
309
+ begin
310
+ report_object = parent_object.send(:[], key_value)
311
+ reported = true
312
+ rescue
313
+ end
314
+ end
315
+
316
+ unless reported
309
317
  instance_variable_name = instance_variables_contain(parent_object, export_field[:report_element][level])
310
318
 
311
319
  if instance_variable_name
@@ -515,11 +523,21 @@ module Cornucopia
515
523
  end
516
524
 
517
525
  def get_instance_variable(the_object, instance_variable, variable_name)
526
+ fetched = false
527
+
518
528
  if the_object.respond_to?(variable_name)
519
- the_object.send(variable_name)
520
- else
521
- the_object.instance_variable_get(instance_variable)
529
+ begin
530
+ return_value = the_object.send(variable_name)
531
+ fetched = true
532
+ rescue
533
+ end
522
534
  end
535
+
536
+ unless fetched
537
+ return_value = the_object.instance_variable_get(instance_variable)
538
+ end
539
+
540
+ return_value
523
541
  end
524
542
  end
525
543
  end
@@ -12,6 +12,9 @@ module Cornucopia
12
12
 
13
13
  MAX_OLD_FOLDERS = 5
14
14
 
15
+ class TestDataHolder
16
+ end
17
+
15
18
  class << self
16
19
  def current_report(folder_name = nil, parent_folder = nil)
17
20
  if (@@current_report &&
@@ -101,8 +104,7 @@ module Cornucopia
101
104
  rescue Timeout::Error
102
105
  timed_out = true
103
106
  end
104
- rescue Exception => error
105
- error.to_s
107
+ rescue Exception
106
108
  end
107
109
 
108
110
  # If it timed out or threw an exception, try .to_s
@@ -114,6 +116,8 @@ module Cornucopia
114
116
  end
115
117
  rescue Timeout::Error
116
118
  return_value = "Timed out rendering"
119
+ rescue => error
120
+ return_value = "Rendering error => #{error.to_s}\n#{error.backtrace.join("\n")}"
117
121
  end
118
122
  end
119
123
 
@@ -495,24 +499,41 @@ module Cornucopia
495
499
  end
496
500
  end
497
501
 
502
+ def start_test(stack_object, test_name)
503
+ test_data =
504
+ {
505
+ orig_test_name: @test_name,
506
+ orig_test_folder: @report_test_folder_name,
507
+ orig_test_list_item: @test_list_item,
508
+ orig_section_number: @section_number
509
+ }
510
+
511
+ stack_object.instance_variable_set(:@report_builder_test_start_data, test_data)
512
+
513
+ @test_name = test_name
514
+ @report_test_folder_name = nil
515
+ @test_list_item = nil
516
+ @section_number = 0
517
+ end
518
+
519
+ def end_test(stack_object)
520
+ test_data = stack_object.instance_variable_get(:@report_builder_test_start_data)
521
+
522
+ @section_number = test_data[:orig_section_number]
523
+ @test_name = test_data[:orig_test_name]
524
+ @report_test_folder_name = test_data[:orig_test_folder]
525
+ @test_list_item = test_data[:orig_test_list_item]
526
+ end
527
+
498
528
  def within_test(test_name, &block)
499
- orig_test_name = @test_name
500
- orig_test_folder = @report_test_folder_name
501
- orig_test_list_item = @test_list_item
502
- orig_section_number = @section_number
529
+ test_data_holder = TestDataHolder.new
503
530
 
504
531
  begin
505
- @test_name = test_name
506
- @report_test_folder_name = nil
507
- @test_list_item = nil
508
- @section_number = 0
532
+ start_test(test_data_holder, test_name)
509
533
 
510
534
  block.yield
511
535
  ensure
512
- @section_number = orig_section_number
513
- @test_name = orig_test_name
514
- @report_test_folder_name = orig_test_folder
515
- @test_list_item = orig_test_list_item
536
+ end_test(test_data_holder)
516
537
  end
517
538
  end
518
539
 
@@ -1,3 +1,3 @@
1
1
  module Cornucopia
2
- VERSION = "0.1.20"
2
+ VERSION = "0.1.21"
3
3
  end
@@ -215,6 +215,16 @@ describe Cornucopia::Util::ReportBuilder do
215
215
  expect(Cornucopia::Util::ReportBuilder.pretty_object(test_object)).to be == "{:a=>\"b\"}"
216
216
  end
217
217
 
218
+ it "deals with exceptions" do
219
+ test_object = { a: "b" }
220
+
221
+ expect(test_object).to receive(:pretty_inspect) { raise "this is an error" }
222
+ expect(test_object).to receive(:to_s) { raise "this is an error" }
223
+ expect(Cornucopia::Util::ReportBuilder).not_to receive(:pretty_array)
224
+
225
+ expect(Cornucopia::Util::ReportBuilder.pretty_object(test_object)).to match /Rendering error =\>/
226
+ end
227
+
218
228
  it "times out after a long time with t_s too" do
219
229
  test_object = { a: "b" }
220
230
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cornucopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealNobody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-05 00:00:00.000000000 Z
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails