what_weve_got_here_is_an_error_to_communicate 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12af0343c9c23e6c0e1ac4b5d513417855dbfdea
4
- data.tar.gz: 5ad485865fe4165c3962971c33b4e0e1610bd21b
3
+ metadata.gz: 4ca3047fc7ba0e7fb3e7a4fe8ca51b4f446d3eb7
4
+ data.tar.gz: ab9dfedf5db56ff643deca9372afb664f8bda1be
5
5
  SHA512:
6
- metadata.gz: ddad810a03f2ad851f9107f6b4eb18a4c0c459da0f91284764507b3a19103d1c60df319a61a45f6cfc56a2b47f30e2e8d7ddc5a6859149cb6bb980ab9247b868
7
- data.tar.gz: dd0986ce38c6b8902389aa43f3f4957ccee503575ce14a8fd9cc4cdde5a2591b56c70546ce4c88297449b7786a4210d99763c1e9a8d4471d4134291af77f835b
6
+ metadata.gz: 63d38ceee5ac2921c79ea3d4bf517770d75ceeabe96345dc50c33f59f17c822d6bbec08e30438df2af23d81f066b6dcd6d0cb16661259aa32d2409f5afbb259a
7
+ data.tar.gz: a898e22af4fd9c765a8c43cc15dcc818ca50a9271b0e82d532c285eb9ef1b94dcd262da82c132543fc63c995460c80137f6f3d65cd05f8dc920ef13f98bdcd82
data/Readme.md CHANGED
@@ -7,7 +7,7 @@ Blog explaining the goal [here](http://blog.turing.io/2015/01/18/what-we-ve-got-
7
7
 
8
8
  A screenshot of the code rendering an `ArgumentError`.
9
9
 
10
- ![screenshot](https://s3.amazonaws.com/josh.cheek/images/scratch/better-reuby-commandline-errors.png)
10
+ ![screenshot](https://s3.amazonaws.com/josh.cheek/images/scratch/error-to-communicate.png)
11
11
 
12
12
 
13
13
  This is still early and Rough
@@ -16,10 +16,11 @@ This is still early and Rough
16
16
  But I've been using it on its own test suite, and have to say it's compelling!
17
17
 
18
18
 
19
- Using this with RSpec or [MRspec](https://github.com/JoshCheek/mrspec)
20
- ----------------------------------------------------------------------
19
+ Using this with RSpec or Minitest
20
+ ---------------------------------
21
21
 
22
- Place this in your .rspec file :)
22
+ Place this in your .rspec file to use with RSpec. Or just use [MRspec](https://github.com/JoshCheek/mrspec),
23
+ which works with both RSpec and Minitest and requires no configuration :)
23
24
 
24
25
  ```
25
26
  --colour
@@ -3,6 +3,13 @@ require 'rspec/core/formatters/documentation_formatter'
3
3
 
4
4
  module ErrorToCommunicate
5
5
  class Heuristic::RSpecFailure < Heuristic
6
+ def self.fix_whitespace(str)
7
+ str = str.dup
8
+ str.sub! /\A\n*/, "" # remove leading newlines
9
+ str.sub! /\n*\Z/, "" # remove trailing newlines
10
+ str << "\n" # one newline on the end
11
+ end
12
+
6
13
  attr_accessor :failure, :failure_number, :config
7
14
  attr_accessor :semantic_summary, :semantic_info
8
15
 
@@ -21,7 +28,7 @@ module ErrorToCommunicate
21
28
  # format it with our lib
22
29
  self.semantic_info =
23
30
  [:heuristic, [ # ":heuristic" is dumb, it's not a heuristic, it's an error message, Maybe we need a :section or something?
24
- [:message, message.sub(/\A\n*/, "")],
31
+ [:message, self.class.fix_whitespace(message)],
25
32
  *backtrace.take(1).map { |loc|
26
33
  [:code, {location: loc, context: (-5..5), emphasis: :code}]
27
34
  }
@@ -1,3 +1,3 @@
1
1
  module ErrorToCommunicate
2
- VERSION = '0.0.3'.freeze
2
+ VERSION = '0.0.4'.freeze
3
3
  end
@@ -129,7 +129,7 @@ RSpec.describe ErrorToCommunicate::RSpecFormatter, rspec_formatter: true do
129
129
  expect(columns.map &:last).to eq [999, 'DESC']
130
130
  end
131
131
 
132
- specify 'the info is the error message and first line from the backtrace with some context' do
132
+ specify 'the info is the formatted error message and first line from the backtrace with some context' do
133
133
  config = ErrorToCommunicate::Config.new
134
134
  heuristic = ErrorToCommunicate::Heuristic::RSpecFailure.new \
135
135
  config: ErrorToCommunicate::Config.default,
@@ -138,7 +138,7 @@ RSpec.describe ErrorToCommunicate::RSpecFormatter, rspec_formatter: true do
138
138
  heuristicname, ((messagename, message), (codename, codeattrs), *rest) = heuristic.semantic_info
139
139
  expect(heuristicname).to eq :heuristic
140
140
  expect(messagename ).to eq :message
141
- expect(message ).to eq 'MESSAGE'
141
+ expect(message ).to eq "MESSAGE\n"
142
142
  expect(codename ).to eq :code
143
143
  expect(codeattrs[:location].path.to_s).to eq '/file'
144
144
  expect(codeattrs[:context]).to eq (-5..5)
@@ -155,7 +155,7 @@ RSpec.describe ErrorToCommunicate::RSpecFormatter, rspec_formatter: true do
155
155
  heuristicname, ((messagename, message), *rest) = heuristic.semantic_info
156
156
  expect(heuristicname).to eq :heuristic
157
157
  expect(messagename ).to eq :message
158
- expect(message ).to eq 'MESSAGE'
158
+ expect(message ).to eq "MESSAGE\n"
159
159
  expect(rest).to be_empty
160
160
  end
161
161
  end
@@ -200,4 +200,37 @@ RSpec.describe ErrorToCommunicate::RSpecFormatter, rspec_formatter: true do
200
200
  expect(heuristic.semantic_info).to eq "SEMANTICINFO"
201
201
  end
202
202
  end
203
+
204
+ context 'fixing the message\'s whitespace' do
205
+ def fix_whitespace(str)
206
+ ErrorToCommunicate::Heuristic::RSpecFailure.fix_whitespace str
207
+ end
208
+
209
+ it 'removes leading newlines' do
210
+ expect(fix_whitespace "\na").to start_with "a"
211
+ expect(fix_whitespace "\n\n\na").to start_with "a"
212
+ end
213
+
214
+ it 'removes all but one trailing newline' do
215
+ expect(fix_whitespace "a\n").to start_with "a\n"
216
+ expect(fix_whitespace "a\n\n").to start_with "a\n"
217
+ expect(fix_whitespace "a\n\n\n").to start_with "a\n"
218
+ end
219
+
220
+ it 'adds a trailing newline if its missing' do
221
+ expect(fix_whitespace "a").to start_with "a\n"
222
+ end
223
+
224
+ it 'doesn\'t modify the original string' do
225
+ a = "\na"
226
+ b = "a"
227
+ c = "a\n\n"
228
+ d = "a\n"
229
+ [a, b, c, d].each { |s| fix_whitespace s }
230
+ expect(a).to eq "\na"
231
+ expect(b).to eq "a"
232
+ expect(c).to eq "a\n\n"
233
+ expect(d).to eq "a\n"
234
+ end
235
+ end
203
236
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: what_weve_got_here_is_an_error_to_communicate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Cheek
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-01 00:00:00.000000000 Z
12
+ date: 2015-06-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rouge