rspec-core 3.0.0.beta2 → 3.0.0.rc1
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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.yardopts +1 -0
- data/Changelog.md +297 -57
- data/README.md +16 -13
- data/lib/rspec/core.rb +55 -84
- data/lib/rspec/core/backport_random.rb +35 -3
- data/lib/rspec/core/backtrace_formatter.rb +4 -13
- data/lib/rspec/core/configuration.rb +330 -114
- data/lib/rspec/core/configuration_options.rb +38 -22
- data/lib/rspec/core/drb.rb +111 -0
- data/lib/rspec/core/dsl.rb +8 -2
- data/lib/rspec/core/example.rb +203 -94
- data/lib/rspec/core/example_group.rb +344 -316
- data/lib/rspec/core/filter_manager.rb +135 -90
- data/lib/rspec/core/flat_map.rb +1 -0
- data/lib/rspec/core/formatters.rb +50 -14
- data/lib/rspec/core/formatters/base_formatter.rb +32 -138
- data/lib/rspec/core/formatters/base_text_formatter.rb +32 -253
- data/lib/rspec/core/formatters/console_codes.rb +65 -0
- data/lib/rspec/core/formatters/deprecation_formatter.rb +24 -15
- data/lib/rspec/core/formatters/documentation_formatter.rb +7 -10
- data/lib/rspec/core/formatters/helpers.rb +15 -9
- data/lib/rspec/core/formatters/html_formatter.rb +17 -16
- data/lib/rspec/core/formatters/html_printer.rb +1 -0
- data/lib/rspec/core/formatters/json_formatter.rb +18 -20
- data/lib/rspec/core/formatters/profile_formatter.rb +67 -0
- data/lib/rspec/core/formatters/progress_formatter.rb +6 -7
- data/lib/rspec/core/formatters/snippet_extractor.rb +8 -6
- data/lib/rspec/core/hooks.rb +131 -125
- data/lib/rspec/core/memoized_helpers.rb +31 -26
- data/lib/rspec/core/metadata.rb +277 -184
- data/lib/rspec/core/metadata_filter.rb +86 -0
- data/lib/rspec/core/minitest_assertions_adapter.rb +28 -0
- data/lib/rspec/core/mocking_adapters/flexmock.rb +1 -1
- data/lib/rspec/core/mocking_adapters/mocha.rb +1 -1
- data/lib/rspec/core/mocking_adapters/null.rb +1 -1
- data/lib/rspec/core/mocking_adapters/rr.rb +2 -1
- data/lib/rspec/core/mocking_adapters/rspec.rb +1 -1
- data/lib/rspec/core/notifications.rb +435 -24
- data/lib/rspec/core/option_parser.rb +16 -25
- data/lib/rspec/core/ordering.rb +3 -1
- data/lib/rspec/core/pending.rb +57 -33
- data/lib/rspec/core/project_initializer.rb +2 -0
- data/lib/rspec/core/project_initializer/spec_helper.rb +5 -4
- data/lib/rspec/core/rake_task.rb +45 -20
- data/lib/rspec/core/reporter.rb +50 -22
- data/lib/rspec/core/ruby_project.rb +1 -0
- data/lib/rspec/core/runner.rb +93 -39
- data/lib/rspec/core/shared_context.rb +7 -5
- data/lib/rspec/core/shared_example_group.rb +85 -77
- data/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/lib/rspec/core/version.rb +3 -1
- data/lib/rspec/core/warnings.rb +35 -17
- data/lib/rspec/core/world.rb +57 -5
- metadata +56 -369
- metadata.gz.sig +3 -3
- data/features/README.md +0 -13
- data/features/Upgrade.md +0 -352
- data/features/command_line/README.md +0 -25
- data/features/command_line/dry_run.feature +0 -29
- data/features/command_line/example_name_option.feature +0 -97
- data/features/command_line/exit_status.feature +0 -82
- data/features/command_line/fail_fast.feature +0 -26
- data/features/command_line/format_option.feature +0 -75
- data/features/command_line/init.feature +0 -57
- data/features/command_line/line_number_appended_to_path.feature +0 -140
- data/features/command_line/line_number_option.feature +0 -58
- data/features/command_line/order.feature +0 -25
- data/features/command_line/pattern_option.feature +0 -49
- data/features/command_line/rake_task.feature +0 -122
- data/features/command_line/randomization.feature +0 -63
- data/features/command_line/require_option.feature +0 -43
- data/features/command_line/ruby.feature +0 -23
- data/features/command_line/tag.feature +0 -98
- data/features/command_line/warnings_option.feature +0 -29
- data/features/configuration/alias_example_to.feature +0 -39
- data/features/configuration/backtrace_exclusion_patterns.feature +0 -105
- data/features/configuration/custom_settings.feature +0 -84
- data/features/configuration/default_path.feature +0 -38
- data/features/configuration/deprecation_stream.feature +0 -58
- data/features/configuration/enable_global_dsl.feature +0 -54
- data/features/configuration/fail_fast.feature +0 -77
- data/features/configuration/failure_exit_code.feature +0 -36
- data/features/configuration/order_and_seed.feature +0 -3
- data/features/configuration/output_stream.feature +0 -24
- data/features/configuration/overriding_global_ordering.feature +0 -93
- data/features/configuration/pattern.feature +0 -38
- data/features/configuration/profile.feature +0 -220
- data/features/configuration/read_options_from_file.feature +0 -90
- data/features/configuration/run_all_when_everything_filtered.feature +0 -76
- data/features/example_groups/aliasing.feature +0 -48
- data/features/example_groups/basic_structure.feature +0 -55
- data/features/example_groups/shared_context.feature +0 -74
- data/features/example_groups/shared_examples.feature +0 -286
- data/features/expectation_framework_integration/configure_expectation_framework.feature +0 -102
- data/features/filtering/exclusion_filters.feature +0 -135
- data/features/filtering/if_and_unless.feature +0 -138
- data/features/filtering/inclusion_filters.feature +0 -101
- data/features/formatters/configurable_colors.feature +0 -31
- data/features/formatters/custom_formatter.feature +0 -68
- data/features/formatters/json_formatter.feature +0 -30
- data/features/formatters/regression_tests.feature +0 -95
- data/features/formatters/text_formatter.feature +0 -46
- data/features/helper_methods/arbitrary_methods.feature +0 -40
- data/features/helper_methods/let.feature +0 -50
- data/features/helper_methods/modules.feature +0 -146
- data/features/hooks/around_hooks.feature +0 -344
- data/features/hooks/before_and_after_hooks.feature +0 -427
- data/features/hooks/filtering.feature +0 -232
- data/features/metadata/current_example.feature +0 -56
- data/features/metadata/described_class.feature +0 -17
- data/features/metadata/user_defined.feature +0 -100
- data/features/mock_framework_integration/use_any_framework.feature +0 -106
- data/features/mock_framework_integration/use_flexmock.feature +0 -94
- data/features/mock_framework_integration/use_mocha.feature +0 -95
- data/features/mock_framework_integration/use_rr.feature +0 -96
- data/features/mock_framework_integration/use_rspec.feature +0 -95
- data/features/pending_and_skipped_examples/README.md +0 -3
- data/features/pending_and_skipped_examples/pending_examples.feature +0 -118
- data/features/pending_and_skipped_examples/skipped_examples.feature +0 -106
- data/features/spec_files/arbitrary_file_suffix.feature +0 -13
- data/features/step_definitions/additional_cli_steps.rb +0 -83
- data/features/subject/explicit_subject.feature +0 -101
- data/features/subject/implicit_subject.feature +0 -63
- data/features/subject/one_liner_syntax.feature +0 -71
- data/features/support/env.rb +0 -21
- data/features/support/require_expect_syntax_in_aruba_specs.rb +0 -16
- data/features/support/rubinius.rb +0 -6
- data/lib/rspec/core/command_line.rb +0 -35
- data/lib/rspec/core/drb_command_line.rb +0 -26
- data/lib/rspec/core/drb_options.rb +0 -87
- data/lib/rspec/core/formatters/legacy_formatter.rb +0 -227
- data/lib/rspec/core/shared_example_group/collection.rb +0 -27
- data/spec/command_line/order_spec.rb +0 -211
- data/spec/rspec/core/backtrace_formatter_spec.rb +0 -230
- data/spec/rspec/core/command_line_spec.rb +0 -112
- data/spec/rspec/core/command_line_spec_output.txt +0 -0
- data/spec/rspec/core/configuration_options_spec.rb +0 -409
- data/spec/rspec/core/configuration_spec.rb +0 -1479
- data/spec/rspec/core/drb_command_line_spec.rb +0 -102
- data/spec/rspec/core/drb_options_spec.rb +0 -193
- data/spec/rspec/core/dsl_spec.rb +0 -88
- data/spec/rspec/core/example_group_spec.rb +0 -1533
- data/spec/rspec/core/example_spec.rb +0 -642
- data/spec/rspec/core/filter_manager_spec.rb +0 -229
- data/spec/rspec/core/formatters/base_formatter_spec.rb +0 -64
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +0 -303
- data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +0 -208
- data/spec/rspec/core/formatters/documentation_formatter_spec.rb +0 -75
- data/spec/rspec/core/formatters/helpers_spec.rb +0 -104
- data/spec/rspec/core/formatters/html_formatted-2.1.0.html +0 -392
- data/spec/rspec/core/formatters/html_formatted.html +0 -397
- data/spec/rspec/core/formatters/html_formatter_spec.rb +0 -122
- data/spec/rspec/core/formatters/json_formatter_spec.rb +0 -206
- data/spec/rspec/core/formatters/legacy_formatter_spec.rb +0 -137
- data/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -43
- data/spec/rspec/core/formatters/snippet_extractor_spec.rb +0 -26
- data/spec/rspec/core/formatters_spec.rb +0 -120
- data/spec/rspec/core/hooks_filtering_spec.rb +0 -227
- data/spec/rspec/core/hooks_spec.rb +0 -294
- data/spec/rspec/core/memoized_helpers_spec.rb +0 -495
- data/spec/rspec/core/metadata_spec.rb +0 -491
- data/spec/rspec/core/option_parser_spec.rb +0 -262
- data/spec/rspec/core/ordering_spec.rb +0 -102
- data/spec/rspec/core/pending_example_spec.rb +0 -117
- data/spec/rspec/core/pending_spec.rb +0 -8
- data/spec/rspec/core/project_initializer_spec.rb +0 -73
- data/spec/rspec/core/rake_task_spec.rb +0 -146
- data/spec/rspec/core/random_spec.rb +0 -47
- data/spec/rspec/core/reporter_spec.rb +0 -155
- data/spec/rspec/core/resources/a_bar.rb +0 -0
- data/spec/rspec/core/resources/a_foo.rb +0 -0
- data/spec/rspec/core/resources/a_spec.rb +0 -1
- data/spec/rspec/core/resources/custom_example_group_runner.rb +0 -14
- data/spec/rspec/core/resources/formatter_specs.rb +0 -58
- data/spec/rspec/core/resources/utf8_encoded.rb +0 -8
- data/spec/rspec/core/rspec_matchers_spec.rb +0 -45
- data/spec/rspec/core/ruby_project_spec.rb +0 -26
- data/spec/rspec/core/runner_spec.rb +0 -151
- data/spec/rspec/core/shared_context_spec.rb +0 -102
- data/spec/rspec/core/shared_example_group/collection_spec.rb +0 -57
- data/spec/rspec/core/shared_example_group_spec.rb +0 -114
- data/spec/rspec/core/warnings_spec.rb +0 -29
- data/spec/rspec/core/world_spec.rb +0 -142
- data/spec/rspec/core_spec.rb +0 -91
- data/spec/spec_helper.rb +0 -160
- data/spec/support/config_options_helper.rb +0 -13
- data/spec/support/formatter_support.rb +0 -83
- data/spec/support/helper_methods.rb +0 -26
- data/spec/support/isolate_load_path_mutation.rb +0 -5
- data/spec/support/isolated_directory.rb +0 -10
- data/spec/support/isolated_home_directory.rb +0 -16
- data/spec/support/legacy_formatter_using_sub_classing_example.rb +0 -87
- data/spec/support/matchers.rb +0 -85
- data/spec/support/mathn_integration_support.rb +0 -12
- data/spec/support/old_style_formatter_example.rb +0 -69
- data/spec/support/shared_example_groups.rb +0 -13
- data/spec/support/spec_files.rb +0 -44
- data/spec/support/stderr_splitter.rb +0 -36
@@ -1,208 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'rspec/core/reporter'
|
3
|
-
require 'rspec/core/formatters/deprecation_formatter'
|
4
|
-
require 'tempfile'
|
5
|
-
|
6
|
-
module RSpec::Core::Formatters
|
7
|
-
RSpec.describe DeprecationFormatter do
|
8
|
-
include FormatterSupport
|
9
|
-
|
10
|
-
let(:summary_stream) { StringIO.new }
|
11
|
-
|
12
|
-
def notification(hash)
|
13
|
-
::RSpec::Core::Notifications::DeprecationNotification.from_hash(hash)
|
14
|
-
end
|
15
|
-
|
16
|
-
before do
|
17
|
-
setup_reporter deprecation_stream, summary_stream
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "#deprecation" do
|
21
|
-
|
22
|
-
context "with a File deprecation_stream", :slow do
|
23
|
-
let(:deprecation_stream) { File.open("#{Dir.tmpdir}/deprecation_summary_example_output", "w+") }
|
24
|
-
|
25
|
-
it "prints a message if provided, ignoring other data" do
|
26
|
-
send_notification :deprecation, notification(:message => "this message", :deprecated => "x", :replacement => "y", :call_site => "z")
|
27
|
-
deprecation_stream.rewind
|
28
|
-
expect(deprecation_stream.read).to eq "this message\n"
|
29
|
-
end
|
30
|
-
|
31
|
-
it "includes the method" do
|
32
|
-
send_notification :deprecation, notification(:deprecated => "i_am_deprecated")
|
33
|
-
deprecation_stream.rewind
|
34
|
-
expect(deprecation_stream.read).to match(/i_am_deprecated is deprecated/)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "includes the replacement" do
|
38
|
-
send_notification :deprecation, notification(:replacement => "use_me")
|
39
|
-
deprecation_stream.rewind
|
40
|
-
expect(deprecation_stream.read).to match(/Use use_me instead/)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "includes the call site if provided" do
|
44
|
-
send_notification :deprecation, notification(:call_site => "somewhere")
|
45
|
-
deprecation_stream.rewind
|
46
|
-
expect(deprecation_stream.read).to match(/Called from somewhere/)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context "with an IO deprecation stream" do
|
51
|
-
let(:deprecation_stream) { StringIO.new }
|
52
|
-
|
53
|
-
it "prints nothing" do
|
54
|
-
5.times { send_notification :deprecation, notification(:deprecated => 'i_am_deprecated') }
|
55
|
-
expect(deprecation_stream.string).to eq ""
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe "#deprecation_summary" do
|
61
|
-
let(:summary) { double }
|
62
|
-
|
63
|
-
context "with a File deprecation_stream", :slow do
|
64
|
-
let(:deprecation_stream) { File.open("#{Dir.tmpdir}/deprecation_summary_example_output", "w") }
|
65
|
-
|
66
|
-
it "prints a count of the deprecations" do
|
67
|
-
send_notification :deprecation, notification(:deprecated => 'i_am_deprecated')
|
68
|
-
send_notification :deprecation_summary, null_notification
|
69
|
-
expect(summary_stream.string).to match(/1 deprecation logged to .*deprecation_summary_example_output/)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "pluralizes the reported deprecation count for more than one deprecation" do
|
73
|
-
send_notification :deprecation, notification(:deprecated => 'i_am_deprecated')
|
74
|
-
send_notification :deprecation, notification(:deprecated => 'i_am_deprecated_also')
|
75
|
-
send_notification :deprecation_summary, null_notification
|
76
|
-
expect(summary_stream.string).to match(/2 deprecations/)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "is not printed when there are no deprecations" do
|
80
|
-
send_notification :deprecation_summary, null_notification
|
81
|
-
expect(summary_stream.string).to eq ""
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'uses synchronized/non-buffered output to work around odd duplicate output behavior we have observed' do
|
85
|
-
expect {
|
86
|
-
send_notification :deprecation, notification(:deprecated => 'foo')
|
87
|
-
}.to change { deprecation_stream.sync }.from(false).to(true)
|
88
|
-
end
|
89
|
-
|
90
|
-
it 'does not print duplicate messages' do
|
91
|
-
3.times { send_notification :deprecation, notification(:deprecated => 'foo') }
|
92
|
-
send_notification :deprecation_summary, null_notification
|
93
|
-
|
94
|
-
expect(summary_stream.string).to match(/1 deprecation/)
|
95
|
-
expect(File.read(deprecation_stream.path)).to eq("foo is deprecated.\n#{DeprecationFormatter::RAISE_ERROR_CONFIG_NOTICE}")
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
context "with an Error deprecation_stream" do
|
100
|
-
let(:deprecation_stream) { DeprecationFormatter::RaiseErrorStream.new }
|
101
|
-
|
102
|
-
it 'prints a summary of the number of deprecations found' do
|
103
|
-
expect { send_notification :deprecation, notification(:deprecated => 'foo') }.to raise_error(RSpec::Core::DeprecationError)
|
104
|
-
send_notification :deprecation_summary, null_notification
|
105
|
-
|
106
|
-
expect(summary_stream.string).to eq("\n1 deprecation found.\n")
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'pluralizes the count when it is greater than 1' do
|
110
|
-
expect { send_notification :deprecation, notification(:deprecated => 'foo') }.to raise_error(RSpec::Core::DeprecationError)
|
111
|
-
expect { send_notification :deprecation, notification(:deprecated => 'bar') }.to raise_error(RSpec::Core::DeprecationError)
|
112
|
-
|
113
|
-
send_notification :deprecation_summary, null_notification
|
114
|
-
|
115
|
-
expect(summary_stream.string).to eq("\n2 deprecations found.\n")
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context "with an IO deprecation_stream" do
|
120
|
-
let(:deprecation_stream) { StringIO.new }
|
121
|
-
|
122
|
-
it "groups similar deprecations together" do
|
123
|
-
send_notification :deprecation, notification(:deprecated => 'i_am_deprecated', :call_site => "foo.rb:1")
|
124
|
-
send_notification :deprecation, notification(:deprecated => 'i_am_a_different_deprecation')
|
125
|
-
send_notification :deprecation, notification(:deprecated => 'i_am_deprecated', :call_site => "foo.rb:2")
|
126
|
-
send_notification :deprecation_summary, null_notification
|
127
|
-
|
128
|
-
expected = <<-EOS.gsub(/^\s+\|/, '')
|
129
|
-
|
|
130
|
-
|Deprecation Warnings:
|
131
|
-
|
|
132
|
-
|i_am_a_different_deprecation is deprecated.
|
133
|
-
|
|
134
|
-
|i_am_deprecated is deprecated. Called from foo.rb:1.
|
135
|
-
|i_am_deprecated is deprecated. Called from foo.rb:2.
|
136
|
-
|
|
137
|
-
|#{DeprecationFormatter::RAISE_ERROR_CONFIG_NOTICE}
|
138
|
-
EOS
|
139
|
-
expect(deprecation_stream.string).to eq expected.chomp
|
140
|
-
end
|
141
|
-
|
142
|
-
it "limits the deprecation warnings after 3 calls" do
|
143
|
-
5.times { |i| send_notification :deprecation, notification(:deprecated => 'i_am_deprecated', :call_site => "foo.rb:#{i + 1}") }
|
144
|
-
send_notification :deprecation_summary, null_notification
|
145
|
-
expected = <<-EOS.gsub(/^\s+\|/, '')
|
146
|
-
|
|
147
|
-
|Deprecation Warnings:
|
148
|
-
|
|
149
|
-
|i_am_deprecated is deprecated. Called from foo.rb:1.
|
150
|
-
|i_am_deprecated is deprecated. Called from foo.rb:2.
|
151
|
-
|i_am_deprecated is deprecated. Called from foo.rb:3.
|
152
|
-
|Too many uses of deprecated 'i_am_deprecated'. Set config.deprecation_stream to a File for full output.
|
153
|
-
|
|
154
|
-
|#{DeprecationFormatter::RAISE_ERROR_CONFIG_NOTICE}
|
155
|
-
EOS
|
156
|
-
expect(deprecation_stream.string).to eq expected.chomp
|
157
|
-
end
|
158
|
-
|
159
|
-
it "limits :message deprecation warnings with different callsites after 3 calls" do
|
160
|
-
5.times do |n|
|
161
|
-
message = "This is a long string with some callsite info: /path/#{n}/to/some/file.rb:2#{n}3. And some more stuff can come after."
|
162
|
-
send_notification :deprecation, notification(:message => message)
|
163
|
-
end
|
164
|
-
send_notification :deprecation_summary, null_notification
|
165
|
-
expected = <<-EOS.gsub(/^\s+\|/, '')
|
166
|
-
|
|
167
|
-
|Deprecation Warnings:
|
168
|
-
|
|
169
|
-
|This is a long string with some callsite info: /path/0/to/some/file.rb:203. And some more stuff can come after.
|
170
|
-
|This is a long string with some callsite info: /path/1/to/some/file.rb:213. And some more stuff can come after.
|
171
|
-
|This is a long string with some callsite info: /path/2/to/some/file.rb:223. And some more stuff can come after.
|
172
|
-
|Too many similar deprecation messages reported, disregarding further reports. Set config.deprecation_stream to a File for full output.
|
173
|
-
|
|
174
|
-
|#{DeprecationFormatter::RAISE_ERROR_CONFIG_NOTICE}
|
175
|
-
EOS
|
176
|
-
expect(deprecation_stream.string).to eq expected.chomp
|
177
|
-
end
|
178
|
-
|
179
|
-
it "prints the true deprecation count to the summary_stream" do
|
180
|
-
5.times { |i| send_notification :deprecation, notification(:deprecated => 'i_am_deprecated', :call_site => "foo.rb:#{i + 1}") }
|
181
|
-
5.times do |n|
|
182
|
-
send_notification :deprecation, notification(:message => "callsite info: /path/#{n}/to/some/file.rb:2#{n}3. And some more stuff")
|
183
|
-
end
|
184
|
-
send_notification :deprecation_summary, null_notification
|
185
|
-
expect(summary_stream.string).to match(/10 deprecation warnings total/)
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'does not print duplicate messages' do
|
189
|
-
3.times { send_notification :deprecation, notification(:deprecated => 'foo') }
|
190
|
-
send_notification :deprecation_summary, null_notification
|
191
|
-
|
192
|
-
expect(summary_stream.string).to match(/1 deprecation/)
|
193
|
-
|
194
|
-
expected = <<-EOS.gsub(/^\s+\|/, '')
|
195
|
-
|
|
196
|
-
|Deprecation Warnings:
|
197
|
-
|
|
198
|
-
|foo is deprecated.
|
199
|
-
|
|
200
|
-
|#{DeprecationFormatter::RAISE_ERROR_CONFIG_NOTICE}
|
201
|
-
EOS
|
202
|
-
|
203
|
-
expect(deprecation_stream.string).to eq expected.chomp
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
207
|
-
end
|
208
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'rspec/core/formatters/documentation_formatter'
|
3
|
-
|
4
|
-
module RSpec::Core::Formatters
|
5
|
-
RSpec.describe DocumentationFormatter do
|
6
|
-
include FormatterSupport
|
7
|
-
|
8
|
-
before do
|
9
|
-
send_notification :start, count_notification(2)
|
10
|
-
allow(formatter).to receive(:color_enabled?).and_return(false)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "numbers the failures" do
|
14
|
-
send_notification :example_failed, example_notification( double("example 1",
|
15
|
-
:description => "first example",
|
16
|
-
:execution_result => {:status => 'failed', :exception => Exception.new }
|
17
|
-
))
|
18
|
-
send_notification :example_failed, example_notification( double("example 2",
|
19
|
-
:description => "second example",
|
20
|
-
:execution_result => {:status => 'failed', :exception => Exception.new }
|
21
|
-
))
|
22
|
-
|
23
|
-
expect(output.string).to match(/first example \(FAILED - 1\)/m)
|
24
|
-
expect(output.string).to match(/second example \(FAILED - 2\)/m)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "represents nested group using hierarchy tree" do
|
28
|
-
group = RSpec::Core::ExampleGroup.describe("root")
|
29
|
-
context1 = group.describe("context 1")
|
30
|
-
context1.example("nested example 1.1"){}
|
31
|
-
context1.example("nested example 1.2"){}
|
32
|
-
|
33
|
-
context11 = context1.describe("context 1.1")
|
34
|
-
context11.example("nested example 1.1.1"){}
|
35
|
-
context11.example("nested example 1.1.2"){}
|
36
|
-
|
37
|
-
context2 = group.describe("context 2")
|
38
|
-
context2.example("nested example 2.1"){}
|
39
|
-
context2.example("nested example 2.2"){}
|
40
|
-
|
41
|
-
group.run(reporter)
|
42
|
-
|
43
|
-
expect(output.string).to eql("
|
44
|
-
root
|
45
|
-
context 1
|
46
|
-
nested example 1.1
|
47
|
-
nested example 1.2
|
48
|
-
context 1.1
|
49
|
-
nested example 1.1.1
|
50
|
-
nested example 1.1.2
|
51
|
-
context 2
|
52
|
-
nested example 2.1
|
53
|
-
nested example 2.2
|
54
|
-
")
|
55
|
-
end
|
56
|
-
|
57
|
-
it "strips whitespace for each row" do
|
58
|
-
group = RSpec::Core::ExampleGroup.describe(" root ")
|
59
|
-
context1 = group.describe(" nested ")
|
60
|
-
context1.example(" example 1 ") {}
|
61
|
-
context1.example(" example 2 ", :pending => true){ fail }
|
62
|
-
context1.example(" example 3 ") { fail }
|
63
|
-
|
64
|
-
group.run(reporter)
|
65
|
-
|
66
|
-
expect(output.string).to eql("
|
67
|
-
root
|
68
|
-
nested
|
69
|
-
example 1
|
70
|
-
example 2 (PENDING: No reason given)
|
71
|
-
example 3 (FAILED - 1)
|
72
|
-
")
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,104 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'rspec/core/formatters/helpers'
|
3
|
-
|
4
|
-
RSpec.describe RSpec::Core::Formatters::Helpers do
|
5
|
-
let(:helper) { Object.new.extend(RSpec::Core::Formatters::Helpers) }
|
6
|
-
|
7
|
-
describe "format duration" do
|
8
|
-
context '< 1' do
|
9
|
-
it "returns '0.xxxxx seconds' formatted string" do
|
10
|
-
expect(helper.format_duration(0.123456)).to eq("0.12346 seconds")
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context '> 1 and < 60' do
|
15
|
-
it "returns 'xx.xx seconds' formatted string" do
|
16
|
-
expect(helper.format_duration(45.51)).to eq("45.51 seconds")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context '> 60 and < 120' do
|
21
|
-
it "returns 'x minute xx.xx seconds' formatted string" do
|
22
|
-
expect(helper.format_duration(70.14)).to eq("1 minute 10.14 seconds")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context '> 120 and < 300' do
|
27
|
-
it "returns 'x minutes xx.x seconds' formatted string" do
|
28
|
-
expect(helper.format_duration(135.14)).to eq("2 minutes 15.1 seconds")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context '> 300' do
|
33
|
-
it "returns 'x minutes xx seconds' formatted string" do
|
34
|
-
expect(helper.format_duration(335.14)).to eq("5 minutes 35 seconds")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context '= 61' do
|
39
|
-
it "returns 'x minute x second' formatted string" do
|
40
|
-
expect(helper.format_duration(61)).to eq("1 minute 1 second")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context '= 1' do
|
45
|
-
it "returns 'x second' formatted string" do
|
46
|
-
expect(helper.format_duration(1)).to eq("1 second")
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context 'with mathn loaded' do
|
51
|
-
include MathnIntegrationSupport
|
52
|
-
|
53
|
-
it "returns 'x minutes xx.x seconds' formatted string", :slow do
|
54
|
-
with_mathn_loaded do
|
55
|
-
expect(helper.format_duration(133.7)).to eq("2 minutes 13.7 seconds")
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe "format seconds" do
|
62
|
-
it "uses passed in precision if specified unless result is 0" do
|
63
|
-
expect(helper.format_seconds(0.01234, 2)).to eq("0.01")
|
64
|
-
end
|
65
|
-
|
66
|
-
context "sub second times" do
|
67
|
-
it "returns 5 digits of precision" do
|
68
|
-
expect(helper.format_seconds(0.000006)).to eq("0.00001")
|
69
|
-
end
|
70
|
-
|
71
|
-
it "strips off trailing zeroes beyond sub-second precision" do
|
72
|
-
expect(helper.format_seconds(0.020000)).to eq("0.02")
|
73
|
-
end
|
74
|
-
|
75
|
-
context "0" do
|
76
|
-
it "strips off trailing zeroes" do
|
77
|
-
expect(helper.format_seconds(0.00000000001)).to eq("0")
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context "> 1" do
|
82
|
-
it "strips off trailing zeroes" do
|
83
|
-
expect(helper.format_seconds(1.00000000001)).to eq("1")
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
context "second and greater times" do
|
89
|
-
|
90
|
-
it "returns 2 digits of precision" do
|
91
|
-
expect(helper.format_seconds(50.330340)).to eq("50.33")
|
92
|
-
end
|
93
|
-
|
94
|
-
it "returns human friendly elasped time" do
|
95
|
-
expect(helper.format_seconds(50.1)).to eq("50.1")
|
96
|
-
expect(helper.format_seconds(5)).to eq("5")
|
97
|
-
expect(helper.format_seconds(5.0)).to eq("5")
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
|
104
|
-
end
|
@@ -1,392 +0,0 @@
|
|
1
|
-
<html lang="en">
|
2
|
-
<head>
|
3
|
-
<title>RSpec results</title>
|
4
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
-
<meta http-equiv="Expires" content="-1">
|
6
|
-
<meta http-equiv="Pragma" content="no-cache">
|
7
|
-
<style type="text/css">
|
8
|
-
body {
|
9
|
-
margin: 0;
|
10
|
-
padding: 0;
|
11
|
-
background: #fff;
|
12
|
-
font-size: 80%;
|
13
|
-
}
|
14
|
-
</style>
|
15
|
-
<script type="text/javascript">
|
16
|
-
// <![CDATA[
|
17
|
-
|
18
|
-
function addClass(element_id, classname) {
|
19
|
-
document.getElementById(element_id).className += (" " + classname);
|
20
|
-
}
|
21
|
-
|
22
|
-
function removeClass(element_id, classname) {
|
23
|
-
var elem = document.getElementById(element_id);
|
24
|
-
var classlist = elem.className.replace(classname,'');
|
25
|
-
elem.className = classlist;
|
26
|
-
}
|
27
|
-
|
28
|
-
function moveProgressBar(percentDone) {
|
29
|
-
document.getElementById("rspec-header").style.width = percentDone +"%";
|
30
|
-
}
|
31
|
-
|
32
|
-
function makeRed(element_id) {
|
33
|
-
removeClass(element_id, 'passed');
|
34
|
-
removeClass(element_id, 'not_implemented');
|
35
|
-
addClass(element_id,'failed');
|
36
|
-
}
|
37
|
-
|
38
|
-
function makeYellow(element_id) {
|
39
|
-
var elem = document.getElementById(element_id);
|
40
|
-
if (elem.className.indexOf("failed") == -1) { // class doesn't includes failed
|
41
|
-
if (elem.className.indexOf("not_implemented") == -1) { // class doesn't include not_implemented
|
42
|
-
removeClass(element_id, 'passed');
|
43
|
-
addClass(element_id,'not_implemented');
|
44
|
-
}
|
45
|
-
}
|
46
|
-
}
|
47
|
-
|
48
|
-
function apply_filters() {
|
49
|
-
var passed_filter = document.getElementById('passed_checkbox').checked;
|
50
|
-
var failed_filter = document.getElementById('failed_checkbox').checked;
|
51
|
-
var pending_filter = document.getElementById('pending_checkbox').checked;
|
52
|
-
|
53
|
-
assign_display_style("example passed", passed_filter);
|
54
|
-
assign_display_style("example failed", failed_filter);
|
55
|
-
assign_display_style("example not_implemented", pending_filter);
|
56
|
-
|
57
|
-
assign_display_style_for_group("example_group passed", passed_filter);
|
58
|
-
assign_display_style_for_group("example_group not_implemented", pending_filter, pending_filter || passed_filter);
|
59
|
-
assign_display_style_for_group("example_group failed", failed_filter, failed_filter || pending_filter || passed_filter);
|
60
|
-
}
|
61
|
-
|
62
|
-
function get_display_style(display_flag) {
|
63
|
-
var style_mode = 'none';
|
64
|
-
if (display_flag == true) {
|
65
|
-
style_mode = 'block';
|
66
|
-
}
|
67
|
-
return style_mode;
|
68
|
-
}
|
69
|
-
|
70
|
-
function assign_display_style(classname, display_flag) {
|
71
|
-
var style_mode = get_display_style(display_flag);
|
72
|
-
var elems = document.getElementsByClassName(classname)
|
73
|
-
for (var i=0; i<elems.length;i++) {
|
74
|
-
elems[i].style.display = style_mode;
|
75
|
-
}
|
76
|
-
}
|
77
|
-
|
78
|
-
function assign_display_style_for_group(classname, display_flag, subgroup_flag) {
|
79
|
-
var display_style_mode = get_display_style(display_flag);
|
80
|
-
var subgroup_style_mode = get_display_style(subgroup_flag);
|
81
|
-
var elems = document.getElementsByClassName(classname)
|
82
|
-
for (var i=0; i<elems.length;i++) {
|
83
|
-
var style_mode = display_style_mode;
|
84
|
-
if ((display_flag != subgroup_flag) && (elems[i].getElementsByTagName('dt')[0].innerHTML.indexOf(", ") != -1)) {
|
85
|
-
elems[i].style.display = subgroup_style_mode;
|
86
|
-
} else {
|
87
|
-
elems[i].style.display = display_style_mode;
|
88
|
-
}
|
89
|
-
}
|
90
|
-
}
|
91
|
-
|
92
|
-
// ]]>
|
93
|
-
</script>
|
94
|
-
<style type="text/css">
|
95
|
-
#rspec-header {
|
96
|
-
background: #65C400; color: #fff; height: 4em;
|
97
|
-
}
|
98
|
-
|
99
|
-
.rspec-report h1 {
|
100
|
-
margin: 0px 10px 0px 10px;
|
101
|
-
padding: 10px;
|
102
|
-
font-family: "Lucida Grande", Helvetica, sans-serif;
|
103
|
-
font-size: 1.8em;
|
104
|
-
position: absolute;
|
105
|
-
}
|
106
|
-
|
107
|
-
#label {
|
108
|
-
float:left;
|
109
|
-
}
|
110
|
-
|
111
|
-
#display-filters {
|
112
|
-
float:left;
|
113
|
-
padding: 28px 0 0 40%;
|
114
|
-
font-family: "Lucida Grande", Helvetica, sans-serif;
|
115
|
-
}
|
116
|
-
|
117
|
-
#summary {
|
118
|
-
float:right;
|
119
|
-
padding: 5px 10px;
|
120
|
-
font-family: "Lucida Grande", Helvetica, sans-serif;
|
121
|
-
text-align: right;
|
122
|
-
}
|
123
|
-
|
124
|
-
#summary p {
|
125
|
-
margin: 0 0 0 2px;
|
126
|
-
}
|
127
|
-
|
128
|
-
#summary #totals {
|
129
|
-
font-size: 1.2em;
|
130
|
-
}
|
131
|
-
|
132
|
-
.example_group {
|
133
|
-
margin: 0 10px 5px;
|
134
|
-
background: #fff;
|
135
|
-
}
|
136
|
-
|
137
|
-
dl {
|
138
|
-
margin: 0; padding: 0 0 5px;
|
139
|
-
font: normal 11px "Lucida Grande", Helvetica, sans-serif;
|
140
|
-
}
|
141
|
-
|
142
|
-
dt {
|
143
|
-
padding: 3px;
|
144
|
-
background: #65C400;
|
145
|
-
color: #fff;
|
146
|
-
font-weight: bold;
|
147
|
-
}
|
148
|
-
|
149
|
-
dd {
|
150
|
-
margin: 5px 0 5px 5px;
|
151
|
-
padding: 3px 3px 3px 18px;
|
152
|
-
}
|
153
|
-
|
154
|
-
dd .duration {
|
155
|
-
padding-left: 5px;
|
156
|
-
text-align: right;
|
157
|
-
right: 0px;
|
158
|
-
float:right;
|
159
|
-
}
|
160
|
-
|
161
|
-
dd.example.passed {
|
162
|
-
border-left: 5px solid #65C400;
|
163
|
-
border-bottom: 1px solid #65C400;
|
164
|
-
background: #DBFFB4; color: #3D7700;
|
165
|
-
}
|
166
|
-
|
167
|
-
dd.example.not_implemented {
|
168
|
-
border-left: 5px solid #FAF834;
|
169
|
-
border-bottom: 1px solid #FAF834;
|
170
|
-
background: #FCFB98; color: #131313;
|
171
|
-
}
|
172
|
-
|
173
|
-
dd.example.pending_fixed {
|
174
|
-
border-left: 5px solid #0000C2;
|
175
|
-
border-bottom: 1px solid #0000C2;
|
176
|
-
color: #0000C2; background: #D3FBFF;
|
177
|
-
}
|
178
|
-
|
179
|
-
dd.example.failed {
|
180
|
-
border-left: 5px solid #C20000;
|
181
|
-
border-bottom: 1px solid #C20000;
|
182
|
-
color: #C20000; background: #FFFBD3;
|
183
|
-
}
|
184
|
-
|
185
|
-
|
186
|
-
dt.not_implemented {
|
187
|
-
color: #000000; background: #FAF834;
|
188
|
-
}
|
189
|
-
|
190
|
-
dt.pending_fixed {
|
191
|
-
color: #FFFFFF; background: #C40D0D;
|
192
|
-
}
|
193
|
-
|
194
|
-
dt.failed {
|
195
|
-
color: #FFFFFF; background: #C40D0D;
|
196
|
-
}
|
197
|
-
|
198
|
-
|
199
|
-
#rspec-header.not_implemented {
|
200
|
-
color: #000000; background: #FAF834;
|
201
|
-
}
|
202
|
-
|
203
|
-
#rspec-header.pending_fixed {
|
204
|
-
color: #FFFFFF; background: #C40D0D;
|
205
|
-
}
|
206
|
-
|
207
|
-
#rspec-header.failed {
|
208
|
-
color: #FFFFFF; background: #C40D0D;
|
209
|
-
}
|
210
|
-
|
211
|
-
|
212
|
-
.backtrace {
|
213
|
-
color: #000;
|
214
|
-
font-size: 12px;
|
215
|
-
}
|
216
|
-
|
217
|
-
a {
|
218
|
-
color: #BE5C00;
|
219
|
-
}
|
220
|
-
|
221
|
-
/* Ruby code, style similar to vibrant ink */
|
222
|
-
.ruby {
|
223
|
-
font-size: 12px;
|
224
|
-
font-family: monospace;
|
225
|
-
color: white;
|
226
|
-
background-color: black;
|
227
|
-
padding: 0.1em 0 0.2em 0;
|
228
|
-
}
|
229
|
-
|
230
|
-
.ruby .keyword { color: #FF6600; }
|
231
|
-
.ruby .constant { color: #339999; }
|
232
|
-
.ruby .attribute { color: white; }
|
233
|
-
.ruby .global { color: white; }
|
234
|
-
.ruby .module { color: white; }
|
235
|
-
.ruby .class { color: white; }
|
236
|
-
.ruby .string { color: #66FF00; }
|
237
|
-
.ruby .ident { color: white; }
|
238
|
-
.ruby .method { color: #FFCC00; }
|
239
|
-
.ruby .number { color: white; }
|
240
|
-
.ruby .char { color: white; }
|
241
|
-
.ruby .comment { color: #9933CC; }
|
242
|
-
.ruby .symbol { color: white; }
|
243
|
-
.ruby .regex { color: #44B4CC; }
|
244
|
-
.ruby .punct { color: white; }
|
245
|
-
.ruby .escape { color: white; }
|
246
|
-
.ruby .interp { color: white; }
|
247
|
-
.ruby .expr { color: white; }
|
248
|
-
|
249
|
-
.ruby .offending { background-color: gray; }
|
250
|
-
.ruby .linenum {
|
251
|
-
width: 75px;
|
252
|
-
padding: 0.1em 1em 0.2em 0;
|
253
|
-
color: #000000;
|
254
|
-
background-color: #FFFBD3;
|
255
|
-
}
|
256
|
-
|
257
|
-
</style>
|
258
|
-
</head>
|
259
|
-
<body>
|
260
|
-
<div class="rspec-report">
|
261
|
-
|
262
|
-
<div id="rspec-header">
|
263
|
-
<div id="label">
|
264
|
-
<h1>RSpec Code Examples</h1>
|
265
|
-
</div>
|
266
|
-
|
267
|
-
<div id="display-filters">
|
268
|
-
<input id="passed_checkbox" name="passed_checkbox" type="checkbox" checked onchange="apply_filters()" value="1"> <label for="passed_checkbox">Passed</label>
|
269
|
-
<input id="failed_checkbox" name="failed_checkbox" type="checkbox" checked onchange="apply_filters()" value="2"> <label for="failed_checkbox">Failed</label>
|
270
|
-
<input id="pending_checkbox" name="pending_checkbox" type="checkbox" checked onchange="apply_filters()" value="3"> <label for="pending_checkbox">Pending</label>
|
271
|
-
</div>
|
272
|
-
|
273
|
-
<div id="summary">
|
274
|
-
<p id="totals"> </p>
|
275
|
-
<p id="duration"> </p>
|
276
|
-
</div>
|
277
|
-
</div>
|
278
|
-
|
279
|
-
|
280
|
-
<div class="results">
|
281
|
-
<div id="div_group_1" class="example_group passed">
|
282
|
-
<dl style="margin-left: 0px;">
|
283
|
-
<dt id="example_group_1" class="passed">pending spec with no implementation</dt>
|
284
|
-
<script type="text/javascript">makeYellow('rspec-header');</script>
|
285
|
-
<script type="text/javascript">makeYellow('div_group_1');</script>
|
286
|
-
<script type="text/javascript">makeYellow('example_group_1');</script>
|
287
|
-
<script type="text/javascript">moveProgressBar('14.2');</script>
|
288
|
-
<dd class="example not_implemented"><span class="not_implemented_spec_name">is pending (PENDING: Not yet implemented)</span></dd>
|
289
|
-
</dl>
|
290
|
-
</div>
|
291
|
-
<div id="div_group_2" class="example_group passed">
|
292
|
-
<dl style="margin-left: 0px;">
|
293
|
-
<dt id="example_group_2" class="passed">pending command with block format</dt>
|
294
|
-
</dl>
|
295
|
-
</div>
|
296
|
-
<div id="div_group_3" class="example_group passed">
|
297
|
-
<dl style="margin-left: 15px;">
|
298
|
-
<dt id="example_group_3" class="passed">with content that would fail</dt>
|
299
|
-
<script type="text/javascript">moveProgressBar('28.5');</script>
|
300
|
-
<dd class="example passed"><span class="passed_spec_name">is pending</span><span class='duration'>n.nnnns</span></dd>
|
301
|
-
</dl>
|
302
|
-
</div>
|
303
|
-
<div id="div_group_4" class="example_group passed">
|
304
|
-
<dl style="margin-left: 15px;">
|
305
|
-
<dt id="example_group_4" class="passed">with content that would pass</dt>
|
306
|
-
<script type="text/javascript">makeRed('rspec-header');</script>
|
307
|
-
<script type="text/javascript">makeRed('div_group_4');</script>
|
308
|
-
<script type="text/javascript">makeRed('example_group_4');</script>
|
309
|
-
<script type="text/javascript">moveProgressBar('42.8');</script>
|
310
|
-
<dd class="example pending_fixed">
|
311
|
-
<span class="failed_spec_name">fails</span>
|
312
|
-
<span class="duration">n.nnnns</span>
|
313
|
-
<div class="failure" id="failure_1">
|
314
|
-
<div class="message"><pre>RSpec::Core::Pending::PendingExampleFixedError</pre></div>
|
315
|
-
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:18</pre></div>
|
316
|
-
<pre class="ruby"><code><span class="linenum">16</span> context <span class="string"><span class="delimiter">"</span><span class="content">with content that would pass</span><span class="delimiter">"</span></span> <span class="keyword">do</span>
|
317
|
-
<span class="linenum">17</span> it <span class="string"><span class="delimiter">"</span><span class="content">fails</span><span class="delimiter">"</span></span> <span class="keyword">do</span>
|
318
|
-
<span class="offending"><span class="linenum">18</span> pending <span class="keyword">do</span></span>
|
319
|
-
<span class="linenum">19</span> expect(<span class="integer">1</span>).to eq(<span class="integer">1</span>)
|
320
|
-
<span class="linenum">20</span> <span class="keyword">end</span></code></pre>
|
321
|
-
</div>
|
322
|
-
</dd>
|
323
|
-
</dl>
|
324
|
-
</div>
|
325
|
-
<div id="div_group_5" class="example_group passed">
|
326
|
-
<dl style="margin-left: 0px;">
|
327
|
-
<dt id="example_group_5" class="passed">passing spec</dt>
|
328
|
-
<script type="text/javascript">moveProgressBar('57.1');</script>
|
329
|
-
<dd class="example passed">
|
330
|
-
<span class="passed_spec_name">passes</span><span class="duration">n.nnnns</span>
|
331
|
-
</dd>
|
332
|
-
</dl>
|
333
|
-
</div>
|
334
|
-
<div id="div_group_6" class="example_group passed">
|
335
|
-
<dl style="margin-left: 0px;">
|
336
|
-
<dt id="example_group_6" class="passed">failing spec</dt>
|
337
|
-
<script type="text/javascript">makeRed('div_group_6');</script>
|
338
|
-
<script type="text/javascript">makeRed('example_group_6');</script>
|
339
|
-
<script type="text/javascript">moveProgressBar('71.4');</script>
|
340
|
-
<dd class="example failed">
|
341
|
-
<span class="failed_spec_name">fails</span>
|
342
|
-
<span class="duration">n.nnnns</span>
|
343
|
-
<div class="failure" id="failure_2">
|
344
|
-
<div class="message"><pre>
|
345
|
-
expected: 2
|
346
|
-
got: 1
|
347
|
-
|
348
|
-
(compared using ==)
|
349
|
-
</pre></div>
|
350
|
-
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:33</pre></div>
|
351
|
-
<pre class="ruby"><code><span class="linenum">31</span><span class="constant">RSpec</span>.describe <span class="string"><span class="delimiter">"</span><span class="content">failing spec</span><span class="delimiter">"</span></span> <span class="keyword">do</span>
|
352
|
-
<span class="linenum">32</span> it <span class="string"><span class="delimiter">"</span><span class="content">fails</span><span class="delimiter">"</span></span> <span class="keyword">do</span>
|
353
|
-
<span class="offending"><span class="linenum">33</span> expect(<span class="integer">1</span>).to eq(<span class="integer">2</span>)</span>
|
354
|
-
<span class="linenum">34</span> <span class="keyword">end</span>
|
355
|
-
<span class="linenum">35</span><span class="keyword">end</span></code></pre>
|
356
|
-
</div>
|
357
|
-
</dd>
|
358
|
-
</dl>
|
359
|
-
</div>
|
360
|
-
<div id="div_group_7" class="example_group passed">
|
361
|
-
<dl style="margin-left: 0px;">
|
362
|
-
<dt id="example_group_7" class="passed">a failing spec with odd backtraces</dt>
|
363
|
-
<script type="text/javascript">makeRed('div_group_7');</script>
|
364
|
-
<script type="text/javascript">makeRed('example_group_7');</script>
|
365
|
-
<script type="text/javascript">moveProgressBar('85.7');</script>
|
366
|
-
<dd class="example failed">
|
367
|
-
<span class="failed_spec_name">fails with a backtrace that has no file</span>
|
368
|
-
<span class="duration">n.nnnns</span>
|
369
|
-
<div class="failure" id="failure_3">
|
370
|
-
<div class="message"><pre>foo</pre></div>
|
371
|
-
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:41</pre></div>
|
372
|
-
<pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for (erb)</span></code></pre>
|
373
|
-
</div>
|
374
|
-
</dd>
|
375
|
-
<script type="text/javascript">moveProgressBar('100.0');</script>
|
376
|
-
<dd class="example failed">
|
377
|
-
<span class="failed_spec_name">fails with a backtrace containing an erb file</span>
|
378
|
-
<span class="duration">n.nnnns</span>
|
379
|
-
<div class="failure" id="failure_4">
|
380
|
-
<div class="message"><pre>Exception</pre></div>
|
381
|
-
<div class="backtrace"><pre></pre></div>
|
382
|
-
<pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for /foo.html.erb</span></code></pre>
|
383
|
-
</div>
|
384
|
-
</dd>
|
385
|
-
</dl>
|
386
|
-
</div>
|
387
|
-
<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>n.nnnn seconds</strong>";</script>
|
388
|
-
<script type="text/javascript">document.getElementById('totals').innerHTML = "7 examples, 4 failures, 1 pending";</script>
|
389
|
-
</div>
|
390
|
-
</div>
|
391
|
-
</body>
|
392
|
-
</html>
|