what_weve_got_here_is_an_error_to_communicate 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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