cutest 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Makefile +6 -0
- data/README.markdown +72 -50
- data/bin/cutest +1 -1
- data/lib/cutest.rb +12 -13
- data/test/assert_raise.rb +23 -0
- data/test/fixtures/fail_custom_assertion.rb +1 -2
- data/test/fixtures/fail_custom_message.rb +3 -0
- data/test/run.rb +21 -1
- metadata +10 -9
- data/Rakefile +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9798d232220c6c693812a9db18c885a6e390b92a
|
4
|
+
data.tar.gz: b889afb1b6d810ec6dab549bb39ccd392573483b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ab94395a730e10588229f383ffa20515b8ac0816d9b381b86bd1029f3677d5a243cefead153d2f76db62831b84bb138f8a33945fee876b3aa0ff83b110a3436
|
7
|
+
data.tar.gz: 0529d8e1e97010ead35df62724de100b3ad3062ae1e570fdd217a19a6e90a7775a2bfa70bec523807661a224c1920d06ec503c562959dde0b11d0184568dcf47
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
1.2.3 - 2015-12-04
|
2
|
+
==================
|
3
|
+
|
4
|
+
* `assert_raise` now works with lower-level exceptions.
|
5
|
+
|
6
|
+
* `assert` can now receive a custom failure message, which should help write
|
7
|
+
better custom assertions.
|
8
|
+
|
9
|
+
* `cutest -v` now exits after printing the version number.
|
10
|
+
|
1
11
|
1.2.2 - 2014-11-05
|
2
12
|
==================
|
3
13
|
|
data/Makefile
ADDED
data/README.markdown
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
Cutest
|
2
2
|
=======
|
3
3
|
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/cutest.svg)](https://badge.fury.io/rb/cutest)
|
5
|
+
|
4
6
|
Forking tests.
|
5
7
|
|
6
8
|
Description
|
@@ -38,6 +40,10 @@ equal; and `assert_raise`, that executes a passed block and compares the raised
|
|
38
40
|
exception to the expected one. In all cases, if the expectation is no met, an
|
39
41
|
`AssertionFailed` exception is raised.
|
40
42
|
|
43
|
+
You can customize the output of `assert` by providing a second argument with
|
44
|
+
a string you want to get as an error report if the assertion is not fulfilled.
|
45
|
+
This can also be used as a simple building block to build custom assertions.
|
46
|
+
|
41
47
|
Usage
|
42
48
|
-----
|
43
49
|
|
@@ -47,83 +53,99 @@ In your terminal:
|
|
47
53
|
|
48
54
|
In your tests:
|
49
55
|
|
50
|
-
|
51
|
-
|
52
|
-
|
56
|
+
````ruby
|
57
|
+
setup do
|
58
|
+
{:a => 23, :b => 43}
|
59
|
+
end
|
53
60
|
|
54
|
-
|
55
|
-
|
56
|
-
|
61
|
+
test "should receive the result of the setup block as a parameter" do |params|
|
62
|
+
assert params == {:a => 23, :b => 43}
|
63
|
+
end
|
57
64
|
|
58
|
-
|
59
|
-
|
60
|
-
|
65
|
+
test "should evaluate the setup block before each test" do |params|
|
66
|
+
params[:a] = nil
|
67
|
+
end
|
61
68
|
|
62
|
-
|
63
|
-
|
64
|
-
|
69
|
+
test "should preserve the original values from the setup" do |params|
|
70
|
+
assert 23 == params[:a]
|
71
|
+
end
|
72
|
+
```
|
65
73
|
|
66
74
|
An example working with a prepare block:
|
75
|
+
````ruby
|
76
|
+
prepare do
|
77
|
+
Ohm.flush
|
78
|
+
end
|
67
79
|
|
68
|
-
|
69
|
-
|
70
|
-
|
80
|
+
setup do
|
81
|
+
Ohm.redis.get("foo")
|
82
|
+
end
|
71
83
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
test do |foo|
|
77
|
-
assert foo.nil?
|
78
|
-
end
|
84
|
+
test do |foo|
|
85
|
+
assert foo.nil?
|
86
|
+
end
|
87
|
+
````
|
79
88
|
|
80
89
|
And working with scopes:
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
90
|
+
````ruby
|
91
|
+
setup do
|
92
|
+
@foo = true
|
93
|
+
end
|
94
|
+
|
95
|
+
@bar = true
|
96
|
+
|
97
|
+
scope do
|
98
|
+
test "should not share instance variables" do |foo|
|
99
|
+
assert !defined?(@foo)
|
100
|
+
assert !defined?(@bar)
|
101
|
+
assert foo == true
|
102
|
+
end
|
103
|
+
end
|
104
|
+
````
|
95
105
|
|
96
106
|
The tests in these two examples will pass.
|
97
107
|
|
98
108
|
Unlike other testing frameworks, Cutest does not compile all the tests before
|
99
109
|
running them.
|
100
110
|
|
111
|
+
A simple example for adding a custom `empty` assertion:
|
112
|
+
````ruby
|
113
|
+
def assert_empty(string)
|
114
|
+
assert(string.empty?, "not empty")
|
115
|
+
end
|
116
|
+
|
117
|
+
test "failed custom assertion" do
|
118
|
+
assert_empty "foo"
|
119
|
+
end
|
120
|
+
````
|
121
|
+
|
101
122
|
Handling errors
|
102
123
|
---------------
|
103
124
|
|
104
125
|
If you get an error when running the tests, this is what you will see:
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
126
|
+
````bash
|
127
|
+
Exception: assert_equal 24, params[:a] # 24 != 23
|
128
|
+
test/setup.rb +14
|
129
|
+
````
|
109
130
|
Running the build
|
110
131
|
-----------------
|
111
132
|
|
112
133
|
Using Rake:
|
134
|
+
````ruby
|
135
|
+
task :test do
|
136
|
+
exec "cutest test/*.rb"
|
137
|
+
end
|
113
138
|
|
114
|
-
|
115
|
-
|
116
|
-
end
|
117
|
-
|
118
|
-
task :default => :test
|
139
|
+
task :default => :test
|
140
|
+
````
|
119
141
|
|
120
142
|
Using Make:
|
143
|
+
````yml
|
144
|
+
.PHONY: test
|
121
145
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
cutest test/*.rb
|
126
|
-
|
146
|
+
test:
|
147
|
+
cutest test/*.rb
|
148
|
+
````
|
127
149
|
Command-line interface
|
128
150
|
----------------------
|
129
151
|
|
data/bin/cutest
CHANGED
@@ -12,7 +12,7 @@ files = Clap.run ARGV,
|
|
12
12
|
"-r" => lambda { |file| require file },
|
13
13
|
"-o" => lambda { |name| cutest[:only] = name },
|
14
14
|
"-s" => lambda { |name| cutest[:scope] = name },
|
15
|
-
"-v" => lambda { puts Cutest::VERSION }
|
15
|
+
"-v" => lambda { puts Cutest::VERSION; exit }
|
16
16
|
|
17
17
|
if files.any?
|
18
18
|
success = Cutest.run(Dir[*files])
|
data/lib/cutest.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Cutest
|
2
2
|
unless defined?(VERSION)
|
3
|
-
VERSION = "1.2.
|
3
|
+
VERSION = "1.2.3"
|
4
4
|
FILTER = %r[/(ruby|jruby|rbx)[-/]([0-9\.])+]
|
5
5
|
CACHE = Hash.new { |h, k| h[k] = File.readlines(k) }
|
6
6
|
end
|
@@ -92,7 +92,7 @@ private
|
|
92
92
|
Thread.current[:cutest]
|
93
93
|
end
|
94
94
|
|
95
|
-
# Create
|
95
|
+
# Create an instance where the block will be evaluated. Recommended to improve
|
96
96
|
# isolation between tests.
|
97
97
|
def scope(name = nil, &block)
|
98
98
|
if !cutest[:scope] || cutest[:scope] == name
|
@@ -149,34 +149,33 @@ private
|
|
149
149
|
end
|
150
150
|
|
151
151
|
# Assert that value is not nil or false.
|
152
|
-
def assert(value)
|
153
|
-
flunk(
|
152
|
+
def assert(value, msg = "expression returned #{value.inspect}")
|
153
|
+
flunk(msg) unless value
|
154
154
|
success
|
155
155
|
end
|
156
156
|
|
157
|
-
# Assert that
|
158
|
-
def assert_equal(
|
159
|
-
|
160
|
-
success
|
157
|
+
# Assert that actual and expected values are equal.
|
158
|
+
def assert_equal(actual, expected)
|
159
|
+
assert(actual == expected, "#{actual.inspect} != #{expected.inspect}")
|
161
160
|
end
|
162
161
|
|
163
|
-
# Assert that the block
|
162
|
+
# Assert that the block raises an expected exception.
|
164
163
|
def assert_raise(expected = Exception)
|
165
164
|
begin
|
166
165
|
yield
|
167
|
-
rescue => exception
|
166
|
+
rescue expected => exception
|
168
167
|
exception
|
169
168
|
ensure
|
170
|
-
|
171
|
-
success
|
169
|
+
assert(exception.kind_of?(expected), "got #{exception.inspect} instead")
|
172
170
|
end
|
173
171
|
end
|
174
172
|
|
175
173
|
# Stop the tests and raise an error where the message is the last line
|
176
174
|
# executed before flunking.
|
177
175
|
def flunk(message = nil)
|
176
|
+
backtrace = caller.find { |line| line.include? 'top (required)' }
|
178
177
|
exception = Cutest::AssertionFailed.new(message)
|
179
|
-
exception.set_backtrace(
|
178
|
+
exception.set_backtrace(backtrace)
|
180
179
|
|
181
180
|
raise exception
|
182
181
|
end
|
data/test/assert_raise.rb
CHANGED
@@ -1,9 +1,27 @@
|
|
1
|
+
test "catches default exception" do
|
2
|
+
assert_raise do
|
3
|
+
raise
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
1
7
|
test "catches the right exception" do
|
2
8
|
assert_raise(RuntimeError) do
|
3
9
|
raise RuntimeError
|
4
10
|
end
|
5
11
|
end
|
6
12
|
|
13
|
+
test "catches exceptions lower than StandardError" do
|
14
|
+
assert_raise(NotImplementedError) do
|
15
|
+
raise NotImplementedError
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
test "raises if nothing raised" do
|
20
|
+
assert_raise(Cutest::AssertionFailed) do
|
21
|
+
assert_raise {}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
7
25
|
test "raises if the expectation is not met" do
|
8
26
|
assert_raise(Cutest::AssertionFailed) do
|
9
27
|
assert_raise(RuntimeError) do
|
@@ -20,3 +38,8 @@ test "returns the exception" do
|
|
20
38
|
assert_equal "error", exception.message
|
21
39
|
end
|
22
40
|
|
41
|
+
test "catches a custom exception" do
|
42
|
+
assert_raise do
|
43
|
+
raise Class.new(Exception)
|
44
|
+
end
|
45
|
+
end
|
data/test/run.rb
CHANGED
@@ -41,11 +41,23 @@ test "exit code of failed run" do
|
|
41
41
|
assert $?.to_i != 0
|
42
42
|
end
|
43
43
|
|
44
|
+
test "output of an assertion with custom message" do
|
45
|
+
expected = "\n" +
|
46
|
+
" test: failed with custom message\n" +
|
47
|
+
" line: assert(\"hello\".empty?, \"not empty\")\n" +
|
48
|
+
" file: test/fixtures/fail_custom_message.rb +2\n\n" +
|
49
|
+
"Cutest::AssertionFailed: not empty\n\n"
|
50
|
+
|
51
|
+
out = %x{./bin/cutest test/fixtures/fail_custom_message.rb}
|
52
|
+
|
53
|
+
assert_equal(expected, out)
|
54
|
+
end
|
55
|
+
|
44
56
|
test "output of custom assertion" do
|
45
57
|
expected = "\n" +
|
46
58
|
" test: failed custom assertion\n" +
|
47
59
|
" line: assert_empty \"foo\"\n" +
|
48
|
-
" file: test/fixtures/fail_custom_assertion.rb +
|
60
|
+
" file: test/fixtures/fail_custom_assertion.rb +6\n\n" +
|
49
61
|
"Cutest::AssertionFailed: not empty\n\n"
|
50
62
|
|
51
63
|
out = %x{./bin/cutest test/fixtures/fail_custom_assertion.rb}
|
@@ -88,3 +100,11 @@ test "runs by given scope and test names" do
|
|
88
100
|
|
89
101
|
assert_equal 0, $?.to_i
|
90
102
|
end
|
103
|
+
|
104
|
+
test "only prints the version" do
|
105
|
+
expected = "#{Cutest::VERSION}\n"
|
106
|
+
|
107
|
+
out = %x{./bin/cutest test/fixtures/success.rb -v}
|
108
|
+
|
109
|
+
assert_equal(expected, out)
|
110
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cutest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damian Janowski
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-12-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: clap
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - '>='
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
29
|
description: Run tests in separate processes to avoid shared state.
|
@@ -36,11 +36,11 @@ executables:
|
|
36
36
|
extensions: []
|
37
37
|
extra_rdoc_files: []
|
38
38
|
files:
|
39
|
-
-
|
39
|
+
- .gitignore
|
40
40
|
- CHANGELOG.md
|
41
41
|
- LICENSE
|
42
|
+
- Makefile
|
42
43
|
- README.markdown
|
43
|
-
- Rakefile
|
44
44
|
- bin/cutest
|
45
45
|
- cutest.gemspec
|
46
46
|
- lib/cutest.rb
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- test/assert_raise.rb
|
50
50
|
- test/fixtures/exception.rb
|
51
51
|
- test/fixtures/fail_custom_assertion.rb
|
52
|
+
- test/fixtures/fail_custom_message.rb
|
52
53
|
- test/fixtures/failure.rb
|
53
54
|
- test/fixtures/failure_in_loaded_file.rb
|
54
55
|
- test/fixtures/only_run_given_scope_name.rb
|
@@ -68,17 +69,17 @@ require_paths:
|
|
68
69
|
- lib
|
69
70
|
required_ruby_version: !ruby/object:Gem::Requirement
|
70
71
|
requirements:
|
71
|
-
- -
|
72
|
+
- - '>='
|
72
73
|
- !ruby/object:Gem::Version
|
73
74
|
version: '0'
|
74
75
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
76
|
requirements:
|
76
|
-
- -
|
77
|
+
- - '>='
|
77
78
|
- !ruby/object:Gem::Version
|
78
79
|
version: '0'
|
79
80
|
requirements: []
|
80
81
|
rubyforge_project:
|
81
|
-
rubygems_version: 2.
|
82
|
+
rubygems_version: 2.4.6
|
82
83
|
signing_key:
|
83
84
|
specification_version: 4
|
84
85
|
summary: Forking tests.
|