uspec 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.markdown +13 -7
- data/lib/uspec/result.rb +12 -2
- data/lib/uspec/version.rb +1 -1
- data/uspec/cli_spec.rb +2 -2
- data/uspec/result_spec.rb +31 -1
- data/uspec/uspec_spec.rb +5 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 641541f23b26b9c14b11950c55f9161aa89142aa41b8627a9f2dcbe54ac11584
|
4
|
+
data.tar.gz: a02353485421133ac4fa3eb639a7942992152faee3db2f484da4da56917014d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1776508a0bc6ca4da5e90167072244305b9994b407d75fce53048bda6cad1a439adee75ecb0ddf534728f6ab6ad268a44588013a57f225df74f38a0e1c85a5c8
|
7
|
+
data.tar.gz: 1b39cb64033e21f466ee0a8edaea706e20589f92b3cbae80eb41e624c3dca9f24f1c376f277a7c5061f8b5d20608ea49cf1de71b9014409d4d5bc28b6d1ad702
|
data/README.markdown
CHANGED
@@ -62,12 +62,12 @@ Or install it directly with:
|
|
62
62
|
Quickstart
|
63
63
|
----------
|
64
64
|
|
65
|
-
0. Create a `
|
65
|
+
0. Create a `uspec` directory to keep your specs in.
|
66
66
|
1. Name your specs ending with `_spec.rb`.
|
67
67
|
2. Write some specs in Ruby using the `spec` method (example above).
|
68
68
|
2. Use the included `uspec` executable to run your specs.
|
69
69
|
|
70
|
-
**Hint:** A lot of people also put `require_relative 'spec_helper'`
|
70
|
+
**Hint:** A lot of people also put `require_relative 'spec_helper'` at the top of their test files for sharing code between tests.
|
71
71
|
|
72
72
|
Commandline Usage
|
73
73
|
-----------------
|
@@ -78,7 +78,7 @@ uspec - minimalistic ruby testing framework
|
|
78
78
|
usage: uspec [<file_or_path>...]
|
79
79
|
```
|
80
80
|
|
81
|
-
- Without arguments the `uspec` command will automatially look for
|
81
|
+
- Without arguments the `uspec` command will automatially look for a `uspec` directory and load any `*_spec.rb` files inside them.
|
82
82
|
- You can also pass in arbitrary files and it will attempt to run them as specs.
|
83
83
|
- If you pass in directories `uspec` will scan for and run any specs inside them.
|
84
84
|
- Uspec will return the number of failures as its status code to the commandline, 0 if none.
|
@@ -86,7 +86,7 @@ usage: uspec [<file_or_path>...]
|
|
86
86
|
Output
|
87
87
|
------
|
88
88
|
|
89
|
-
|
89
|
+
A brief explanation of `uspec`'s output to show you what it can do!
|
90
90
|
|
91
91
|
### Success
|
92
92
|
|
@@ -158,7 +158,7 @@ When you run the test Uspec will helpfully display:
|
|
158
158
|
Tips & Tricks
|
159
159
|
-------------
|
160
160
|
|
161
|
-
Because there's no matchers and only one method there's no
|
161
|
+
Because there's no matchers and only one method there's no need for specialized reference documentation, but here are some ideas to get you going!
|
162
162
|
|
163
163
|
### String matching
|
164
164
|
|
@@ -201,6 +201,11 @@ If there's no error, then Uspec will see the result of the method call (whatever
|
|
201
201
|
If the wrong Exception is raised, then because of reraising (by just calling `raise` without parameters),
|
202
202
|
Ruby will dutifully pass along the error for Uspec to display.
|
203
203
|
|
204
|
+
Mocks, Spies, Stubs, and More!
|
205
|
+
-----------------------
|
206
|
+
|
207
|
+
Since `uspec` is a very straight forward testing utility it is easy to use any of the standard Ruby mocking frameworks with it. However, the [Impasta gem](https://github.com/acook/impasta) was made specifically for simple but comprehensive mocking, stubbing, and spying.
|
208
|
+
|
204
209
|
Assertions & Debugging
|
205
210
|
----------------------
|
206
211
|
|
@@ -224,7 +229,8 @@ end
|
|
224
229
|
MyFoo.new.assert
|
225
230
|
```
|
226
231
|
|
227
|
-
|
232
|
+
Assertions will be displayed as they occur, success or failure along with any informative output.
|
233
|
+
If there are any specs that fail, when your application exits its error code will equal the number of failures.
|
228
234
|
|
229
235
|
```
|
230
236
|
$ ruby foo.rb
|
@@ -251,4 +257,4 @@ Contributing
|
|
251
257
|
Author
|
252
258
|
------
|
253
259
|
|
254
|
-
> Anthony M. Cook 2013-
|
260
|
+
> Anthony M. Cook 2013-2020
|
data/lib/uspec/result.rb
CHANGED
@@ -28,7 +28,7 @@ module Uspec
|
|
28
28
|
].join
|
29
29
|
else
|
30
30
|
[
|
31
|
-
red('
|
31
|
+
red('Failed'), vspace,
|
32
32
|
hspace, 'Spec did not return a boolean value ', newline,
|
33
33
|
hspace, 'in spec at ', source.first, vspace,
|
34
34
|
hspace, red(subklassinfo), inspector, newline
|
@@ -52,7 +52,17 @@ module Uspec
|
|
52
52
|
|
53
53
|
# Attempts to inspect an object
|
54
54
|
def inspector
|
55
|
-
|
55
|
+
if String === raw && raw.include?(?\n) then
|
56
|
+
# if object is a multiline string, display it escaped and unescaped
|
57
|
+
[
|
58
|
+
handler.inspector!, vspace,
|
59
|
+
hspace, yellow('"""'), newline,
|
60
|
+
raw, normal, newline,
|
61
|
+
hspace, yellow('"""')
|
62
|
+
].join
|
63
|
+
else
|
64
|
+
handler.inspector!
|
65
|
+
end
|
56
66
|
rescue Exception => error
|
57
67
|
return handler.simple_inspector if error.message.include? handler.get_id
|
58
68
|
|
data/lib/uspec/version.rb
CHANGED
data/uspec/cli_spec.rb
CHANGED
@@ -15,7 +15,7 @@ spec 'runs a path of specs' do
|
|
15
15
|
Uspec::CLI.run_specs Array(path)
|
16
16
|
end
|
17
17
|
|
18
|
-
output.include?
|
18
|
+
output.include?('I love passing tests') || output
|
19
19
|
end
|
20
20
|
|
21
21
|
spec 'runs an individual spec' do
|
@@ -24,7 +24,7 @@ spec 'runs an individual spec' do
|
|
24
24
|
Uspec::CLI.run_specs Array(path)
|
25
25
|
end
|
26
26
|
|
27
|
-
output.include?
|
27
|
+
output.include?('I love passing tests') || output
|
28
28
|
end
|
29
29
|
|
30
30
|
spec 'broken requires in test files count as test failures' do
|
data/uspec/result_spec.rb
CHANGED
@@ -17,7 +17,29 @@ spec "ensure BasicObject subclasses work" do
|
|
17
17
|
result = Uspec::Result.new "BasicObject Subclass Result", obj, []
|
18
18
|
expected = "#<BasicObject/TestObject:"
|
19
19
|
actual = result.pretty
|
20
|
-
actual.include?(expected) || result.
|
20
|
+
actual.include?(expected) || result.pretty
|
21
|
+
end
|
22
|
+
|
23
|
+
spec "display basic info about Object" do
|
24
|
+
result = Uspec::Result.new "Object Result", Object.new, []
|
25
|
+
expected = "Object < BasicObject"
|
26
|
+
actual = result.pretty
|
27
|
+
actual.include?(expected) || result.pretty
|
28
|
+
end
|
29
|
+
|
30
|
+
spec "display basic info about Array" do
|
31
|
+
result = Uspec::Result.new "Array Result", [], []
|
32
|
+
expected = "Array < Object"
|
33
|
+
actual = result.pretty
|
34
|
+
actual.include?(expected) || result.pretty
|
35
|
+
end
|
36
|
+
|
37
|
+
spec "display basic info about Array class" do
|
38
|
+
result = Uspec::Result.new "Array Class Result", Array, []
|
39
|
+
#expected = "Class < ???" # TODO: Make classes display nicer in TOISB
|
40
|
+
expected = "#<Class:Object> < #<Class:BasicObject>: \e[0mArray"
|
41
|
+
actual = result.pretty
|
42
|
+
actual.include?(expected) || result.pretty
|
21
43
|
end
|
22
44
|
|
23
45
|
parent = [obj]
|
@@ -38,3 +60,11 @@ spec "display a useful error message when a user-defined inspect method fails" d
|
|
38
60
|
actual = result.pretty
|
39
61
|
actual.include?(expected) || result.inspector
|
40
62
|
end
|
63
|
+
|
64
|
+
spec "display strings more like their actual contents" do
|
65
|
+
expected = "this string:\nshould display \e[42;2mproperly"
|
66
|
+
result = Uspec::Result.new "Inspect Fail Result", expected, []
|
67
|
+
actual = result.pretty
|
68
|
+
actual.include?(expected) || result.inspector
|
69
|
+
end
|
70
|
+
|
data/uspec/uspec_spec.rb
CHANGED
@@ -27,7 +27,7 @@ spec 'complains when spec block returns non boolean' do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
output.include? '
|
30
|
+
output.include? 'Failed'
|
31
31
|
end
|
32
32
|
|
33
33
|
spec 'marks test as pending when no block supplied' do
|
@@ -45,6 +45,8 @@ end
|
|
45
45
|
spec 'exit code is the number of failures' do
|
46
46
|
expected = 50
|
47
47
|
output = capture do
|
48
|
+
Uspec::Stats.clear_results! # because we're forking, we will have a copy of the current results
|
49
|
+
|
48
50
|
expected.times do |count|
|
49
51
|
spec "fail ##{count + 1}" do
|
50
52
|
false
|
@@ -60,6 +62,8 @@ end
|
|
60
62
|
|
61
63
|
spec 'if more than 255 failures, exit status is 255' do
|
62
64
|
capture do
|
65
|
+
Uspec::Stats.clear_results! # because we're forking, we will have a copy of the current results
|
66
|
+
|
63
67
|
500.times do
|
64
68
|
spec 'fail' do
|
65
69
|
false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony M. Cook
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: that_object_is_so_basic
|