rspec-core 2.11.1 → 2.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/Changelog.md +59 -0
  2. data/README.md +22 -0
  3. data/features/command_line/example_name_option.feature +5 -5
  4. data/features/command_line/exit_status.feature +6 -6
  5. data/features/command_line/format_option.feature +2 -2
  6. data/features/command_line/line_number_appended_to_path.feature +2 -2
  7. data/features/command_line/line_number_option.feature +2 -2
  8. data/features/command_line/pattern_option.feature +2 -2
  9. data/features/command_line/rake_task.feature +62 -8
  10. data/features/command_line/ruby.feature +1 -1
  11. data/features/command_line/tag.feature +1 -1
  12. data/features/configuration/alias_example_to.feature +2 -2
  13. data/features/configuration/custom_settings.feature +3 -3
  14. data/features/configuration/default_path.feature +3 -3
  15. data/features/configuration/fail_fast.feature +5 -5
  16. data/features/configuration/read_options_from_file.feature +4 -4
  17. data/features/example_groups/basic_structure.feature +2 -2
  18. data/features/example_groups/shared_context.feature +3 -3
  19. data/features/example_groups/shared_examples.feature +25 -7
  20. data/features/expectation_framework_integration/configure_expectation_framework.feature +6 -6
  21. data/features/filtering/exclusion_filters.feature +5 -5
  22. data/features/filtering/if_and_unless.feature +5 -5
  23. data/features/filtering/inclusion_filters.feature +5 -5
  24. data/features/filtering/run_all_when_everything_filtered.feature +3 -3
  25. data/features/formatters/custom_formatter.feature +2 -2
  26. data/features/formatters/json_formatter.feature +30 -0
  27. data/features/formatters/text_formatter.feature +5 -5
  28. data/features/helper_methods/arbitrary_methods.feature +2 -2
  29. data/features/helper_methods/let.feature +2 -2
  30. data/features/helper_methods/modules.feature +6 -6
  31. data/features/hooks/around_hooks.feature +11 -11
  32. data/features/hooks/before_and_after_hooks.feature +15 -11
  33. data/features/hooks/filtering.feature +6 -6
  34. data/features/metadata/current_example.feature +1 -1
  35. data/features/metadata/described_class.feature +1 -1
  36. data/features/metadata/user_defined.feature +4 -4
  37. data/features/mock_framework_integration/use_any_framework.feature +6 -6
  38. data/features/mock_framework_integration/use_flexmock.feature +5 -5
  39. data/features/mock_framework_integration/use_mocha.feature +5 -5
  40. data/features/mock_framework_integration/use_rr.feature +5 -5
  41. data/features/mock_framework_integration/use_rspec.feature +5 -5
  42. data/features/pending/pending_examples.feature +11 -11
  43. data/features/spec_files/arbitrary_file_suffix.feature +1 -1
  44. data/features/step_definitions/additional_cli_steps.rb +2 -0
  45. data/features/subject/attribute_of_subject.feature +5 -5
  46. data/features/subject/explicit_subject.feature +5 -5
  47. data/features/subject/implicit_receiver.feature +2 -2
  48. data/features/subject/implicit_subject.feature +3 -3
  49. data/lib/autotest/rspec2.rb +1 -1
  50. data/lib/rspec/core.rb +53 -32
  51. data/lib/rspec/core/configuration.rb +123 -15
  52. data/lib/rspec/core/configuration_options.rb +17 -2
  53. data/lib/rspec/core/example.rb +5 -4
  54. data/lib/rspec/core/example_group.rb +19 -9
  55. data/lib/rspec/core/extensions/ordered.rb +12 -6
  56. data/lib/rspec/core/formatters.rb +55 -0
  57. data/lib/rspec/core/formatters/base_formatter.rb +43 -38
  58. data/lib/rspec/core/formatters/base_text_formatter.rb +9 -5
  59. data/lib/rspec/core/formatters/documentation_formatter.rb +1 -1
  60. data/lib/rspec/core/formatters/helpers.rb +30 -5
  61. data/lib/rspec/core/formatters/html_formatter.rb +58 -368
  62. data/lib/rspec/core/formatters/html_printer.rb +407 -0
  63. data/lib/rspec/core/formatters/json_formatter.rb +73 -0
  64. data/lib/rspec/core/formatters/snippet_extractor.rb +3 -1
  65. data/lib/rspec/core/hooks.rb +4 -4
  66. data/lib/rspec/core/metadata.rb +14 -6
  67. data/lib/rspec/core/mocking/with_mocha.rb +25 -2
  68. data/lib/rspec/core/mocking/with_rspec.rb +6 -2
  69. data/lib/rspec/core/option_parser.rb +28 -7
  70. data/lib/rspec/core/project_initializer.rb +0 -1
  71. data/lib/rspec/core/rake_task.rb +49 -38
  72. data/lib/rspec/core/reporter.rb +2 -2
  73. data/lib/rspec/core/shared_example_group.rb +89 -41
  74. data/lib/rspec/core/subject.rb +6 -2
  75. data/lib/rspec/core/version.rb +1 -1
  76. data/lib/rspec/core/world.rb +2 -2
  77. data/spec/autotest/rspec_spec.rb +6 -1
  78. data/spec/command_line/order_spec.rb +67 -0
  79. data/spec/rspec/core/configuration_options_spec.rb +45 -38
  80. data/spec/rspec/core/configuration_spec.rb +219 -44
  81. data/spec/rspec/core/deprecations_spec.rb +9 -0
  82. data/spec/rspec/core/drb_command_line_spec.rb +1 -7
  83. data/spec/rspec/core/drb_options_spec.rb +1 -1
  84. data/spec/rspec/core/dsl_spec.rb +17 -9
  85. data/spec/rspec/core/example_group_spec.rb +51 -5
  86. data/spec/rspec/core/example_spec.rb +39 -7
  87. data/spec/rspec/core/filter_manager_spec.rb +20 -30
  88. data/spec/rspec/core/formatters/base_formatter_spec.rb +29 -1
  89. data/spec/rspec/core/formatters/base_text_formatter_spec.rb +6 -2
  90. data/spec/rspec/core/formatters/helpers_spec.rb +12 -0
  91. data/spec/rspec/core/formatters/html_formatted-1.8.7-rbx.html +462 -0
  92. data/spec/rspec/core/formatters/html_formatted-1.9.2-jruby.html +410 -0
  93. data/spec/rspec/core/formatters/html_formatted-1.9.3-rbx.html +462 -0
  94. data/spec/rspec/core/formatters/html_formatter_spec.rb +11 -3
  95. data/spec/rspec/core/formatters/json_formatter_spec.rb +110 -0
  96. data/spec/rspec/core/formatters/snippet_extractor_spec.rb +8 -0
  97. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-rbx.html +462 -0
  98. data/spec/rspec/core/formatters/text_mate_formatted-1.9.2-jruby.html +410 -0
  99. data/spec/rspec/core/formatters/text_mate_formatted-1.9.3-rbx.html +462 -0
  100. data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +11 -3
  101. data/spec/rspec/core/hooks_filtering_spec.rb +6 -6
  102. data/spec/rspec/core/metadata_spec.rb +29 -0
  103. data/spec/rspec/core/option_parser_spec.rb +42 -0
  104. data/spec/rspec/core/project_initializer_spec.rb +2 -2
  105. data/spec/rspec/core/rake_task_spec.rb +60 -17
  106. data/spec/rspec/core/reporter_spec.rb +17 -0
  107. data/spec/rspec/core/runner_spec.rb +1 -0
  108. data/spec/rspec/core/shared_example_group_spec.rb +17 -5
  109. data/spec/rspec/core/subject_spec.rb +11 -0
  110. data/spec/spec_helper.rb +32 -2
  111. data/spec/support/config_options_helper.rb +1 -10
  112. data/spec/support/helper_methods.rb +13 -0
  113. data/spec/support/isolated_directory.rb +10 -0
  114. data/spec/support/isolated_home_directory.rb +16 -0
  115. metadata +145 -148
  116. data/lib/rspec/core/extensions.rb +0 -4
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require 'spec_helper'
2
3
  require 'rspec/core/formatters/html_formatter'
3
4
  require 'nokogiri'
@@ -6,10 +7,17 @@ module RSpec
6
7
  module Core
7
8
  module Formatters
8
9
  describe HtmlFormatter, :if => RUBY_VERSION =~ /^(1.8.7|1.9.2|1.9.3)$/ do
9
- let(:jruby?) { ::RUBY_PLATFORM == 'java' }
10
- let(:root) { File.expand_path("#{File.dirname(__FILE__)}/../../../..") }
11
- let(:suffix) { jruby? ? '-jruby' : '' }
10
+ let(:suffix) {
11
+ if ::RUBY_PLATFORM == 'java'
12
+ "-jruby"
13
+ elsif defined?(Rubinius)
14
+ "-rbx"
15
+ else
16
+ ""
17
+ end
18
+ }
12
19
 
20
+ let(:root) { File.expand_path("#{File.dirname(__FILE__)}/../../../..") }
13
21
  let(:expected_file) do
14
22
  "#{File.dirname(__FILE__)}/html_formatted-#{::RUBY_VERSION}#{suffix}.html"
15
23
  end
@@ -0,0 +1,110 @@
1
+ require 'spec_helper'
2
+ require 'rspec/core/formatters/json_formatter'
3
+ require 'json'
4
+ require 'rspec/core/reporter'
5
+
6
+ # todo, someday:
7
+ # it "lists the groups (describe and context) separately"
8
+ # it "includes full 'execution_result'"
9
+ # it "relativizes backtrace paths"
10
+ # it "includes profile information (implements dump_profile)"
11
+ # it "shows the pending message if one was given"
12
+ # it "shows the seed if run was randomized"
13
+ # it "lists pending specs that were fixed"
14
+ describe RSpec::Core::Formatters::JsonFormatter do
15
+ let(:output) { StringIO.new }
16
+ let(:formatter) { RSpec::Core::Formatters::JsonFormatter.new(output) }
17
+ let(:reporter) { RSpec::Core::Reporter.new(formatter) }
18
+
19
+ it "outputs json (brittle high level functional test)" do
20
+ group = RSpec::Core::ExampleGroup.describe("one apiece") do
21
+ it("succeeds") { 1.should == 1 }
22
+ it("fails") { fail "eek" }
23
+ it("pends") { pending "world peace" }
24
+ end
25
+ succeeding_line = __LINE__ - 4
26
+ failing_line = __LINE__ - 4
27
+ pending_line = __LINE__ - 4
28
+
29
+ now = Time.now
30
+ Time.stub(:now).and_return(now)
31
+ reporter.report(2) do |r|
32
+ group.run(r)
33
+ end
34
+
35
+ # grab the actual backtrace -- kind of a cheat
36
+ failing_backtrace = formatter.output_hash[:examples][1][:exception][:backtrace]
37
+ this_file = relative_path(__FILE__)
38
+
39
+ expected = {
40
+ :examples => [
41
+ {
42
+ :description => "succeeds",
43
+ :full_description => "one apiece succeeds",
44
+ :status => "passed",
45
+ :file_path => this_file,
46
+ :line_number => succeeding_line,
47
+ },
48
+ {
49
+ :description => "fails",
50
+ :full_description => "one apiece fails",
51
+ :status => "failed",
52
+ :file_path => this_file,
53
+ :line_number => failing_line,
54
+ :exception => {:class => "RuntimeError", :message => "eek", :backtrace => failing_backtrace}
55
+ },
56
+ {
57
+ :description => "pends",
58
+ :full_description => "one apiece pends",
59
+ :status => "pending",
60
+ :file_path => this_file,
61
+ :line_number => pending_line,
62
+ },
63
+ ],
64
+ :summary => {
65
+ :duration => formatter.output_hash[:summary][:duration],
66
+ :example_count => 3,
67
+ :failure_count => 1,
68
+ :pending_count => 1,
69
+ },
70
+ :summary_line => "3 examples, 1 failure, 1 pending"
71
+ }
72
+ formatter.output_hash.should == expected
73
+ output.string.should == expected.to_json
74
+ end
75
+
76
+ describe "#stop" do
77
+ it "adds all examples to the output hash" do
78
+ formatter.stop
79
+ formatter.output_hash[:examples].should_not be_nil
80
+ end
81
+ end
82
+
83
+ describe "#close" do
84
+ it "outputs the results as a JSON string" do
85
+ output.string.should == ""
86
+ formatter.close
87
+ output.string.should == {}.to_json
88
+ end
89
+ end
90
+
91
+ describe "#message" do
92
+ it "adds a message to the messages list" do
93
+ formatter.message("good job")
94
+ formatter.output_hash[:messages].should == ["good job"]
95
+ end
96
+ end
97
+
98
+ describe "#dump_summary" do
99
+ it "adds summary info to the output hash" do
100
+ duration, example_count, failure_count, pending_count = 1.0, 2, 1, 1
101
+ formatter.dump_summary(duration, example_count, failure_count, pending_count)
102
+ summary = formatter.output_hash[:summary]
103
+ %w(duration example_count failure_count pending_count).each do |key|
104
+ summary[key.to_sym].should == eval(key)
105
+ end
106
+ summary_line = formatter.output_hash[:summary_line]
107
+ summary_line.should == "2 examples, 1 failure, 1 pending"
108
+ end
109
+ end
110
+ end
@@ -12,6 +12,14 @@ module RSpec
12
12
  it "falls back on a default message when it doesn't find the file" do
13
13
  RSpec::Core::Formatters::SnippetExtractor.new.lines_around("blech", 8).should eq("# Couldn't get snippet for blech")
14
14
  end
15
+
16
+ it "falls back on a default message when it gets a security error" do
17
+ message = nil
18
+ safely do
19
+ message = RSpec::Core::Formatters::SnippetExtractor.new.lines_around("blech", 8)
20
+ end
21
+ message.should eq("# Couldn't get snippet for blech")
22
+ end
15
23
  end
16
24
  end
17
25
  end
@@ -0,0 +1,462 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <title>RSpec results</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta http-equiv="Expires" content="-1" />
10
+ <meta http-equiv="Pragma" content="no-cache" />
11
+ <style type="text/css">
12
+ body {
13
+ margin: 0;
14
+ padding: 0;
15
+ background: #fff;
16
+ font-size: 80%;
17
+ }
18
+ </style>
19
+ <script type="text/javascript">
20
+ // <![CDATA[
21
+
22
+ function addClass(element_id, classname) {
23
+ document.getElementById(element_id).className += (" " + classname);
24
+ }
25
+
26
+ function removeClass(element_id, classname) {
27
+ var elem = document.getElementById(element_id);
28
+ var classlist = elem.className.replace(classname,'');
29
+ elem.className = classlist;
30
+ }
31
+
32
+ function moveProgressBar(percentDone) {
33
+ document.getElementById("rspec-header").style.width = percentDone +"%";
34
+ }
35
+
36
+ function makeRed(element_id) {
37
+ removeClass(element_id, 'passed');
38
+ removeClass(element_id, 'not_implemented');
39
+ addClass(element_id,'failed');
40
+ }
41
+
42
+ function makeYellow(element_id) {
43
+ var elem = document.getElementById(element_id);
44
+ if (elem.className.indexOf("failed") == -1) { // class doesn't includes failed
45
+ if (elem.className.indexOf("not_implemented") == -1) { // class doesn't include not_implemented
46
+ removeClass(element_id, 'passed');
47
+ addClass(element_id,'not_implemented');
48
+ }
49
+ }
50
+ }
51
+
52
+ function apply_filters() {
53
+ var passed_filter = document.getElementById('passed_checkbox').checked;
54
+ var failed_filter = document.getElementById('failed_checkbox').checked;
55
+ var pending_filter = document.getElementById('pending_checkbox').checked;
56
+
57
+ assign_display_style("example passed", passed_filter);
58
+ assign_display_style("example failed", failed_filter);
59
+ assign_display_style("example not_implemented", pending_filter);
60
+
61
+ assign_display_style_for_group("example_group passed", passed_filter);
62
+ assign_display_style_for_group("example_group not_implemented", pending_filter, pending_filter || passed_filter);
63
+ assign_display_style_for_group("example_group failed", failed_filter, failed_filter || pending_filter || passed_filter);
64
+ }
65
+
66
+ function get_display_style(display_flag) {
67
+ var style_mode = 'none';
68
+ if (display_flag == true) {
69
+ style_mode = 'block';
70
+ }
71
+ return style_mode;
72
+ }
73
+
74
+ function assign_display_style(classname, display_flag) {
75
+ var style_mode = get_display_style(display_flag);
76
+ var elems = document.getElementsByClassName(classname)
77
+ for (var i=0; i<elems.length;i++) {
78
+ elems[i].style.display = style_mode;
79
+ }
80
+ }
81
+
82
+ function assign_display_style_for_group(classname, display_flag, subgroup_flag) {
83
+ var display_style_mode = get_display_style(display_flag);
84
+ var subgroup_style_mode = get_display_style(subgroup_flag);
85
+ var elems = document.getElementsByClassName(classname)
86
+ for (var i=0; i<elems.length;i++) {
87
+ var style_mode = display_style_mode;
88
+ if ((display_flag != subgroup_flag) && (elems[i].getElementsByTagName('dt')[0].innerHTML.indexOf(", ") != -1)) {
89
+ elems[i].style.display = subgroup_style_mode;
90
+ } else {
91
+ elems[i].style.display = display_style_mode;
92
+ }
93
+ }
94
+ }
95
+
96
+ // ]]>
97
+ </script>
98
+ <style type="text/css">
99
+ #rspec-header {
100
+ background: #65C400; color: #fff; height: 4em;
101
+ }
102
+
103
+ .rspec-report h1 {
104
+ margin: 0px 10px 0px 10px;
105
+ padding: 10px;
106
+ font-family: "Lucida Grande", Helvetica, sans-serif;
107
+ font-size: 1.8em;
108
+ position: absolute;
109
+ }
110
+
111
+ #label {
112
+ float:left;
113
+ }
114
+
115
+ #display-filters {
116
+ float:left;
117
+ padding: 28px 0 0 40%;
118
+ font-family: "Lucida Grande", Helvetica, sans-serif;
119
+ }
120
+
121
+ #summary {
122
+ float:right;
123
+ padding: 5px 10px;
124
+ font-family: "Lucida Grande", Helvetica, sans-serif;
125
+ text-align: right;
126
+ }
127
+
128
+ #summary p {
129
+ margin: 0 0 0 2px;
130
+ }
131
+
132
+ #summary #totals {
133
+ font-size: 1.2em;
134
+ }
135
+
136
+ .example_group {
137
+ margin: 0 10px 5px;
138
+ background: #fff;
139
+ }
140
+
141
+ dl {
142
+ margin: 0; padding: 0 0 5px;
143
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
144
+ }
145
+
146
+ dt {
147
+ padding: 3px;
148
+ background: #65C400;
149
+ color: #fff;
150
+ font-weight: bold;
151
+ }
152
+
153
+ dd {
154
+ margin: 5px 0 5px 5px;
155
+ padding: 3px 3px 3px 18px;
156
+ }
157
+
158
+ dd .duration {
159
+ padding-left: 5px;
160
+ text-align: right;
161
+ right: 0px;
162
+ float:right;
163
+ }
164
+
165
+ dd.example.passed {
166
+ border-left: 5px solid #65C400;
167
+ border-bottom: 1px solid #65C400;
168
+ background: #DBFFB4; color: #3D7700;
169
+ }
170
+
171
+ dd.example.not_implemented {
172
+ border-left: 5px solid #FAF834;
173
+ border-bottom: 1px solid #FAF834;
174
+ background: #FCFB98; color: #131313;
175
+ }
176
+
177
+ dd.example.pending_fixed {
178
+ border-left: 5px solid #0000C2;
179
+ border-bottom: 1px solid #0000C2;
180
+ color: #0000C2; background: #D3FBFF;
181
+ }
182
+
183
+ dd.example.failed {
184
+ border-left: 5px solid #C20000;
185
+ border-bottom: 1px solid #C20000;
186
+ color: #C20000; background: #FFFBD3;
187
+ }
188
+
189
+
190
+ dt.not_implemented {
191
+ color: #000000; background: #FAF834;
192
+ }
193
+
194
+ dt.pending_fixed {
195
+ color: #FFFFFF; background: #C40D0D;
196
+ }
197
+
198
+ dt.failed {
199
+ color: #FFFFFF; background: #C40D0D;
200
+ }
201
+
202
+
203
+ #rspec-header.not_implemented {
204
+ color: #000000; background: #FAF834;
205
+ }
206
+
207
+ #rspec-header.pending_fixed {
208
+ color: #FFFFFF; background: #C40D0D;
209
+ }
210
+
211
+ #rspec-header.failed {
212
+ color: #FFFFFF; background: #C40D0D;
213
+ }
214
+
215
+
216
+ .backtrace {
217
+ color: #000;
218
+ font-size: 12px;
219
+ }
220
+
221
+ a {
222
+ color: #BE5C00;
223
+ }
224
+
225
+ /* Ruby code, style similar to vibrant ink */
226
+ .ruby {
227
+ font-size: 12px;
228
+ font-family: monospace;
229
+ color: white;
230
+ background-color: black;
231
+ padding: 0.1em 0 0.2em 0;
232
+ }
233
+
234
+ .ruby .keyword { color: #FF6600; }
235
+ .ruby .constant { color: #339999; }
236
+ .ruby .attribute { color: white; }
237
+ .ruby .global { color: white; }
238
+ .ruby .module { color: white; }
239
+ .ruby .class { color: white; }
240
+ .ruby .string { color: #66FF00; }
241
+ .ruby .ident { color: white; }
242
+ .ruby .method { color: #FFCC00; }
243
+ .ruby .number { color: white; }
244
+ .ruby .char { color: white; }
245
+ .ruby .comment { color: #9933CC; }
246
+ .ruby .symbol { color: white; }
247
+ .ruby .regex { color: #44B4CC; }
248
+ .ruby .punct { color: white; }
249
+ .ruby .escape { color: white; }
250
+ .ruby .interp { color: white; }
251
+ .ruby .expr { color: white; }
252
+
253
+ .ruby .offending { background-color: gray; }
254
+ .ruby .linenum {
255
+ width: 75px;
256
+ padding: 0.1em 1em 0.2em 0;
257
+ color: #000000;
258
+ background-color: #FFFBD3;
259
+ }
260
+
261
+ </style>
262
+ </head>
263
+ <body>
264
+ <div class="rspec-report">
265
+
266
+ <div id="rspec-header">
267
+ <div id="label">
268
+ <h1>RSpec Code Examples</h1>
269
+ </div>
270
+
271
+ <div id="display-filters">
272
+ <input id="passed_checkbox" name="passed_checkbox" type="checkbox" checked onchange="apply_filters()" value="1"> <label for="passed_checkbox">Passed</label>
273
+ <input id="failed_checkbox" name="failed_checkbox" type="checkbox" checked onchange="apply_filters()" value="2"> <label for="failed_checkbox">Failed</label>
274
+ <input id="pending_checkbox" name="pending_checkbox" type="checkbox" checked onchange="apply_filters()" value="3"> <label for="pending_checkbox">Pending</label>
275
+ </div>
276
+
277
+ <div id="summary">
278
+ <p id="totals">&nbsp;</p>
279
+ <p id="duration">&nbsp;</p>
280
+ </div>
281
+ </div>
282
+
283
+
284
+ <div class="results">
285
+ <div id="div_group_1" class="example_group passed">
286
+ <dl style="margin-left: 0px;">
287
+ <dt id="example_group_1" class="passed">pending spec with no implementation</dt>
288
+ <script type="text/javascript">makeYellow('rspec-header');</script>
289
+ <script type="text/javascript">makeYellow('div_group_1');</script>
290
+ <script type="text/javascript">makeYellow('example_group_1');</script>
291
+ <script type="text/javascript">moveProgressBar('14.2');</script>
292
+ <dd class="example not_implemented"><span class="not_implemented_spec_name">is pending (PENDING: Not yet implemented)</span></dd>
293
+ </dl>
294
+ </div>
295
+ <div id="div_group_2" class="example_group passed">
296
+ <dl style="margin-left: 0px;">
297
+ <dt id="example_group_2" class="passed">pending command with block format</dt>
298
+ </dl>
299
+ </div>
300
+ <div id="div_group_3" class="example_group passed">
301
+ <dl style="margin-left: 15px;">
302
+ <dt id="example_group_3" class="passed">with content that would fail</dt>
303
+ <script type="text/javascript">makeYellow('rspec-header');</script>
304
+ <script type="text/javascript">makeYellow('div_group_3');</script>
305
+ <script type="text/javascript">makeYellow('example_group_3');</script>
306
+ <script type="text/javascript">moveProgressBar('28.5');</script>
307
+ <dd class="example not_implemented"><span class="not_implemented_spec_name">is pending (PENDING: No reason given)</span></dd>
308
+ </dl>
309
+ </div>
310
+ <div id="div_group_4" class="example_group passed">
311
+ <dl style="margin-left: 15px;">
312
+ <dt id="example_group_4" class="passed">with content that would pass</dt>
313
+ <script type="text/javascript">makeRed('rspec-header');</script>
314
+ <script type="text/javascript">makeRed('div_group_4');</script>
315
+ <script type="text/javascript">makeRed('example_group_4');</script>
316
+ <script type="text/javascript">moveProgressBar('42.8');</script>
317
+ <dd class="example pending_fixed">
318
+ <span class="failed_spec_name">fails</span>
319
+ <span class="duration">n.nnnns</span>
320
+ <div class="failure" id="failure_1">
321
+ <div class="message"><pre>RSpec::Core::Pending::PendingExampleFixedError</pre></div>
322
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/resources/formatter_specs.rb&line=18">./spec/rspec/core/resources/formatter_specs.rb:18</a> :in `__script__'
323
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
324
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
325
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
326
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
327
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=31">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:31</a> :in `Formatters'
328
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
329
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/hash18.rb&line=196">kernel/common/hash18.rb:196</a> :in `fetch'
330
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=53">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:53</a> :in `Formatters'
331
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/io.rb&line=255">kernel/common/io.rb:255</a> :in `open'
332
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=53">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:53</a> :in `Formatters'
333
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/dir.rb&line=70">kernel/common/dir.rb:70</a> :in `chdir'
334
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=52">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:52</a> :in `Formatters'
335
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
336
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
337
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=106">kernel/common/eval18.rb:106</a> :in `instance_exec'
338
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
339
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
340
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
341
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=696">kernel/loader.rb:696</a> :in `run_at_exits'
342
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=716">kernel/loader.rb:716</a> :in `epilogue'
343
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=849">kernel/loader.rb:849</a> :in `main'</pre></div>
344
+ <pre class="ruby"><code><span class="linenum">16</span> <span class="ident">context</span> <span class="punct">&quot;</span><span class="string">with content that would pass</span><span class="punct">&quot;</span> <span class="keyword">do</span>
345
+ <span class="linenum">17</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">fails</span><span class="punct">&quot;</span> <span class="keyword">do</span>
346
+ <span class="offending"><span class="linenum">18</span> <span class="ident">pending</span> <span class="keyword">do</span></span>
347
+ <span class="linenum">19</span> <span class="number">1</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eq</span><span class="punct">(</span><span class="number">1</span><span class="punct">)</span>
348
+ <span class="linenum">20</span> <span class="keyword">end</span></code></pre>
349
+ </div>
350
+ </dd>
351
+ </dl>
352
+ </div>
353
+ <div id="div_group_5" class="example_group passed">
354
+ <dl style="margin-left: 0px;">
355
+ <dt id="example_group_5" class="passed">passing spec</dt>
356
+ <script type="text/javascript">moveProgressBar('57.1');</script>
357
+ <dd class="example passed"><span class="passed_spec_name">passes</span><span class='duration'>n.nnnns</span></dd>
358
+ </dl>
359
+ </div>
360
+ <div id="div_group_6" class="example_group passed">
361
+ <dl style="margin-left: 0px;">
362
+ <dt id="example_group_6" class="passed">failing spec</dt>
363
+ <script type="text/javascript">makeRed('div_group_6');</script>
364
+ <script type="text/javascript">makeRed('example_group_6');</script>
365
+ <script type="text/javascript">moveProgressBar('71.4');</script>
366
+ <dd class="example failed">
367
+ <span class="failed_spec_name">fails</span>
368
+ <span class="duration">n.nnnns</span>
369
+ <div class="failure" id="failure_2">
370
+ <div class="message"><pre>
371
+ expected: 2
372
+ got: 1
373
+
374
+ (compared using ==)
375
+ </pre></div>
376
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/resources/formatter_specs.rb&line=33">./spec/rspec/core/resources/formatter_specs.rb:33</a> :in `__script__'
377
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
378
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
379
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
380
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=31">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:31</a> :in `Formatters'
381
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
382
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/hash18.rb&line=196">kernel/common/hash18.rb:196</a> :in `fetch'
383
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=53">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:53</a> :in `Formatters'
384
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/io.rb&line=255">kernel/common/io.rb:255</a> :in `open'
385
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=53">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:53</a> :in `Formatters'
386
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/dir.rb&line=70">kernel/common/dir.rb:70</a> :in `chdir'
387
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=52">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:52</a> :in `Formatters'
388
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
389
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
390
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=106">kernel/common/eval18.rb:106</a> :in `instance_exec'
391
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
392
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
393
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
394
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=696">kernel/loader.rb:696</a> :in `run_at_exits'
395
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=716">kernel/loader.rb:716</a> :in `epilogue'
396
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=849">kernel/loader.rb:849</a> :in `main'</pre></div>
397
+ <pre class="ruby"><code><span class="linenum">31</span><span class="ident">describe</span> <span class="punct">&quot;</span><span class="string">failing spec</span><span class="punct">&quot;</span> <span class="keyword">do</span>
398
+ <span class="linenum">32</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">fails</span><span class="punct">&quot;</span> <span class="keyword">do</span>
399
+ <span class="offending"><span class="linenum">33</span> <span class="number">1</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eq</span><span class="punct">(</span><span class="number">2</span><span class="punct">)</span></span>
400
+ <span class="linenum">34</span> <span class="keyword">end</span>
401
+ <span class="linenum">35</span><span class="keyword">end</span></code></pre>
402
+ </div>
403
+ </dd>
404
+ </dl>
405
+ </div>
406
+ <div id="div_group_7" class="example_group passed">
407
+ <dl style="margin-left: 0px;">
408
+ <dt id="example_group_7" class="passed">a failing spec with odd backtraces</dt>
409
+ <script type="text/javascript">makeRed('div_group_7');</script>
410
+ <script type="text/javascript">makeRed('example_group_7');</script>
411
+ <script type="text/javascript">moveProgressBar('85.7');</script>
412
+ <dd class="example failed">
413
+ <span class="failed_spec_name">fails with a backtrace that has no file</span>
414
+ <span class="duration">n.nnnns</span>
415
+ <div class="failure" id="failure_3">
416
+ <div class="message"><pre>foo</pre></div>
417
+ <div class="backtrace"><pre>(erb):1:in `__script__'
418
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/block_environment.rb&line=75">kernel/common/block_environment.rb:75</a> :in `call_on_instance'
419
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval.rb&line=75">kernel/common/eval.rb:75</a> :in `eval'
420
+ <a href="txmt://open?url=file:///Users/alindeman/.rvm/rubies/rbx-head/lib/18/erb.rb&line=719">/Users/alindeman/.rvm/rubies/rbx-head/lib/18/erb.rb:719</a> :in `result'
421
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/resources/formatter_specs.rb&line=41">./spec/rspec/core/resources/formatter_specs.rb:41</a> :in `__script__'
422
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
423
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
424
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
425
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=31">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:31</a> :in `Formatters'
426
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
427
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/hash18.rb&line=196">kernel/common/hash18.rb:196</a> :in `fetch'
428
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=53">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:53</a> :in `Formatters'
429
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/io.rb&line=255">kernel/common/io.rb:255</a> :in `open'
430
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=53">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:53</a> :in `Formatters'
431
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/dir.rb&line=70">kernel/common/dir.rb:70</a> :in `chdir'
432
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/spec/rspec/core/formatters/text_mate_formatter_spec.rb&line=52">./spec/rspec/core/formatters/text_mate_formatter_spec.rb:52</a> :in `Formatters'
433
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
434
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=45">kernel/common/eval18.rb:45</a> :in `instance_eval'
435
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/common/eval18.rb&line=106">kernel/common/eval18.rb:106</a> :in `instance_exec'
436
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
437
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
438
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/bootstrap/array18.rb&line=18">kernel/bootstrap/array18.rb:18</a> :in `map'
439
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=696">kernel/loader.rb:696</a> :in `run_at_exits'
440
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=716">kernel/loader.rb:716</a> :in `epilogue'
441
+ <a href="txmt://open?url=file:///Users/alindeman/workspace/rspec-dev/repos/rspec-core/kernel/loader.rb&line=849">kernel/loader.rb:849</a> :in `main'</pre></div>
442
+ <pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for (erb)</span></code></pre>
443
+ </div>
444
+ </dd>
445
+ <script type="text/javascript">moveProgressBar('100.0');</script>
446
+ <dd class="example failed">
447
+ <span class="failed_spec_name">fails with a backtrace containing an erb file</span>
448
+ <span class="duration">n.nnnns</span>
449
+ <div class="failure" id="failure_4">
450
+ <div class="message"><pre>Exception</pre></div>
451
+ <div class="backtrace"><pre><a href="txmt://open?url=file:///foo.html.erb&line=1">/foo.html.erb:1</a> :in `&lt;main&gt;': foo (RuntimeError)</pre></div>
452
+ <pre class="ruby"><code><span class="linenum">-1</span><span class="comment"># Couldn't get snippet for /foo.html.erb</span></code></pre>
453
+ </div>
454
+ </dd>
455
+ </dl>
456
+ </div>
457
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>n.nnnn seconds</strong>";</script>
458
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "7 examples, 4 failures, 2 pending";</script>
459
+ </div>
460
+ </div>
461
+ </body>
462
+ </html>