rspec-core 2.99.0.beta1 → 2.99.0.beta2
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.
- data/Changelog.md +40 -0
- data/features/command_line/line_number_option.feature +2 -2
- data/features/example_groups/basic_structure.feature +1 -1
- data/features/expectation_framework_integration/configure_expectation_framework.feature +1 -1
- data/features/subject/explicit_subject.feature +1 -1
- data/features/subject/one_liner_syntax.feature +71 -0
- data/lib/rspec/core/caller_filter.rb +50 -45
- data/lib/rspec/core/configuration.rb +59 -19
- data/lib/rspec/core/example.rb +1 -1
- data/lib/rspec/core/example_group.rb +20 -0
- data/lib/rspec/core/formatters/base_text_formatter.rb +3 -1
- data/lib/rspec/core/formatters/deprecation_formatter.rb +34 -16
- data/lib/rspec/core/memoized_helpers.rb +40 -6
- data/lib/rspec/core/option_parser.rb +1 -1
- data/lib/rspec/core/pending.rb +29 -1
- data/lib/rspec/core/reporter.rb +4 -1
- data/lib/rspec/core/version.rb +1 -1
- data/spec/rspec/core/configuration_options_spec.rb +3 -3
- data/spec/rspec/core/configuration_spec.rb +96 -4
- data/spec/rspec/core/example_group_spec.rb +36 -14
- data/spec/rspec/core/filter_manager_spec.rb +2 -2
- data/spec/rspec/core/formatters/base_text_formatter_spec.rb +1 -1
- data/spec/rspec/core/formatters/deprecation_formatter_spec.rb +46 -0
- data/spec/rspec/core/formatters/{html_formatted-1.8.7-jruby.html → html_formatted.html} +24 -30
- data/spec/rspec/core/formatters/html_formatter_spec.rb +30 -15
- data/spec/rspec/core/formatters/{html_formatted-1.9.3-jruby.html → text_mate_formatted.html} +24 -30
- data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +38 -33
- data/spec/rspec/core/memoized_helpers_spec.rb +11 -2
- data/spec/rspec/core/pending_example_spec.rb +26 -0
- data/spec/rspec/core/reporter_spec.rb +26 -0
- data/spec/rspec/core_spec.rb +1 -1
- data/spec/support/sandboxed_mock_space.rb +16 -0
- data/spec/support/silence_dsl_deprecations.rb +1 -1
- metadata +35 -40
- checksums.yaml +0 -15
- data/features/subject/implicit_receiver.feature +0 -29
- data/spec/rspec/core/formatters/html_formatted-1.8.7-rbx.html +0 -477
- data/spec/rspec/core/formatters/html_formatted-1.8.7.html +0 -414
- data/spec/rspec/core/formatters/html_formatted-1.9.2.html +0 -425
- data/spec/rspec/core/formatters/html_formatted-1.9.3-rbx.html +0 -477
- data/spec/rspec/core/formatters/html_formatted-1.9.3.html +0 -425
- data/spec/rspec/core/formatters/html_formatted-2.0.0.html +0 -425
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +0 -395
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-rbx.html +0 -477
- data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +0 -414
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +0 -425
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.3-jruby.html +0 -404
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.3-rbx.html +0 -477
- data/spec/rspec/core/formatters/text_mate_formatted-1.9.3.html +0 -425
- data/spec/rspec/core/formatters/text_mate_formatted-2.0.0.html +0 -425
@@ -693,30 +693,52 @@ module RSpec::Core
|
|
693
693
|
end
|
694
694
|
end
|
695
695
|
|
696
|
-
%w[pending
|
697
|
-
describe "
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
end
|
696
|
+
%w[pending skip].each do |method_name|
|
697
|
+
describe ".#{method_name}" do
|
698
|
+
let(:group) { ExampleGroup.describe.tap {|x|
|
699
|
+
x.send(method_name, "is pending") { }
|
700
|
+
}}
|
702
701
|
|
703
702
|
it "generates a pending example" do
|
704
|
-
|
705
|
-
expect(
|
703
|
+
group.run
|
704
|
+
expect(group.examples.first).to be_pending
|
705
|
+
end
|
706
|
+
|
707
|
+
it "sets the pending message" do
|
708
|
+
group.run
|
709
|
+
expect(group.examples.first.metadata[:execution_result][:pending_message]).to eq(RSpec::Core::Pending::NO_REASON_GIVEN)
|
706
710
|
end
|
711
|
+
end
|
712
|
+
end
|
707
713
|
|
708
|
-
|
709
|
-
|
710
|
-
|
714
|
+
%w[xit xspecify xexample].each do |method_name|
|
715
|
+
describe ".#{method_name}" do
|
716
|
+
let(:group) { ExampleGroup.describe.tap {|x|
|
717
|
+
x.send(method_name, "is pending") { }
|
718
|
+
}}
|
719
|
+
|
720
|
+
it "generates a pending example" do
|
721
|
+
group.run
|
722
|
+
expect(group.examples.first).to be_pending
|
711
723
|
end
|
712
724
|
|
713
|
-
it "sets the pending message"
|
714
|
-
|
715
|
-
expect(
|
725
|
+
it "sets the pending message" do
|
726
|
+
group.run
|
727
|
+
expect(group.examples.first.metadata[:execution_result][:pending_message]).to eq("Temporarily disabled with #{method_name}")
|
716
728
|
end
|
717
729
|
end
|
718
730
|
end
|
719
731
|
|
732
|
+
describe '::pending' do
|
733
|
+
it 'shows upgrade warning' do
|
734
|
+
expect_warn_deprecation_with_call_site(
|
735
|
+
"example_group_spec.rb", __LINE__ + 3
|
736
|
+
)
|
737
|
+
group = ExampleGroup.describe
|
738
|
+
group.send(:pending, "is pending") { }
|
739
|
+
end
|
740
|
+
end
|
741
|
+
|
720
742
|
describe "adding examples" do
|
721
743
|
|
722
744
|
it "allows adding an example using 'it'" do
|
@@ -165,7 +165,7 @@ module RSpec::Core
|
|
165
165
|
describe "#inclusions#description" do
|
166
166
|
it 'cleans up the description' do
|
167
167
|
project_dir = File.expand_path('.')
|
168
|
-
expect(lambda { }.inspect).to include(project_dir) unless defined?(JRUBY_VERSION) && JRUBY_VERSION
|
168
|
+
expect(lambda { }.inspect).to include(project_dir) unless defined?(JRUBY_VERSION) && JRUBY_VERSION =~ /\A1\.7/
|
169
169
|
expect(lambda { }.inspect).to include(' (lambda)') if RUBY_VERSION > '1.9'
|
170
170
|
expect(lambda { }.inspect).to include('0x')
|
171
171
|
|
@@ -181,7 +181,7 @@ module RSpec::Core
|
|
181
181
|
describe "#exclusions#description" do
|
182
182
|
it 'cleans up the description' do
|
183
183
|
project_dir = File.expand_path('.')
|
184
|
-
expect(lambda { }.inspect).to include(project_dir) unless defined?(JRUBY_VERSION) && JRUBY_VERSION
|
184
|
+
expect(lambda { }.inspect).to include(project_dir) unless defined?(JRUBY_VERSION) && JRUBY_VERSION =~ /\A1\.7/
|
185
185
|
expect(lambda { }.inspect).to include(' (lambda)') if RUBY_VERSION > '1.9'
|
186
186
|
expect(lambda { }.inspect).to include('0x')
|
187
187
|
|
@@ -202,7 +202,7 @@ describe RSpec::Core::Formatters::BaseTextFormatter do
|
|
202
202
|
end
|
203
203
|
|
204
204
|
context "with show_failures_in_pending_blocks setting enabled" do
|
205
|
-
before { RSpec.configuration.
|
205
|
+
before { RSpec.configuration.instance_variable_set(:@show_failures_in_pending_blocks, true) }
|
206
206
|
|
207
207
|
it "preserves formatting" do
|
208
208
|
group.example("example name") { pending { expect("this").to eq("that") } }
|
@@ -108,6 +108,27 @@ module RSpec::Core::Formatters
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
+
context "with an Error deprecation_stream" do
|
112
|
+
let(:deprecation_stream) { DeprecationFormatter::RaiseErrorStream.new }
|
113
|
+
|
114
|
+
it 'prints a summary of the number of deprecations found' do
|
115
|
+
expect { formatter.deprecation(:deprecated => 'foo') }.to raise_error(RSpec::Core::DeprecationError)
|
116
|
+
|
117
|
+
formatter.deprecation_summary
|
118
|
+
|
119
|
+
expect(summary_stream.string).to eq("\n1 deprecation found.\n")
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'pluralizes the count when it is greater than 1' do
|
123
|
+
expect { formatter.deprecation(:deprecated => 'foo') }.to raise_error(RSpec::Core::DeprecationError)
|
124
|
+
expect { formatter.deprecation(:deprecated => 'bar') }.to raise_error(RSpec::Core::DeprecationError)
|
125
|
+
|
126
|
+
formatter.deprecation_summary
|
127
|
+
|
128
|
+
expect(summary_stream.string).to eq("\n2 deprecations found.\n")
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
111
132
|
context "with an IO deprecation_stream" do
|
112
133
|
let(:deprecation_stream) { StringIO.new }
|
113
134
|
|
@@ -148,6 +169,31 @@ module RSpec::Core::Formatters
|
|
148
169
|
expect(deprecation_stream.string).to eq expected.chomp
|
149
170
|
end
|
150
171
|
|
172
|
+
it "limits deprecations warnings by optional type" do
|
173
|
+
5.times {|i|
|
174
|
+
formatter.deprecation(
|
175
|
+
:deprecated => "i_am_deprecated #{i}",
|
176
|
+
:call_site => "foo.rb:#{i + 1}",
|
177
|
+
:type => 'i_am_deprecated'
|
178
|
+
)
|
179
|
+
}
|
180
|
+
formatter.deprecation_summary
|
181
|
+
|
182
|
+
expected = <<-EOS.gsub(/^\s+\|/, '')
|
183
|
+
|
|
184
|
+
|Deprecation Warnings:
|
185
|
+
|
|
186
|
+
|i_am_deprecated 0 is deprecated. Called from foo.rb:1.
|
187
|
+
|i_am_deprecated 1 is deprecated. Called from foo.rb:2.
|
188
|
+
|i_am_deprecated 2 is deprecated. Called from foo.rb:3.
|
189
|
+
|Too many uses of deprecated 'i_am_deprecated'. Set config.deprecation_stream to a File for full output.
|
190
|
+
|
|
191
|
+
|#{DeprecationFormatter::RAISE_ERROR_CONFIG_NOTICE}
|
192
|
+
EOS
|
193
|
+
expect(deprecation_stream.string).to eq expected.chomp
|
194
|
+
end
|
195
|
+
|
196
|
+
|
151
197
|
it "limits :message deprecation warnings with different callsites after 3 calls" do
|
152
198
|
5.times do |n|
|
153
199
|
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."
|
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
<html lang='en'>
|
1
|
+
<html lang="en">
|
3
2
|
<head>
|
4
3
|
<title>RSpec results</title>
|
5
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
|
6
|
-
<meta http-equiv="Expires" content="-1"
|
7
|
-
<meta http-equiv="Pragma" content="no-cache"
|
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">
|
8
7
|
<style type="text/css">
|
9
8
|
body {
|
10
9
|
margin: 0;
|
@@ -266,14 +265,14 @@ a {
|
|
266
265
|
</div>
|
267
266
|
|
268
267
|
<div id="display-filters">
|
269
|
-
<input id="passed_checkbox"
|
270
|
-
<input id="failed_checkbox"
|
271
|
-
<input id="pending_checkbox" name="pending_checkbox" type="checkbox" checked
|
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>
|
272
271
|
</div>
|
273
272
|
|
274
273
|
<div id="summary">
|
275
|
-
<p id="totals"
|
276
|
-
<p id="duration"
|
274
|
+
<p id="totals"> </p>
|
275
|
+
<p id="duration"> </p>
|
277
276
|
</div>
|
278
277
|
</div>
|
279
278
|
|
@@ -316,12 +315,9 @@ a {
|
|
316
315
|
<span class="duration">n.nnnns</span>
|
317
316
|
<div class="failure" id="failure_1">
|
318
317
|
<div class="message"><pre>RSpec::Core::Pending::PendingExampleFixedError</pre></div>
|
319
|
-
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:18
|
320
|
-
|
321
|
-
|
322
|
-
./spec/support/sandboxed_mock_space.rb:32:in `sandboxed'</pre></div>
|
323
|
-
<pre class="ruby"><code><span class="linenum">16</span> <span class="ident">context</span> <span class="punct">"</span><span class="string">with content that would pass</span><span class="punct">"</span> <span class="keyword">do</span>
|
324
|
-
<span class="linenum">17</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
318
|
+
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:18</pre></div>
|
319
|
+
<pre class="ruby"><code><span class="linenum">16</span> <span class="ident">context</span> <span class="punct">"</span><span class="string">with content that would pass</span><span class="punct">"</span> <span class="keyword">do</span>
|
320
|
+
<span class="linenum">17</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
325
321
|
<span class="offending"><span class="linenum">18</span> <span class="ident">pending</span> <span class="keyword">do</span></span>
|
326
322
|
<span class="linenum">19</span> <span class="ident">expect</span><span class="punct">(</span><span class="number">1</span><span class="punct">).</span><span class="ident">to</span> <span class="ident">eq</span><span class="punct">(</span><span class="number">1</span><span class="punct">)</span>
|
327
323
|
<span class="linenum">20</span> <span class="keyword">end</span></code></pre>
|
@@ -333,7 +329,9 @@ a {
|
|
333
329
|
<dl style="margin-left: 0px;">
|
334
330
|
<dt id="example_group_5" class="passed">passing spec</dt>
|
335
331
|
<script type="text/javascript">moveProgressBar('57.1');</script>
|
336
|
-
<dd class="example passed"
|
332
|
+
<dd class="example passed">
|
333
|
+
<span class="passed_spec_name">passes</span><span class="duration">n.nnnns</span>
|
334
|
+
</dd>
|
337
335
|
</dl>
|
338
336
|
</div>
|
339
337
|
<div id="div_group_6" class="example_group passed">
|
@@ -352,12 +350,9 @@ expected: 2
|
|
352
350
|
|
353
351
|
(compared using ==)
|
354
352
|
</pre></div>
|
355
|
-
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:33
|
356
|
-
|
357
|
-
|
358
|
-
./spec/support/sandboxed_mock_space.rb:32:in `sandboxed'</pre></div>
|
359
|
-
<pre class="ruby"><code><span class="linenum">31</span><span class="ident">describe</span> <span class="punct">"</span><span class="string">failing spec</span><span class="punct">"</span> <span class="keyword">do</span>
|
360
|
-
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
353
|
+
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:33</pre></div>
|
354
|
+
<pre class="ruby"><code><span class="linenum">31</span><span class="ident">describe</span> <span class="punct">"</span><span class="string">failing spec</span><span class="punct">"</span> <span class="keyword">do</span>
|
355
|
+
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
361
356
|
<span class="offending"><span class="linenum">33</span> <span class="ident">expect</span><span class="punct">(</span><span class="number">1</span><span class="punct">).</span><span class="ident">to</span> <span class="ident">eq</span><span class="punct">(</span><span class="number">2</span><span class="punct">)</span></span>
|
362
357
|
<span class="linenum">34</span> <span class="keyword">end</span>
|
363
358
|
<span class="linenum">35</span><span class="keyword">end</span></code></pre>
|
@@ -376,11 +371,7 @@ expected: 2
|
|
376
371
|
<span class="duration">n.nnnns</span>
|
377
372
|
<div class="failure" id="failure_3">
|
378
373
|
<div class="message"><pre>foo</pre></div>
|
379
|
-
<div class="backtrace"><pre>
|
380
|
-
./spec/rspec/core/resources/formatter_specs.rb:41:in `(root)'
|
381
|
-
./spec/support/sandboxed_mock_space.rb:33:in `sandboxed'
|
382
|
-
./spec/support/sandboxed_mock_space.rb:72:in `sandboxed'
|
383
|
-
./spec/support/sandboxed_mock_space.rb:32:in `sandboxed'</pre></div>
|
374
|
+
<div class="backtrace"><pre>./spec/rspec/core/resources/formatter_specs.rb:41</pre></div>
|
384
375
|
<pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for (erb)</span></code></pre>
|
385
376
|
</div>
|
386
377
|
</dd>
|
@@ -390,7 +381,7 @@ expected: 2
|
|
390
381
|
<span class="duration">n.nnnns</span>
|
391
382
|
<div class="failure" id="failure_4">
|
392
383
|
<div class="message"><pre>Exception</pre></div>
|
393
|
-
<div class="backtrace"><pre
|
384
|
+
<div class="backtrace"><pre></pre></div>
|
394
385
|
<pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for /foo.html.erb</span></code></pre>
|
395
386
|
</div>
|
396
387
|
</dd>
|
@@ -401,4 +392,7 @@ expected: 2
|
|
401
392
|
</div>
|
402
393
|
</div>
|
403
394
|
</body>
|
404
|
-
</html>
|
395
|
+
</html><html><p>
|
396
|
+
|
397
|
+
2 deprecation warnings total
|
398
|
+
</p></html>
|
@@ -7,19 +7,10 @@ module RSpec
|
|
7
7
|
module Core
|
8
8
|
module Formatters
|
9
9
|
describe HtmlFormatter, :if => RUBY_VERSION =~ /^(1.8.7|1.9.2|1.9.3|2.0.0)$/ do
|
10
|
-
let(:suffix) {
|
11
|
-
if ::RUBY_PLATFORM == 'java'
|
12
|
-
"-jruby"
|
13
|
-
elsif defined?(Rubinius)
|
14
|
-
"-rbx"
|
15
|
-
else
|
16
|
-
""
|
17
|
-
end
|
18
|
-
}
|
19
10
|
|
20
11
|
let(:root) { File.expand_path("#{File.dirname(__FILE__)}/../../../..") }
|
21
12
|
let(:expected_file) do
|
22
|
-
"#{File.dirname(__FILE__)}/html_formatted
|
13
|
+
"#{File.dirname(__FILE__)}/html_formatted.html"
|
23
14
|
end
|
24
15
|
|
25
16
|
let(:generated_html) do
|
@@ -35,7 +26,20 @@ module RSpec
|
|
35
26
|
command_line = RSpec::Core::CommandLine.new(options)
|
36
27
|
command_line.instance_variable_get("@configuration").backtrace_cleaner.inclusion_patterns = []
|
37
28
|
command_line.run(err, out)
|
38
|
-
out.string.gsub(/\d+\.\d+(s| seconds)/, "n.nnnn\\1")
|
29
|
+
html = out.string.gsub(/\d+\.\d+(s| seconds)/, "n.nnnn\\1")
|
30
|
+
|
31
|
+
actual_doc = Nokogiri::HTML(html)
|
32
|
+
actual_doc.css("div.backtrace pre").each do |elem|
|
33
|
+
# This is to minimize churn on backtrace lines that we do not
|
34
|
+
# assert on anyway.
|
35
|
+
backtrace = elem.inner_html.lines.
|
36
|
+
select {|e| e =~ /formatter_specs\.rb/ }.
|
37
|
+
map {|x| x.chomp.split(":")[0..1].join(':') }.
|
38
|
+
join("\n")
|
39
|
+
|
40
|
+
elem.inner_html = backtrace
|
41
|
+
end
|
42
|
+
actual_doc.inner_html
|
39
43
|
end
|
40
44
|
|
41
45
|
let(:expected_html) do
|
@@ -68,7 +72,18 @@ module RSpec
|
|
68
72
|
select {|e| e =~ /formatter_specs\.rb/}
|
69
73
|
end
|
70
74
|
|
71
|
-
describe 'produced HTML' do
|
75
|
+
describe 'produced HTML', :if => RUBY_VERSION <= '2.0.0' do
|
76
|
+
# Rubies before 2 are a wild west of different outputs, and it's not
|
77
|
+
# worth the effort to maintain accurate fixtures for all of them.
|
78
|
+
# Since we are verifying fixtures on other rubies, if this code at
|
79
|
+
# least runs we can be reasonably confident the output is right since
|
80
|
+
# behaviour variances that we care about across versions is neglible.
|
81
|
+
it 'is present' do
|
82
|
+
expect(generated_html).to be
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe 'produced HTML', :slow, :if => RUBY_VERSION >= '2.0.0' do
|
72
87
|
def build_and_verify_formatter_output
|
73
88
|
Dir.chdir(root) do
|
74
89
|
actual_doc = Nokogiri::HTML(generated_html)
|
@@ -92,15 +107,15 @@ module RSpec
|
|
92
107
|
end
|
93
108
|
end
|
94
109
|
|
95
|
-
it "
|
110
|
+
it "is identical to the one we designed manually" do
|
96
111
|
build_and_verify_formatter_output
|
97
112
|
end
|
98
113
|
|
99
114
|
context 'with mathn loaded' do
|
100
115
|
include MathnIntegrationSupport
|
101
116
|
|
102
|
-
it "
|
103
|
-
with_mathn_loaded{ build_and_verify_formatter_output }
|
117
|
+
it "is identical to the one we designed manually", :slow do
|
118
|
+
with_mathn_loaded { build_and_verify_formatter_output }
|
104
119
|
end
|
105
120
|
end
|
106
121
|
end
|
data/spec/rspec/core/formatters/{html_formatted-1.9.3-jruby.html → text_mate_formatted.html}
RENAMED
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
<html lang='en'>
|
1
|
+
<html lang="en">
|
3
2
|
<head>
|
4
3
|
<title>RSpec results</title>
|
5
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
|
6
|
-
<meta http-equiv="Expires" content="-1"
|
7
|
-
<meta http-equiv="Pragma" content="no-cache"
|
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">
|
8
7
|
<style type="text/css">
|
9
8
|
body {
|
10
9
|
margin: 0;
|
@@ -266,14 +265,14 @@ a {
|
|
266
265
|
</div>
|
267
266
|
|
268
267
|
<div id="display-filters">
|
269
|
-
<input id="passed_checkbox"
|
270
|
-
<input id="failed_checkbox"
|
271
|
-
<input id="pending_checkbox" name="pending_checkbox" type="checkbox" checked
|
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>
|
272
271
|
</div>
|
273
272
|
|
274
273
|
<div id="summary">
|
275
|
-
<p id="totals"
|
276
|
-
<p id="duration"
|
274
|
+
<p id="totals"> </p>
|
275
|
+
<p id="duration"> </p>
|
277
276
|
</div>
|
278
277
|
</div>
|
279
278
|
|
@@ -316,12 +315,9 @@ a {
|
|
316
315
|
<span class="duration">n.nnnns</span>
|
317
316
|
<div class="failure" id="failure_1">
|
318
317
|
<div class="message"><pre>RSpec::Core::Pending::PendingExampleFixedError</pre></div>
|
319
|
-
<div class="backtrace"><pre
|
320
|
-
|
321
|
-
|
322
|
-
././spec/support/sandboxed_mock_space.rb:32:in `sandboxed'</pre></div>
|
323
|
-
<pre class="ruby"><code><span class="linenum">16</span> <span class="ident">context</span> <span class="punct">"</span><span class="string">with content that would pass</span><span class="punct">"</span> <span class="keyword">do</span>
|
324
|
-
<span class="linenum">17</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
318
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file</pre></div>
|
319
|
+
<pre class="ruby"><code><span class="linenum">16</span> <span class="ident">context</span> <span class="punct">"</span><span class="string">with content that would pass</span><span class="punct">"</span> <span class="keyword">do</span>
|
320
|
+
<span class="linenum">17</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
325
321
|
<span class="offending"><span class="linenum">18</span> <span class="ident">pending</span> <span class="keyword">do</span></span>
|
326
322
|
<span class="linenum">19</span> <span class="ident">expect</span><span class="punct">(</span><span class="number">1</span><span class="punct">).</span><span class="ident">to</span> <span class="ident">eq</span><span class="punct">(</span><span class="number">1</span><span class="punct">)</span>
|
327
323
|
<span class="linenum">20</span> <span class="keyword">end</span></code></pre>
|
@@ -333,7 +329,9 @@ a {
|
|
333
329
|
<dl style="margin-left: 0px;">
|
334
330
|
<dt id="example_group_5" class="passed">passing spec</dt>
|
335
331
|
<script type="text/javascript">moveProgressBar('57.1');</script>
|
336
|
-
<dd class="example passed"
|
332
|
+
<dd class="example passed">
|
333
|
+
<span class="passed_spec_name">passes</span><span class="duration">n.nnnns</span>
|
334
|
+
</dd>
|
337
335
|
</dl>
|
338
336
|
</div>
|
339
337
|
<div id="div_group_6" class="example_group passed">
|
@@ -352,12 +350,9 @@ expected: 2
|
|
352
350
|
|
353
351
|
(compared using ==)
|
354
352
|
</pre></div>
|
355
|
-
<div class="backtrace"><pre
|
356
|
-
|
357
|
-
|
358
|
-
././spec/support/sandboxed_mock_space.rb:32:in `sandboxed'</pre></div>
|
359
|
-
<pre class="ruby"><code><span class="linenum">31</span><span class="ident">describe</span> <span class="punct">"</span><span class="string">failing spec</span><span class="punct">"</span> <span class="keyword">do</span>
|
360
|
-
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
353
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file</pre></div>
|
354
|
+
<pre class="ruby"><code><span class="linenum">31</span><span class="ident">describe</span> <span class="punct">"</span><span class="string">failing spec</span><span class="punct">"</span> <span class="keyword">do</span>
|
355
|
+
<span class="linenum">32</span> <span class="ident">it</span> <span class="punct">"</span><span class="string">fails</span><span class="punct">"</span> <span class="keyword">do</span>
|
361
356
|
<span class="offending"><span class="linenum">33</span> <span class="ident">expect</span><span class="punct">(</span><span class="number">1</span><span class="punct">).</span><span class="ident">to</span> <span class="ident">eq</span><span class="punct">(</span><span class="number">2</span><span class="punct">)</span></span>
|
362
357
|
<span class="linenum">34</span> <span class="keyword">end</span>
|
363
358
|
<span class="linenum">35</span><span class="keyword">end</span></code></pre>
|
@@ -376,11 +371,7 @@ expected: 2
|
|
376
371
|
<span class="duration">n.nnnns</span>
|
377
372
|
<div class="failure" id="failure_3">
|
378
373
|
<div class="message"><pre>foo</pre></div>
|
379
|
-
<div class="backtrace"><pre>
|
380
|
-
./spec/rspec/core/resources/formatter_specs.rb:41:in `(root)'
|
381
|
-
././spec/support/sandboxed_mock_space.rb:33:in `sandboxed'
|
382
|
-
././spec/support/sandboxed_mock_space.rb:72:in `sandboxed'
|
383
|
-
././spec/support/sandboxed_mock_space.rb:32:in `sandboxed'</pre></div>
|
374
|
+
<div class="backtrace"><pre><a href="txmt://open?url=file</pre></div>
|
384
375
|
<pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for (erb)</span></code></pre>
|
385
376
|
</div>
|
386
377
|
</dd>
|
@@ -390,7 +381,7 @@ expected: 2
|
|
390
381
|
<span class="duration">n.nnnns</span>
|
391
382
|
<div class="failure" id="failure_4">
|
392
383
|
<div class="message"><pre>Exception</pre></div>
|
393
|
-
<div class="backtrace"><pre
|
384
|
+
<div class="backtrace"><pre></pre></div>
|
394
385
|
<pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for /foo.html.erb</span></code></pre>
|
395
386
|
</div>
|
396
387
|
</dd>
|
@@ -401,4 +392,7 @@ expected: 2
|
|
401
392
|
</div>
|
402
393
|
</div>
|
403
394
|
</body>
|
404
|
-
</html>
|
395
|
+
</html><html><p>
|
396
|
+
|
397
|
+
2 deprecation warnings total
|
398
|
+
</p></html>
|
@@ -7,19 +7,10 @@ module RSpec
|
|
7
7
|
module Core
|
8
8
|
module Formatters
|
9
9
|
describe TextMateFormatter do
|
10
|
-
let(:suffix) {
|
11
|
-
if ::RUBY_PLATFORM == 'java'
|
12
|
-
"-jruby"
|
13
|
-
elsif defined?(Rubinius)
|
14
|
-
"-rbx"
|
15
|
-
else
|
16
|
-
""
|
17
|
-
end
|
18
|
-
}
|
19
10
|
|
20
11
|
let(:root) { File.expand_path("#{File.dirname(__FILE__)}/../../../..") }
|
21
12
|
let(:expected_file) do
|
22
|
-
"#{File.dirname(__FILE__)}/text_mate_formatted
|
13
|
+
"#{File.dirname(__FILE__)}/text_mate_formatted.html"
|
23
14
|
end
|
24
15
|
|
25
16
|
let(:generated_html) do
|
@@ -35,7 +26,20 @@ module RSpec
|
|
35
26
|
command_line = RSpec::Core::CommandLine.new(options)
|
36
27
|
command_line.instance_variable_get("@configuration").backtrace_cleaner.inclusion_patterns = []
|
37
28
|
command_line.run(err, out)
|
38
|
-
out.string.gsub(/\d+\.\d+(s| seconds)/, "n.nnnn\\1")
|
29
|
+
html = out.string.gsub(/\d+\.\d+(s| seconds)/, "n.nnnn\\1")
|
30
|
+
|
31
|
+
actual_doc = Nokogiri::HTML(html)
|
32
|
+
actual_doc.css("div.backtrace pre").each do |elem|
|
33
|
+
# This is to minimize churn on backtrace lines that we do not
|
34
|
+
# assert on anyway.
|
35
|
+
backtrace = elem.inner_html.lines.
|
36
|
+
select {|e| e =~ /formatter_specs\.rb/ }.
|
37
|
+
map {|x| x.chomp.split(":")[0..1].join(':') }.
|
38
|
+
join("\n")
|
39
|
+
|
40
|
+
elem.inner_html = backtrace
|
41
|
+
end
|
42
|
+
actual_doc.inner_html
|
39
43
|
end
|
40
44
|
|
41
45
|
let(:expected_html) do
|
@@ -61,33 +65,34 @@ module RSpec
|
|
61
65
|
end
|
62
66
|
end
|
63
67
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
expect(actual_doc.inner_html).to eq(expected_doc.inner_html)
|
74
|
-
|
75
|
-
backtrace_lines.each do |backtrace_line|
|
76
|
-
expect(backtrace_line['href']).to include("txmt://open?url=")
|
77
|
-
end
|
68
|
+
describe 'produced HTML', :if => RUBY_VERSION <= '2.0.0' do
|
69
|
+
# Rubies before 2 are a wild west of different outputs, and it's not
|
70
|
+
# worth the effort to maintain accurate fixtures for all of them.
|
71
|
+
# Since we are verifying fixtures on other rubies, if this code at
|
72
|
+
# least runs we can be reasonably confident the output is right since
|
73
|
+
# behaviour variances that we care about across versions is neglible.
|
74
|
+
it 'is present' do
|
75
|
+
expect(generated_html).to be
|
78
76
|
end
|
79
77
|
end
|
80
78
|
|
81
|
-
|
82
|
-
|
83
|
-
|
79
|
+
context 'produced HTML', :if => RUBY_VERSION >= '2.0.0' do
|
80
|
+
it "produces HTML identical to the one we designed manually" do
|
81
|
+
Dir.chdir(root) do
|
82
|
+
actual_doc = Nokogiri::HTML(generated_html)
|
83
|
+
backtrace_lines = actual_doc.search("div.backtrace a")
|
84
|
+
actual_doc.search("div.backtrace").remove
|
84
85
|
|
85
|
-
|
86
|
-
|
87
|
-
end
|
86
|
+
expected_doc = Nokogiri::HTML(expected_html)
|
87
|
+
expected_doc.search("div.backtrace").remove
|
88
88
|
|
89
|
-
|
90
|
-
|
89
|
+
expect(actual_doc.inner_html).to eq(expected_doc.inner_html)
|
90
|
+
|
91
|
+
backtrace_lines.each do |backtrace_line|
|
92
|
+
expect(backtrace_line['href']).to include("txmt://open?url=")
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
91
96
|
end
|
92
97
|
|
93
98
|
end
|