test_bench-bootstrap 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/test_bench/bootstrap.rb +35 -22
  3. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c598253c9dffd0ee6a6ca8469dff0bce06a9311a8536472677b19a02d5bca5d
4
- data.tar.gz: ec4b316c5e78984d085bd4a316c1db3a52431ac9226951c026d743c15e3709ec
3
+ metadata.gz: 1b400c74d1b0dfc2f2ce3332d525109cb9a1643ddeba0f65e440eba9acd6b84a
4
+ data.tar.gz: 45ee30ba63adf373048a53d40d2e956fef6fc1bbaf3392cce964bcd7d3136325
5
5
  SHA512:
6
- metadata.gz: 1ad7e8af90a91050f2ca1d4a402f2b6da042c983b46b1321a6c9ece9a9d86054e062f97f86effdbf6d7ab53345b532e2c914763a595afe93173a44cc89c19bef
7
- data.tar.gz: 45093632a9deebbac94461851d21baf052fb3228d93bfd69124208ee15d2be7e24d6f6c8f9de3f2af19e740a79aca96e7ca42428a39be83176eac70cbfd2cce3
6
+ metadata.gz: be4671d8025e1be20ebe53d926d5e3e1919a00c54f23f2743ad00df0cc3dcb7422651bb499fc43a7c4bae2be8eb281d48a4d2d25568d0bd0c9f3ecc474951e56
7
+ data.tar.gz: c6bfab181eabcc5d608f17f688f3d7150b0d6cbae5c2604a36e6636a7cdd576f0a381953634fa5a9b13d544da6c358e64863d89bc1f4a9134a0c6e7f26a799b3
@@ -9,7 +9,7 @@ module TestBench
9
9
  module Fixture
10
10
  def assert(value)
11
11
  unless value
12
- raise AssertionFailure.build(caller_locations.first)
12
+ raise AssertionFailure.build(caller.first)
13
13
  end
14
14
  end
15
15
 
@@ -27,12 +27,12 @@ module TestBench
27
27
  end
28
28
  end
29
29
 
30
- raise AssertionFailure.build(caller_locations.first)
30
+ raise AssertionFailure.build(caller.first)
31
31
  end
32
32
 
33
33
  def refute(value)
34
34
  if value
35
- raise AssertionFailure.build(caller_locations.first)
35
+ raise AssertionFailure.build(caller.first)
36
36
  end
37
37
  end
38
38
 
@@ -44,7 +44,7 @@ module TestBench
44
44
  raise error
45
45
  end
46
46
 
47
- raise AssertionFailure.build(caller_locations.first)
47
+ raise AssertionFailure.build(caller.first)
48
48
  end
49
49
 
50
50
  def context(prose=nil, &block)
@@ -116,42 +116,55 @@ module TestBench
116
116
 
117
117
  omitting = false
118
118
 
119
- error_message = error.full_message(highlight: true, order: :bottom)
119
+ Output.write("\e[1mTraceback\e[22m (most recent call last):", sgr_code: 0x31)
120
+
121
+ rjust_length = error.backtrace.length.to_s.length
122
+
123
+ error.backtrace[1..-1].reverse_each.with_index do |line, index|
124
+ line = line.dup
120
125
 
121
- error_message.each_line.with_index do |line, index|
122
126
  line.chomp!
123
127
 
124
- if line.start_with?("\t") && omit_backtrace_pattern.match?(line)
128
+ if omit_backtrace_pattern.match?(line)
125
129
  if omitting
126
130
  next
127
131
  else
128
132
  omitting = true
129
133
 
130
- indentation = line.index("from ")
131
-
132
- line.slice!(indentation..-1)
133
- line.gsub!(%r{[[:digit:]]}, '?')
134
- line.concat("*omitted*")
134
+ header = index.to_s.gsub(/./, '?').rjust(rjust_length, ' ')
135
135
 
136
- Output.write(line, sgr_codes: [0x2, 0x3, 0x31])
136
+ Output.write("#{header}: *omitted*", sgr_codes: [0x2, 0x3, 0x31], tab_indent: true)
137
137
  end
138
138
  else
139
139
  omitting = false
140
140
 
141
- Output.write(line, sgr_code: 0x31)
141
+ header = index.to_s.rjust(rjust_length, ' ')
142
+
143
+ Output.write("#{header}: #{line}", sgr_code: 0x31, tab_indent: true)
144
+ end
145
+ end
146
+
147
+ if error.message.empty?
148
+ if error.instance_of?(RuntimeError)
149
+ Output.write("#{error.backtrace[0]}: \e[1;4munhandled exception\e[24;22m", sgr_code: 0x31)
150
+ return
142
151
  end
152
+
153
+ error.message = error.class
143
154
  end
155
+
156
+ Output.write("#{error.backtrace[0]} \e[1m#{error} (\e[4m#{error.class}\e[24m)\e[22m", sgr_code: 0x31)
144
157
  end
145
158
  end
146
159
 
147
160
  module Output
148
161
  extend self
149
162
 
150
- def write(text, device: nil, sgr_code: nil, sgr_codes: nil)
151
- indent(text, device: device, sgr_code: sgr_code, sgr_codes: sgr_codes)
163
+ def write(text, device: nil, sgr_code: nil, sgr_codes: nil, tab_indent: nil)
164
+ indent(text, device: device, sgr_code: sgr_code, sgr_codes: sgr_codes, tab_indent: tab_indent)
152
165
  end
153
166
 
154
- def indent(text, device: nil, sgr_code: nil, sgr_codes: nil, &block)
167
+ def indent(text, device: nil, sgr_code: nil, sgr_codes: nil, tab_indent: nil, &block)
155
168
  device ||= $stdout
156
169
 
157
170
  unless text.nil?
@@ -165,10 +178,10 @@ module TestBench
165
178
  sgr_code.to_s(16)
166
179
  end
167
180
 
168
- text = "\e[#{sgr_codes * ';'}m#{text}\e[0m"
181
+ text = "\e[#{sgr_codes.join(';')}m#{text}\e[0m"
169
182
  end
170
183
 
171
- text = "#{' ' * indentation}#{text}"
184
+ text = "#{"\t" if tab_indent}#{' ' * indentation}#{text}"
172
185
 
173
186
  device.puts(text)
174
187
  end
@@ -192,10 +205,10 @@ module TestBench
192
205
 
193
206
  class AssertionFailure < RuntimeError
194
207
  def self.build(caller_location=nil)
195
- caller_location ||= caller_locations.first
208
+ caller_location ||= caller(0)
196
209
 
197
210
  instance = new
198
- instance.set_backtrace([caller_location.to_s])
211
+ instance.set_backtrace([caller_location])
199
212
  instance
200
213
  end
201
214
 
@@ -206,7 +219,7 @@ module TestBench
206
219
 
207
220
  class Failure < SystemExit
208
221
  def self.build
209
- new(false)
222
+ new(1, "TestBench::Bootstrap is aborting")
210
223
  end
211
224
  end
212
225
 
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_bench-bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Ladd
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-06 00:00:00.000000000 Z
11
+ date: 2020-08-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description:
14
14
  email: nathanladd+github@gmail.com
15
15
  executables: []
16
16
  extensions: []
@@ -21,7 +21,7 @@ homepage: https://github.com/test-bench/test-bench-bootstrap
21
21
  licenses:
22
22
  - MIT
23
23
  metadata: {}
24
- post_install_message:
24
+ post_install_message:
25
25
  rdoc_options: []
26
26
  require_paths:
27
27
  - lib
@@ -36,8 +36,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
38
  requirements: []
39
- rubygems_version: 3.0.3
40
- signing_key:
39
+ rubygems_version: 3.1.4
40
+ signing_key:
41
41
  specification_version: 4
42
42
  summary: A minimal test framework for testing TestBench
43
43
  test_files: []