cornucopia 0.1.21 → 0.1.22

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
1
  ---
2
2
  SHA1:
3
- metadata.gz: df8ca3046295b778c73f4422cddec24ecdc92e11
4
- data.tar.gz: 1a1e0632e7bf439078e67e06a083401bd3861e01
3
+ metadata.gz: 9cf8a5c84e2193e81d2b67d64375ada9f2007cba
4
+ data.tar.gz: 030766d5cd61bcb39200514aa0d58cd1e3fd5dd5
5
5
  SHA512:
6
- metadata.gz: 4b96c1ee70f6264b86871f8afe5662c2ce1bff0a4e47b207105b6618f93718d9c50367933b2dcde212b807cc7dbc39019b253908811336b441419ec0bed7763d
7
- data.tar.gz: 37b84256e2d5ede37af744e73eb0c5d223f4e414d9f947f29470d4ac2b6a9e0abbff6db8e0a4533e602ce81b5f55306194e217da075add1cd299ff96f06efe70
6
+ metadata.gz: 38dd4f0575e88f87850a1fbf0a94609048f2e371933206108cdf46b55d8b55857ec11c389a6f206e89854bde464d584022c256b0c94e11acd2ab33193f8d0896
7
+ data.tar.gz: 602703301a74c5f70bfe1c45201805a72e670af12b96c91a437b32dc635c88df517045651511c6b8ce16ff0b26eb7f83f9824b8dcccd72548b2f5e741cc9fa0b
data/README.md CHANGED
@@ -313,6 +313,11 @@ The configuration class contains the various configurations that are used by the
313
313
 
314
314
  Indicates if the `Cornucopia::Util::LogCapture` class will capture any log files or not.
315
315
 
316
+ * **backup_logs_on_failure**
317
+
318
+ Indicates if the `Cornucopia::Util::LogCapture` class will backup the full log file at the end of the test suite
319
+ if there is an error.
320
+
316
321
  * **user_log_files**
317
322
 
318
323
  Returns a list of the log files which will be captures. Changing the returned value will not affect log
@@ -19,6 +19,7 @@ module Cornucopia
19
19
  configurations.user_log_files = {}
20
20
  configurations.default_num_lines = 500
21
21
  configurations.grab_logs = true
22
+ configurations.backup_logs_on_failure = true
22
23
  configurations.print_timeout_min = 10
23
24
  configurations.selenium_cache_retry_count = 5
24
25
  configurations.analyze_find_exceptions = true
@@ -405,6 +406,29 @@ module Cornucopia
405
406
  Cornucopia::Util::Configuration.instance.configurations.grab_logs
406
407
  end
407
408
 
409
+ # backup_logs_on_failure causes the system to copy the log files at the end of the report cycle if there were
410
+ # any errors during the creation of the report system.
411
+ #
412
+ # The system will try to grab the following log files:
413
+ # * Rails.env.log
414
+ # * any user specified logs
415
+ #
416
+ # The log capture is done with a simple file copy.
417
+ #
418
+ # Related options:
419
+ # user_log_files
420
+ # num_lines
421
+ # add_log_file
422
+ # remove_log_file
423
+ # grab_logs
424
+ def backup_logs_on_failure=(value)
425
+ Cornucopia::Util::Configuration.instance.configurations.backup_logs_on_failure = value
426
+ end
427
+
428
+ def backup_logs_on_failure
429
+ Cornucopia::Util::Configuration.instance.configurations.backup_logs_on_failure
430
+ end
431
+
408
432
  # user_log_files returns a hash of all of the log files which
409
433
  # the user has specified are to be grabbed.
410
434
  #
@@ -7,6 +7,42 @@ module Cornucopia
7
7
  class << self
8
8
  TAIL_BUF_LENGTH = 1 << 16
9
9
 
10
+ def backup_log_files(backup_folder)
11
+ if Object.const_defined?("Rails")
12
+ log_folder = Rails.root.to_s
13
+ if (log_folder =~ /\/features\/?$/ || log_folder =~ /\/spec\/?$/)
14
+ log_folder = File.join(log_folder, "../")
15
+ end
16
+
17
+ default_log_file = "log/#{Rails.env.to_s}.log"
18
+
19
+ copy_log_file backup_folder, File.join(log_folder, default_log_file)
20
+ else
21
+ log_folder = FileUtils.pwd
22
+ end
23
+
24
+ Cornucopia::Util::Configuration.user_log_files.each do |relative_log_file, options|
25
+ copy_log_file backup_folder, File.join(log_folder, relative_log_file)
26
+ end
27
+ end
28
+
29
+ def copy_log_file(dest_folder, source_file)
30
+ extension = File.extname(source_file)
31
+ file_name = File.basename(source_file, extension)
32
+ dest_name = File.join(dest_folder, "#{file_name}#{extension}")
33
+ index = 0
34
+
35
+ while File.exists?(dest_name)
36
+ index += 1
37
+ dest_name = File.join(dest_folder, "#{file_name}_#{index}#{extension}")
38
+ end
39
+
40
+ if File.exists?(source_file)
41
+ FileUtils.mkdir_p File.dirname(dest_name)
42
+ FileUtils.cp source_file, dest_name
43
+ end
44
+ end
45
+
10
46
  # This function will capture the logs and output them to the report
11
47
  def capture_logs(report_table)
12
48
  if report_table
@@ -63,8 +63,9 @@ module Cornucopia
63
63
  format_value = value.to_s if value.is_a?(Array)
64
64
 
65
65
  if format_sub_items
66
- Cornucopia::Util::ReportBuilder.pretty_format(format_value).rstrip
66
+ Cornucopia::Util::ReportBuilder.pretty_format(format_value, in_pretty_print: true).rstrip
67
67
  else
68
+ # "".html_safe + format_value
68
69
  format_value
69
70
  end
70
71
  end.join("\n").html_safe
@@ -78,7 +79,7 @@ module Cornucopia
78
79
  # either the class prints quickly, or we kill it and try something else.
79
80
  #
80
81
  # If the something else doesn't work, we just give up...
81
- def pretty_object(value)
82
+ def pretty_object(value, options = {})
82
83
  timed_out = false
83
84
  return_value = nil
84
85
 
@@ -94,7 +95,7 @@ module Cornucopia
94
95
  if value.is_a?(String)
95
96
  return_value = value
96
97
  elsif value.is_a?(Array)
97
- return_value = Cornucopia::Util::ReportBuilder.pretty_array(value, false)
98
+ return_value = Cornucopia::Util::ReportBuilder.pretty_array(value, !options[:in_pretty_print])
98
99
  elsif value.respond_to?(:pretty_inspect)
99
100
  return_value = value.pretty_inspect
100
101
  else
@@ -124,10 +125,10 @@ module Cornucopia
124
125
  return_value
125
126
  end
126
127
 
127
- def pretty_format(value)
128
+ def pretty_format(value, options = {})
128
129
  pretty_text = value
129
130
 
130
- pretty_text = Cornucopia::Util::ReportBuilder.pretty_object(pretty_text)
131
+ pretty_text = Cornucopia::Util::ReportBuilder.pretty_object(pretty_text, options)
131
132
  pretty_text = Cornucopia::Util::ReportBuilder.escape_string(pretty_text)
132
133
  pretty_text = Cornucopia::Util::PrettyFormatter.format_string(pretty_text)
133
134
  pretty_text = Cornucopia::Util::ReportBuilder.format_code_refs(pretty_text)
@@ -222,6 +223,10 @@ module Cornucopia
222
223
  end
223
224
 
224
225
  if File.exists?(report_base_page_name)
226
+ if Cornucopia::Util::Configuration.backup_logs_on_failure
227
+ backup_log_files
228
+ end
229
+
225
230
  if Cornucopia::Util::Configuration.open_report_after_generation(@base_folder_name)
226
231
  # `open #{report_base_page_name}` rescue nil
227
232
  system("open #{report_base_page_name}") rescue nil
@@ -434,17 +439,23 @@ module Cornucopia
434
439
  FileAsset.asset("cornucopia.css").add_file(File.join(support_folder_name, "cornucopia.css"))
435
440
  end
436
441
 
442
+ def body_list_item(name, path)
443
+ body_list_item = "<li>\n".html_safe
444
+ body_list_item += "<a class=\"coruncopia-report-link\" href=\"#{path}\" target=\"_blank\">".html_safe
445
+ body_list_item += name
446
+ body_list_item += "</a>\n".html_safe
447
+ body_list_item += "</li>\n".html_safe
448
+
449
+ body_list_item
450
+ end
451
+
437
452
  def test_list_item
438
453
  if @test_list_item
439
454
  nil
440
455
  else
441
456
  folder_name = File.basename(report_test_folder_name)
442
457
 
443
- @test_list_item = "<li>\n".html_safe
444
- @test_list_item += "<a class=\"coruncopia-report-link\" href=\"#{folder_name}/index.html\" target=\"_blank\">".html_safe
445
- @test_list_item += @test_name
446
- @test_list_item += "</a>\n".html_safe
447
- @test_list_item += "</li>\n".html_safe
458
+ @test_list_item = body_list_item(@test_name, File.join(folder_name, "index.html"))
448
459
 
449
460
  @test_list_item
450
461
  end
@@ -628,14 +639,16 @@ module Cornucopia
628
639
  padded_val << "</div>".html_safe
629
640
  end
630
641
 
631
- def unique_file_name(file_base_name)
642
+ def unique_file_name(file_base_name, base_folder = nil)
632
643
  file_parts = file_base_name.split(".")
633
644
  base_name = file_parts[0..-2].join(".")
634
645
  extension = file_parts[-1]
635
646
 
647
+ base_folder ||= report_test_folder_name
648
+
636
649
  unique_num = 1
637
650
  num_string = ""
638
- while File.exists?(File.join(report_test_folder_name, "#{base_name}#{num_string}.#{extension}"))
651
+ while File.exists?(File.join(base_folder, "#{base_name}#{num_string}.#{extension}"))
639
652
  num_string = "_#{unique_num}"
640
653
  unique_num += 1
641
654
  end
@@ -643,16 +656,32 @@ module Cornucopia
643
656
  "#{base_name}#{num_string}.#{extension}"
644
657
  end
645
658
 
646
- def unique_folder_name(folder_base_name)
659
+ def unique_folder_name(folder_base_name, base_folder = nil)
647
660
  unique_num = 1
648
661
  num_string = ""
649
- while File.exists?(File.join(report_test_folder_name, "#{folder_base_name}#{num_string}"))
662
+
663
+ base_folder ||= report_test_folder_name
664
+
665
+ while File.exists?(File.join(base_folder, "#{folder_base_name}#{num_string}"))
650
666
  num_string = "_#{unique_num}"
651
667
  unique_num += 1
652
668
  end
653
669
 
654
670
  "#{folder_base_name}#{num_string}"
655
671
  end
672
+
673
+ def backup_log_files
674
+ log_folder = unique_folder_name "log_files", report_folder_name
675
+
676
+ Cornucopia::Util::LogCapture.backup_log_files File.join(report_folder_name, log_folder)
677
+
678
+ log_files = Dir[File.join(report_folder_name, log_folder, "**", "*")]
679
+ log_files.each do |log_file|
680
+ @report_body += body_list_item(File.basename(log_file), log_file[report_folder_name.length..-1])
681
+ end
682
+
683
+ rebuild_report_holder_page
684
+ end
656
685
  end
657
686
  end
658
687
  end
@@ -1,3 +1,3 @@
1
1
  module Cornucopia
2
- VERSION = "0.1.21"
2
+ VERSION = "0.1.22"
3
3
  end
@@ -76,7 +76,7 @@ describe "Cornucopia::Util::Configuration" do
76
76
  expect(Cornucopia::Util::Configuration.grab_logs).to be_truthy
77
77
  end
78
78
 
79
- it "can set the seed value" do
79
+ it "can set the grab_logs value" do
80
80
  begin
81
81
  Cornucopia::Util::Configuration.grab_logs = false
82
82
 
@@ -86,6 +86,20 @@ describe "Cornucopia::Util::Configuration" do
86
86
  end
87
87
  end
88
88
 
89
+ it "backs up logs on failure by default" do
90
+ expect(Cornucopia::Util::Configuration.backup_logs_on_failure).to be_truthy
91
+ end
92
+
93
+ it "can set the backup_logs_on_failure value" do
94
+ begin
95
+ Cornucopia::Util::Configuration.backup_logs_on_failure = false
96
+
97
+ expect(Cornucopia::Util::Configuration.backup_logs_on_failure).to be_falsey
98
+ ensure
99
+ Cornucopia::Util::Configuration.backup_logs_on_failure = true
100
+ end
101
+ end
102
+
89
103
  it "has no custom files by default" do
90
104
  expect(Cornucopia::Util::Configuration.user_log_files).to be == {}
91
105
  end
@@ -3,12 +3,16 @@ require ::File.expand_path("../../../lib/cornucopia/util/log_capture", File.dirn
3
3
 
4
4
  describe Cornucopia::Util::LogCapture do
5
5
  let(:file_name) { Rails.root.join("sample_log.log") }
6
+ let(:dest_folder) { Rails.root.join("fake_logs/") }
6
7
 
7
8
  around(:each) do |example|
9
+ pwd = FileUtils.pwd
10
+
8
11
  expect(File.directory?(Rails.root.join("cornucopia_report/"))).to be_falsey
9
12
  expect(File.directory?(Rails.root.join("spec/cornucopia_report/"))).to be_falsey
10
13
  expect(File.directory?(Rails.root.join("features/cornucopia_report/"))).to be_falsey
11
14
  expect(File.exists?(file_name)).to be_falsey
15
+ expect(File.directory?(dest_folder)).to be_falsey
12
16
 
13
17
  begin
14
18
  example.run
@@ -22,6 +26,13 @@ describe Cornucopia::Util::LogCapture do
22
26
  FileUtils.rm_rf Rails.root.join("features/cornucopia_report/")
23
27
  FileUtils.rm_rf Rails.root.join("features") if Dir[Rails.root.join("features/*")].empty?
24
28
  FileUtils.rm_rf file_name
29
+ FileUtils.rm_rf dest_folder
30
+
31
+ Dir[File.join(dest_folder, "sample_log*.log")].each do |file_name|
32
+ FileUtils.rm_rf file_name
33
+ end
34
+
35
+ FileUtils.cd pwd
25
36
  end
26
37
  end
27
38
 
@@ -88,6 +99,69 @@ describe Cornucopia::Util::LogCapture do
88
99
  end
89
100
  end
90
101
 
102
+ describe "#backup_log_files" do
103
+ before(:each) do
104
+ FileUtils.mkdir_p dest_folder
105
+ Cornucopia::Util::FileAsset.asset("report.js").add_file(file_name)
106
+ end
107
+
108
+ after(:each) do
109
+ Cornucopia::Util::Configuration.remove_log_file("sample_log.log")
110
+ end
111
+
112
+ it "goes up one level if you are in spec or features" do
113
+ Cornucopia::Util::Configuration.add_log_file("sample_log.log")
114
+
115
+ expect(File.exists?(file_name)).to be_truthy
116
+ expect(File.exists?(File.join(dest_folder, "sample_log.log"))).to be_falsey
117
+
118
+ new_root = Rails.root.join(%w(features spec).sample).to_s
119
+ expect(Rails).to receive(:root).at_least(1).and_return(new_root)
120
+
121
+ Cornucopia::Util::LogCapture.backup_log_files(dest_folder)
122
+
123
+ expect(File.exists?(File.join(dest_folder, "sample_log.log"))).to be_truthy
124
+ end
125
+
126
+ it "resolves file conflicts" do
127
+ file_num = rand(1..5)
128
+ Cornucopia::Util::Configuration.add_log_file("sample_log.log")
129
+
130
+ expect(File.exists?(file_name)).to be_truthy
131
+ FileUtils.cp file_name, File.join(dest_folder, "sample_log.log")
132
+ expect(File.exists?(File.join(dest_folder, "sample_log.log"))).to be_truthy
133
+
134
+ index = 1
135
+ while index < file_num
136
+ FileUtils.cp file_name, File.join(dest_folder, "sample_log_#{index}.log")
137
+ expect(File.exists?(File.join(dest_folder, "sample_log_#{index}.log"))).to be_truthy
138
+ index += 1
139
+ end
140
+ expect(File.exists?(File.join(dest_folder, "sample_log_#{file_num}.log"))).to be_falsey
141
+
142
+ new_root = Rails.root.join(%w(features spec).sample).to_s
143
+ expect(Rails).to receive(:root).at_least(1).and_return(new_root)
144
+
145
+ Cornucopia::Util::LogCapture.backup_log_files(dest_folder)
146
+
147
+ expect(File.exists?(File.join(dest_folder, "sample_log_#{file_num}.log"))).to be_truthy
148
+ end
149
+
150
+ it "does not require Rails" do
151
+ Cornucopia::Util::Configuration.add_log_file("sample_log.log")
152
+
153
+ expect(File.exists?(file_name)).to be_truthy
154
+ expect(File.exists?(File.join(dest_folder, "sample_log.log"))).to be_falsey
155
+
156
+ FileUtils.cd Rails.root.to_s
157
+ expect(Object).to receive(:const_defined?).at_least(1).with("Rails").and_return(false)
158
+
159
+ Cornucopia::Util::LogCapture.backup_log_files(dest_folder)
160
+
161
+ expect(File.exists?(File.join(dest_folder, "sample_log.log"))).to be_truthy
162
+ end
163
+ end
164
+
91
165
  describe "#capture_logs" do
92
166
  after(:each) do
93
167
  Cornucopia::Util::Configuration.remove_log_file("sample_log.log")
@@ -120,7 +194,7 @@ describe Cornucopia::Util::LogCapture do
120
194
  write_file.write(lines.join("\n"))
121
195
  end
122
196
 
123
- new_root = Rails.root.join(%w(features features).sample).to_s
197
+ new_root = Rails.root.join(%w(features spec).sample).to_s
124
198
  expect(Rails).to receive(:root).at_least(1).and_return(new_root)
125
199
  Cornucopia::Util::LogCapture.capture_logs(nil)
126
200
 
@@ -163,7 +163,13 @@ describe Cornucopia::Util::ReportBuilder do
163
163
  end
164
164
 
165
165
  it "calls #pretty_format on a sub-array after it is converted to a string" do
166
- expect(Cornucopia::Util::ReportBuilder).to receive(:pretty_format).exactly(4).and_call_original
166
+ expect(Cornucopia::Util::ReportBuilder).
167
+ to receive(:pretty_format).
168
+ with(anything, in_pretty_print: true).
169
+ exactly(4).
170
+ times.
171
+ and_call_original
172
+
167
173
  array_values << [1, 2, 3]
168
174
 
169
175
  formatted_code = Cornucopia::Util::ReportBuilder.pretty_array(array_values)
@@ -171,6 +177,17 @@ describe Cornucopia::Util::ReportBuilder do
171
177
  expect(formatted_code).to be_html_safe
172
178
  expect(formatted_code).to be == "Turner &amp;amp; Hooch\nBarney Rubble\nHarvey\n[1, 2, 3]"
173
179
  end
180
+
181
+ it "doesn't call #pretty_format on values if told not to" do
182
+ expect(Cornucopia::Util::ReportBuilder).not_to receive(:pretty_format)
183
+
184
+ array_values << [1, 2, 3]
185
+
186
+ formatted_code = Cornucopia::Util::ReportBuilder.pretty_array(array_values, false)
187
+
188
+ expect(formatted_code).to be_html_safe
189
+ expect(formatted_code).to be == "Turner &amp; Hooch\nBarney Rubble\nHarvey\n[1, 2, 3]"
190
+ end
174
191
  end
175
192
 
176
193
  describe "#pretty_object" do
@@ -1051,9 +1068,11 @@ describe Cornucopia::Util::ReportBuilder do
1051
1068
 
1052
1069
  report_page = Capybara::Node::Simple.new(File.read(current_report.report_base_page_name))
1053
1070
 
1054
- expect(report_page.all(".coruncopia-report-link").length).to eq 1
1071
+ expect(report_page.all(".coruncopia-report-link").length).to eq 2
1055
1072
  expect(report_page.all(".coruncopia-report-link")[0].text).to eq test_names[0]
1056
1073
  expect(report_page.all(".coruncopia-report-link")[0]["href"]).to eq "test_1/index.html"
1074
+ expect(report_page.all(".coruncopia-report-link")[1].text).to eq "test.log"
1075
+ expect(report_page.all(".coruncopia-report-link")[1]["href"]).to eq "log_files/test.log"
1057
1076
  end
1058
1077
 
1059
1078
  it "doesn't output anything if nothing is written to a section or table" do
@@ -1087,12 +1106,14 @@ describe Cornucopia::Util::ReportBuilder do
1087
1106
 
1088
1107
  report_page = Capybara::Node::Simple.new(File.read(current_report.report_base_page_name))
1089
1108
 
1090
- expect(report_page.all(".coruncopia-report-link").length).to eq test_names.length
1109
+ expect(report_page.all(".coruncopia-report-link").length).to eq (test_names.length + 1)
1091
1110
 
1092
1111
  test_names.each_with_index do |test_name, test_index|
1093
1112
  expect(report_page.all(".coruncopia-report-link")[test_index].text).to eq test_name
1094
1113
  expect(report_page.all(".coruncopia-report-link")[test_index]["href"]).to eq "test_#{test_index + 1}/index.html"
1095
1114
  end
1115
+ expect(report_page.all(".coruncopia-report-link")[-1].text).to eq "test.log"
1116
+ expect(report_page.all(".coruncopia-report-link")[-1]["href"]).to eq "log_files/test.log"
1096
1117
  end
1097
1118
 
1098
1119
  it "handles a test within a test as an independent test" do
@@ -1117,11 +1138,13 @@ describe Cornucopia::Util::ReportBuilder do
1117
1138
 
1118
1139
  report_page = Capybara::Node::Simple.new(File.read(current_report.report_base_page_name))
1119
1140
 
1120
- expect(report_page.all(".coruncopia-report-link").length).to eq 2
1141
+ expect(report_page.all(".coruncopia-report-link").length).to eq 3
1121
1142
  expect(report_page.all(".coruncopia-report-link")[0].text).to eq test_names[0]
1122
1143
  expect(report_page.all(".coruncopia-report-link")[0]["href"]).to eq "test_1/index.html"
1123
1144
  expect(report_page.all(".coruncopia-report-link")[1].text).to eq test_names[1]
1124
1145
  expect(report_page.all(".coruncopia-report-link")[1]["href"]).to eq "test_2/index.html"
1146
+ expect(report_page.all(".coruncopia-report-link")[2].text).to eq "test.log"
1147
+ expect(report_page.all(".coruncopia-report-link")[2]["href"]).to eq "log_files/test.log"
1125
1148
 
1126
1149
  report_page = Capybara::Node::Simple.new(File.read(File.join(current_report.report_folder_name, "test_1/report_contents.html")))
1127
1150
  expect(report_page.all(".cornucopia-section-label").length).to eq 1
@@ -1160,11 +1183,13 @@ describe Cornucopia::Util::ReportBuilder do
1160
1183
 
1161
1184
  report_page = Capybara::Node::Simple.new(File.read(current_report.report_base_page_name))
1162
1185
 
1163
- expect(report_page.all(".coruncopia-report-link").length).to eq 2
1186
+ expect(report_page.all(".coruncopia-report-link").length).to eq 3
1164
1187
  expect(report_page.all(".coruncopia-report-link")[0].text).to eq test_names[0]
1165
1188
  expect(report_page.all(".coruncopia-report-link")[0]["href"]).to eq "test_1/index.html"
1166
1189
  expect(report_page.all(".coruncopia-report-link")[1].text).to eq test_names[1]
1167
1190
  expect(report_page.all(".coruncopia-report-link")[1]["href"]).to eq "test_2/index.html"
1191
+ expect(report_page.all(".coruncopia-report-link")[2].text).to eq "test.log"
1192
+ expect(report_page.all(".coruncopia-report-link")[2]["href"]).to eq "log_files/test.log"
1168
1193
 
1169
1194
  report_page = Capybara::Node::Simple.new(File.read(File.join(current_report.report_folder_name, "test_1/report_contents.html")))
1170
1195
  expect(report_page.all(".cornucopia-section-label").length).to eq 2
@@ -1191,12 +1216,14 @@ describe Cornucopia::Util::ReportBuilder do
1191
1216
 
1192
1217
  report_page = Capybara::Node::Simple.new(File.read(current_report.report_base_page_name))
1193
1218
 
1194
- expect(report_page.all(".coruncopia-report-link").length).to eq 2
1219
+ expect(report_page.all(".coruncopia-report-link").length).to eq 3
1195
1220
 
1196
1221
  expect(report_page.all(".coruncopia-report-link")[0].text).to eq test_names[0]
1197
1222
  expect(report_page.all(".coruncopia-report-link")[0]["href"]).to eq "test_1/index.html"
1198
1223
  expect(report_page.all(".coruncopia-report-link")[1].text).to eq test_names[-1]
1199
1224
  expect(report_page.all(".coruncopia-report-link")[1]["href"]).to eq "test_2/index.html"
1225
+ expect(report_page.all(".coruncopia-report-link")[2].text).to eq "test.log"
1226
+ expect(report_page.all(".coruncopia-report-link")[2]["href"]).to eq "log_files/test.log"
1200
1227
  end
1201
1228
  end
1202
1229
 
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.21
4
+ version: 0.1.22
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-27 00:00:00.000000000 Z
11
+ date: 2015-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails