minitest-bonus-assertions 1.0
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 +7 -0
- data/.autotest +27 -0
- data/.document +5 -0
- data/.gemtest +1 -0
- data/.minitest.rb +2 -0
- data/.travis.yml +35 -0
- data/.workenv +5 -0
- data/Contributing.rdoc +67 -0
- data/Gemfile +9 -0
- data/History.rdoc +5 -0
- data/Licence.rdoc +24 -0
- data/Manifest.txt +17 -0
- data/README.rdoc +58 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/lib/minitest-bonus-assertions.rb +134 -0
- data/test/minitest_config.rb +42 -0
- data/test/test_minitest-bonus-assertions.rb +164 -0
- metadata +278 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 34a1d4e2eb4c1707a301a7c716e5d8f39c961ff1
|
4
|
+
data.tar.gz: 7d72041f067772a9634b299c9cb9eecc7ba337f4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 90691c38fede3f41b44f488646e67d3f5626c602361f775ecd3ae3423fe6e7381bb9c9ba5c53c1b8723ccba2460876c5dc3cb00369c9536b075a7ea12a898850
|
7
|
+
data.tar.gz: 17bd17bba6f87c5f128723eeb2932d3be938275c8a8ff478cf62a9d8c67faa8124cdb2eef3dc689bf5f3c109cd53e0385c799edb2774bb4cf4492f211c415810
|
data/.autotest
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require "autotest/restart"
|
4
|
+
|
5
|
+
Autotest.add_hook :initialize do |at|
|
6
|
+
# .minitest.rb ensures that the gem version of minitest is used.
|
7
|
+
at.testlib = ".minitest.rb"
|
8
|
+
# at.testlib = "minitest/unit"
|
9
|
+
#
|
10
|
+
# at.extra_files << "../some/external/dependency.rb"
|
11
|
+
#
|
12
|
+
# at.libs << ":../some/external"
|
13
|
+
#
|
14
|
+
# at.add_exception "vendor"
|
15
|
+
#
|
16
|
+
# at.add_mapping(/dependency.rb/) do |f, _|
|
17
|
+
# at.files_matching(/test_.*rb$/)
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# %w(TestA TestB).each do |klass|
|
21
|
+
# at.extra_class_map[klass] = "test/test_misc.rb"
|
22
|
+
# end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Autotest.add_hook :run_command do |at|
|
26
|
+
# system "rake build"
|
27
|
+
# end
|
data/.document
ADDED
data/.gemtest
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
|
data/.minitest.rb
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
---
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.2.0
|
5
|
+
- 2.1.0
|
6
|
+
- 2.0.0
|
7
|
+
- 1.9.3
|
8
|
+
- ruby-head
|
9
|
+
- jruby-19mode
|
10
|
+
- jruby-head
|
11
|
+
- rbx-2
|
12
|
+
matrix:
|
13
|
+
allow_failures:
|
14
|
+
- rvm: rbx-2
|
15
|
+
- rvm: jruby-head
|
16
|
+
- rvm: ruby-head
|
17
|
+
gemfile:
|
18
|
+
- Gemfile
|
19
|
+
before_script:
|
20
|
+
- |
|
21
|
+
case "${TRAVIS_RUBY_VERSION}" in
|
22
|
+
rbx*)
|
23
|
+
gem install psych
|
24
|
+
;;
|
25
|
+
esac
|
26
|
+
- rake travis:before -t
|
27
|
+
script: rake travis
|
28
|
+
after_script:
|
29
|
+
- rake travis:after -t
|
30
|
+
notifications:
|
31
|
+
email:
|
32
|
+
recipients:
|
33
|
+
- halostatue@gmail.com
|
34
|
+
on_success: change
|
35
|
+
on_failure: always
|
data/.workenv
ADDED
data/Contributing.rdoc
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
== Contributing
|
2
|
+
|
3
|
+
I value any contribution to minitest-bonus-assertions you can provide: a bug
|
4
|
+
report, a feature request, or code contributions.
|
5
|
+
|
6
|
+
As minitest-bonus-assertions is a mature codebase, there are a few guidelines:
|
7
|
+
|
8
|
+
* Changes *will* *not* be accepted without tests. The test suite is written
|
9
|
+
with {Minitest}[https://github.com/seattlerb/minitest] (of course).
|
10
|
+
* Match my coding style.
|
11
|
+
* Use a thoughtfully-named topic branch that contains your change. Rebase your
|
12
|
+
commits into logical chunks as necessary.
|
13
|
+
* Use {quality commit messages}[http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html].
|
14
|
+
* Do not change the version number; when your patch is accepted and a release
|
15
|
+
is made, the version will be updated at that point.
|
16
|
+
* Submit a GitHub pull request with your changes.
|
17
|
+
* New behaviours require new or updated documentation.
|
18
|
+
|
19
|
+
=== Test Dependencies
|
20
|
+
|
21
|
+
minitest-bonus-assertions uses Ryan Davis’s
|
22
|
+
{Hoe}[https://github.com/seattlerb/hoe] to manage the release process, and it
|
23
|
+
adds a number of rake tasks. You will mostly be interested in:
|
24
|
+
|
25
|
+
$ rake
|
26
|
+
|
27
|
+
which runs the tests the same way that:
|
28
|
+
|
29
|
+
$ rake test
|
30
|
+
$ rake travis
|
31
|
+
|
32
|
+
will do.
|
33
|
+
|
34
|
+
To assist with the installation of the development dependencies for
|
35
|
+
minitest-bonus-assertions, I have provided the simplest possible Gemfile
|
36
|
+
pointing to the (generated) +minitest-bonus-assertions.gemspec+ file. This will
|
37
|
+
permit you to do:
|
38
|
+
|
39
|
+
$ bundle install
|
40
|
+
|
41
|
+
to get the development dependencies. If you aleady have +hoe+ installed, you
|
42
|
+
can accomplish the same thing with:
|
43
|
+
|
44
|
+
$ rake newb
|
45
|
+
|
46
|
+
This task will install any missing dependencies, run the tests/specs, and
|
47
|
+
generate the RDoc.
|
48
|
+
|
49
|
+
=== Workflow
|
50
|
+
|
51
|
+
Here's the most direct way to get your work merged into the project:
|
52
|
+
|
53
|
+
* Fork the project.
|
54
|
+
* Clone down your fork (<tt>git clone git://github.com/halostatue/minitest-bonus-assertions.git</tt>).
|
55
|
+
* Create a topic branch to contain your change (<tt>git checkout -b my\_awesome\_feature</tt>).
|
56
|
+
* Hack away, add tests. Not necessarily in that order.
|
57
|
+
* Make sure everything still passes by running +rake+.
|
58
|
+
* If necessary, rebase your commits into logical chunks, without errors.
|
59
|
+
* Push the branch up (<tt>git push origin my\_awesome\_feature</tt>).
|
60
|
+
* Create a pull request against halostatue/minitest-bonus-assertions and describe
|
61
|
+
what your change does and the why you think it should be merged.
|
62
|
+
|
63
|
+
=== Contributors
|
64
|
+
|
65
|
+
* Austin Ziegler forked minitest-bonus-assertions.
|
66
|
+
* Ben Somers (@bensomers) created minitest-extra-assertions
|
67
|
+
* Justin George (@jaggederest) added assert_between.
|
data/Gemfile
ADDED
data/History.rdoc
ADDED
data/Licence.rdoc
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
== Licence
|
2
|
+
|
3
|
+
This software is available under an MIT-style licence.
|
4
|
+
|
5
|
+
* Copyright 2015 Austin Ziegler
|
6
|
+
* Copyright 2012 Ben Somers
|
7
|
+
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
9
|
+
this software and associated documentation files (the "Software"), to deal in
|
10
|
+
the Software without restriction, including without limitation the rights to
|
11
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
12
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
13
|
+
so, subject to the following conditions.
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be included in all
|
16
|
+
copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
24
|
+
SOFTWARE.
|
data/Manifest.txt
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
.autotest
|
2
|
+
.document
|
3
|
+
.gemtest
|
4
|
+
.minitest.rb
|
5
|
+
.travis.yml
|
6
|
+
.workenv
|
7
|
+
Contributing.rdoc
|
8
|
+
Gemfile
|
9
|
+
History.rdoc
|
10
|
+
Licence.rdoc
|
11
|
+
Manifest.txt
|
12
|
+
README.rdoc
|
13
|
+
Rakefile
|
14
|
+
VERSION
|
15
|
+
lib/minitest-bonus-assertions.rb
|
16
|
+
test/minitest_config.rb
|
17
|
+
test/test_minitest-bonus-assertions.rb
|
data/README.rdoc
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
= minitest-bonus-assertions
|
2
|
+
|
3
|
+
code :: https://github.com/halostatue/minitest-bonus-assertions
|
4
|
+
bugs :: https://github.com/halostatue/minitest-bonus-assertions/issues
|
5
|
+
continuous integration :: {<img src="https://travis-ci.org/halostatue/minitest-bonus-assertions.png" />}[https://travis-ci.org/halostatue/minitest-bonus-assertions]
|
6
|
+
|
7
|
+
== Description
|
8
|
+
|
9
|
+
Additional assertions for {Minitest}[https://github.com/seattlerb/minitest].
|
10
|
+
|
11
|
+
== Features
|
12
|
+
|
13
|
+
New assertions:
|
14
|
+
|
15
|
+
assert_false, must_be_false
|
16
|
+
assert_true, must_Be_true
|
17
|
+
assert_between, must_be_between
|
18
|
+
assert_has_keys, must_have_keys
|
19
|
+
assert_missing_keys, must_not_have_keys
|
20
|
+
assert_raises_with_message, must_raise_with_message
|
21
|
+
|
22
|
+
== Background
|
23
|
+
|
24
|
+
minitest-bonus-assertions started life as a patch to the assertions provided by
|
25
|
+
Ben Somer’s
|
26
|
+
{minitest-extra-assertions}[https://github.com/bensomers/minitest-extra-assertions].
|
27
|
+
There were some nice assertions included, but there were other changes that
|
28
|
+
needed to be made to bring it up to support Minitest 5. There was also an
|
29
|
+
override to the default +assert_match+ implementation meant to ease the
|
30
|
+
transition from Test::Unit (the main reason he wrote this assertion plugin for
|
31
|
+
Minitest in the first place). I do not believe this is sensible five major
|
32
|
+
versions in: I removed it.
|
33
|
+
|
34
|
+
Because Ben did not feel comfortable making this particular change, I felt that
|
35
|
+
the best way to provide the original assertions and my new assertions—without
|
36
|
+
the +assert_match+ override—was to fork this as a new project. I am indebted to
|
37
|
+
Ben for writing these assertions in the first place.
|
38
|
+
|
39
|
+
== Install
|
40
|
+
|
41
|
+
Add it to your Gemfile:
|
42
|
+
|
43
|
+
gem 'minitest-bonus-assertions', '~> 1.0'
|
44
|
+
|
45
|
+
Or manually install:
|
46
|
+
|
47
|
+
% gem install minitest-bonus-assertions
|
48
|
+
|
49
|
+
== minitest-bonus-assertions Semantic Versioning
|
50
|
+
|
51
|
+
minitest-bonus-assertions uses a {Semantic Versioning}[http://semver.org/]
|
52
|
+
scheme with one change:
|
53
|
+
|
54
|
+
* When PATCH is zero (+0+), it will be omitted from version references.
|
55
|
+
|
56
|
+
:include: Contributing.rdoc
|
57
|
+
|
58
|
+
:include: Licence.rdoc
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'hoe'
|
5
|
+
require 'rake/clean'
|
6
|
+
|
7
|
+
Hoe.plugin :doofus
|
8
|
+
Hoe.plugin :gemspec2
|
9
|
+
Hoe.plugin :git
|
10
|
+
Hoe.plugin :minitest
|
11
|
+
Hoe.plugin :travis
|
12
|
+
Hoe.plugin :email unless ENV['CI'] or ENV['TRAVIS']
|
13
|
+
|
14
|
+
spec = Hoe.spec 'minitest-bonus-assertions' do
|
15
|
+
developer('Austin Ziegler', 'halostatue@gmail.com')
|
16
|
+
|
17
|
+
self.history_file = 'History.rdoc'
|
18
|
+
self.readme_file = 'README.rdoc'
|
19
|
+
self.extra_rdoc_files = FileList["*.rdoc"].to_a
|
20
|
+
|
21
|
+
license "MIT"
|
22
|
+
|
23
|
+
self.need_tar = true
|
24
|
+
self.require_ruby_version '>= 1.9.2'
|
25
|
+
|
26
|
+
self.extra_dev_deps << ['hoe-doofus', '~> 1.0']
|
27
|
+
self.extra_dev_deps << ['hoe-gemspec2', '~> 1.1']
|
28
|
+
self.extra_dev_deps << ['hoe-git', '~> 1.5']
|
29
|
+
self.extra_dev_deps << ['hoe-travis', '~> 1.2']
|
30
|
+
self.extra_dev_deps << ['minitest', '~> 5.4']
|
31
|
+
self.extra_dev_deps << ['minitest-around', '~> 0.3']
|
32
|
+
self.extra_dev_deps << ['minitest-autotest', '~> 1.0']
|
33
|
+
self.extra_dev_deps << ['minitest-bisect', '~> 1.2']
|
34
|
+
self.extra_dev_deps << ['minitest-focus', '~> 1.1']
|
35
|
+
self.extra_dev_deps << ['minitest-moar', '~> 0.0']
|
36
|
+
self.extra_dev_deps << ['minitest-pretty_diff', '~> 0.1']
|
37
|
+
self.extra_dev_deps << ['rake', '>= 10.0']
|
38
|
+
self.extra_dev_deps << ['simplecov', '~> 0.7']
|
39
|
+
end
|
40
|
+
|
41
|
+
namespace :test do
|
42
|
+
task :coverage do
|
43
|
+
spec.test_prelude = [
|
44
|
+
'require "simplecov"',
|
45
|
+
'SimpleCov.start("test_frameworks") { command_name "Minitest" }',
|
46
|
+
'gem "minitest"'
|
47
|
+
].join('; ')
|
48
|
+
Rake::Task['test'].execute
|
49
|
+
end
|
50
|
+
CLOBBER << 'coverage'
|
51
|
+
end
|
52
|
+
|
53
|
+
# vim: syntax=ruby
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.2.0
|
@@ -0,0 +1,134 @@
|
|
1
|
+
module Minitest
|
2
|
+
module BonusAssertions
|
3
|
+
VERSION = '1.0'
|
4
|
+
end
|
5
|
+
module Assertions
|
6
|
+
##
|
7
|
+
# Fails unless +obj+ is literally +false+.
|
8
|
+
|
9
|
+
def assert_false obj, msg = nil
|
10
|
+
msg = message(msg) { "<false> expected but was #{mu_pp(obj)}" }
|
11
|
+
assert obj == false, msg
|
12
|
+
end
|
13
|
+
|
14
|
+
##
|
15
|
+
# Fails unless +obj+ is literally +true+.
|
16
|
+
|
17
|
+
def assert_true obj, msg = nil
|
18
|
+
msg = message(msg) { "<true> expected but was #{mu_pp(obj)}" }
|
19
|
+
assert obj == true, msg
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# Fails unless +exp+ is between +lo+ and +hi+, or is in +range+.
|
24
|
+
#
|
25
|
+
# :call-seq:
|
26
|
+
# assert_between lo, hi, exp, msg = nil
|
27
|
+
# assert_between range, exp, msg = nil
|
28
|
+
|
29
|
+
def assert_between(*args)
|
30
|
+
lo, hi, exp, msg = if args.first.is_a?(Range)
|
31
|
+
[args.first.begin, args.first.end, args[1], args[2]]
|
32
|
+
else
|
33
|
+
args[0..3]
|
34
|
+
end
|
35
|
+
lo, hi = hi, lo if lo > hi
|
36
|
+
msg = message(msg) { "Expected #{mu_pp(exp)} to be between #{mu_pp(lo)} and #{mu_pp(hi)}" }
|
37
|
+
assert (lo < exp && exp < hi), msg
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Fails unless +obj+ has all of the +keys+ listed.
|
42
|
+
def assert_has_keys obj, keys, msg = nil
|
43
|
+
keys = [ keys ] unless keys.is_a?(Array)
|
44
|
+
msg = message(msg) { "Expected #{mu_pp(obj)} to include all keys #{mu_pp(keys)}" }
|
45
|
+
keys.all? { |key| assert obj.key?(key), msg }
|
46
|
+
end
|
47
|
+
alias_method :refute_missing_keys, :assert_has_keys
|
48
|
+
|
49
|
+
##
|
50
|
+
# Fails if +obj+ has any of the keys listed.
|
51
|
+
def assert_missing_keys obj, keys, msg = nil
|
52
|
+
keys = [ keys ] unless keys.is_a?(Array)
|
53
|
+
msg = message(msg) { "Expected #{mu_pp(obj)} not to include any of these keys #{mu_pp(keys)}" }
|
54
|
+
keys.none? { |key| refute obj.key?(key), msg }
|
55
|
+
end
|
56
|
+
alias_method :refute_has_keys, :assert_missing_keys
|
57
|
+
|
58
|
+
##
|
59
|
+
# Fails unless the block raises +exp+ with the message +exp_msg+. Returns
|
60
|
+
# the exception matched so you can check other attributes.
|
61
|
+
def assert_raises_with_message exp, exp_msg, msg = nil
|
62
|
+
msg = message(msg) { "#{mu_pp(exp)} exception expected with message #{mu_pp(exp_msg)}" }
|
63
|
+
|
64
|
+
exception = assert_raises exp do
|
65
|
+
yield
|
66
|
+
end
|
67
|
+
|
68
|
+
assert_equal exp_msg, exception.message, msg
|
69
|
+
exception
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
module Expectations
|
74
|
+
##
|
75
|
+
# See Minitest::Assertions#assert_false
|
76
|
+
#
|
77
|
+
# false.must_be_false
|
78
|
+
#
|
79
|
+
# :method: must_be_false
|
80
|
+
|
81
|
+
infect_an_assertion :assert_false, :must_be_false, :unary
|
82
|
+
|
83
|
+
##
|
84
|
+
# See Minitest::Assertions#assert_true
|
85
|
+
#
|
86
|
+
# true.must_be_true
|
87
|
+
#
|
88
|
+
# :method: must_be_true
|
89
|
+
|
90
|
+
infect_an_assertion :assert_true, :must_be_true, :unary
|
91
|
+
|
92
|
+
##
|
93
|
+
# See Minitest::Assertions#assert_between
|
94
|
+
#
|
95
|
+
# 2.must_be_between 1, 3
|
96
|
+
# 2.must_be_between 1..3
|
97
|
+
|
98
|
+
def must_be_between *args
|
99
|
+
hi, lo, msg = if args.first.is_a?(Range)
|
100
|
+
[args.first.begin, args.first.end, args[1]]
|
101
|
+
else
|
102
|
+
args[0..2]
|
103
|
+
end
|
104
|
+
assert_between lo, hi, self
|
105
|
+
end
|
106
|
+
|
107
|
+
##
|
108
|
+
# See Minitest::Assertions#assert_has_keys
|
109
|
+
#
|
110
|
+
# hash.must_have_keys %w(a b c)
|
111
|
+
#
|
112
|
+
# :method: must_have_keys
|
113
|
+
|
114
|
+
infect_an_assertion :assert_has_keys, :must_have_keys, :unary
|
115
|
+
|
116
|
+
##
|
117
|
+
# See Minitest::Assertions#assert_missing_keys
|
118
|
+
#
|
119
|
+
# hash.must_not_have_keys %w(a b c)
|
120
|
+
#
|
121
|
+
# :method: must_not_have_keys
|
122
|
+
|
123
|
+
infect_an_assertion :assert_missing_keys, :must_not_have_keys, :unary
|
124
|
+
|
125
|
+
##
|
126
|
+
# See Minitest::Assertions#assert_raises_with_message
|
127
|
+
#
|
128
|
+
# proc { ... }.must_raise_with_message exception, message
|
129
|
+
#
|
130
|
+
# :method: must_raise_with_message
|
131
|
+
|
132
|
+
infect_an_assertion :assert_raises_with_message, :must_raise_with_message
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
gem 'minitest'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/pretty_diff'
|
4
|
+
require 'minitest/focus'
|
5
|
+
require 'minitest/moar'
|
6
|
+
require 'minitest/bisect'
|
7
|
+
|
8
|
+
require 'minitest-bonus-assertions'
|
9
|
+
|
10
|
+
module Minitest::AssertionTester
|
11
|
+
def setup
|
12
|
+
super
|
13
|
+
|
14
|
+
Minitest::Test.reset
|
15
|
+
|
16
|
+
@tc = Minitest::Test.new 'fake tc'
|
17
|
+
@zomg = "zomg ponies!"
|
18
|
+
@assertion_count = 1
|
19
|
+
end
|
20
|
+
|
21
|
+
def teardown
|
22
|
+
if @tc.assertions
|
23
|
+
assert_equal @assertion_count, @tc.assertions,
|
24
|
+
"expected #{@assertion_count} assertions to be fired during the test, not #{@tc.assertions}"
|
25
|
+
end
|
26
|
+
Object.send(:remove_const, :ATestCase) if defined? ATestCase
|
27
|
+
end
|
28
|
+
|
29
|
+
def util_assert_triggered expected, klass = Minitest::Assertion
|
30
|
+
e = assert_raises(klass) do
|
31
|
+
yield
|
32
|
+
end
|
33
|
+
|
34
|
+
msg = e.message.sub(/(---Backtrace---).*/m, '\1')
|
35
|
+
msg.gsub!(/\(oid=[-0-9]+\)/, '(oid=N)')
|
36
|
+
msg.gsub!(/(\d\.\d{6})\d+/, '\1xxx') # normalize: ruby version, impl, platform
|
37
|
+
|
38
|
+
assert_equal expected, msg
|
39
|
+
end
|
40
|
+
|
41
|
+
Minitest::Test.send(:include, self)
|
42
|
+
end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'minitest_config'
|
4
|
+
|
5
|
+
describe Minitest::BonusAssertions do
|
6
|
+
describe ".assert_true" do
|
7
|
+
it "return true for true" do
|
8
|
+
@assertion_count = 1
|
9
|
+
|
10
|
+
assert_equal true, @tc.assert_true(true), "returns true for true"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "be triggered for false or nil" do
|
14
|
+
@assertion_count = 2
|
15
|
+
|
16
|
+
util_assert_triggered "<true> expected but was false." do
|
17
|
+
@tc.assert_true false
|
18
|
+
end
|
19
|
+
util_assert_triggered "<true> expected but was nil." do
|
20
|
+
@tc.assert_true nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it "be triggered for things that aren't true but evaluate to true" do
|
25
|
+
@assertion_count = 1
|
26
|
+
|
27
|
+
util_assert_triggered "<true> expected but was Object." do
|
28
|
+
@tc.assert_true Object
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe ".assert_false" do
|
34
|
+
it "return true for false" do
|
35
|
+
@assertion_count = 1
|
36
|
+
|
37
|
+
assert_equal true, @tc.assert_false(false), "returns true for false"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "be triggered for nil" do
|
41
|
+
@assertion_count = 1
|
42
|
+
|
43
|
+
util_assert_triggered "<false> expected but was nil." do
|
44
|
+
@tc.assert_false nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it "be triggered for things that evalute to true" do
|
49
|
+
@assertion_count = 1
|
50
|
+
|
51
|
+
util_assert_triggered "<false> expected but was Object." do
|
52
|
+
@tc.assert_false Object
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe ".assert_between" do
|
58
|
+
it "return true for basic integers" do
|
59
|
+
@assertion_count = 1
|
60
|
+
assert_equal true, @tc.assert_between(1,10,5), "returns true for 1 to 10 and 5"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "return true for the range case" do
|
64
|
+
@assertion_count = 1
|
65
|
+
assert_equal true, @tc.assert_between((1..10), 5), "returns true for 1..10 with 5"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "handle the case where the hi part is first" do
|
69
|
+
@assertion_count = 1
|
70
|
+
assert_equal true, @tc.assert_between(10, 1, 5), "returns true for 10 to 1, with 5"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "return false for values outside the bounds" do
|
74
|
+
@assertion_count = 1
|
75
|
+
util_assert_triggered "Expected 100 to be between 1 and 10." do
|
76
|
+
@tc.assert_between(1, 10, 100)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it "raise error for incompatible values" do
|
81
|
+
@assertion_count = 0
|
82
|
+
assert_raises ArgumentError do
|
83
|
+
@tc.assert_between(1, 10, Time.now)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe ".assert_has_keys" do
|
89
|
+
it "return true if the keys are present" do
|
90
|
+
@assertion_count = 1
|
91
|
+
assert_equal true, @tc.assert_has_keys({ "a" => 1 }, "a"), %Q(returns true for key 'a' in {"a"=>1})
|
92
|
+
end
|
93
|
+
|
94
|
+
it "be triggered for a missing value" do
|
95
|
+
@assertion_count = 2
|
96
|
+
hash = { "a" => 1 }
|
97
|
+
keys = %w(a b)
|
98
|
+
util_assert_triggered %Q(Expected #{mu_pp(hash)} to include all keys #{mu_pp(keys)}.) do
|
99
|
+
@tc.assert_has_keys(hash, keys)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it "raise error for incompatible values" do
|
104
|
+
@assertion_count = 0
|
105
|
+
assert_raises NoMethodError do
|
106
|
+
@tc.assert_has_keys([], "a")
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe ".assert_missing_keys" do
|
112
|
+
it "return true if the keys are missing" do
|
113
|
+
@assertion_count = 1
|
114
|
+
assert_equal true, @tc.assert_missing_keys({ "a" => 1 }, "b"), "returns true for key 'b' missing from { 'a' => 1 }"
|
115
|
+
end
|
116
|
+
|
117
|
+
it "be triggered for a present value" do
|
118
|
+
@assertion_count = 1
|
119
|
+
hash = { "a" => 1 }
|
120
|
+
keys = %w(a b)
|
121
|
+
util_assert_triggered %Q(Expected #{mu_pp(hash)} not to include any of these keys #{mu_pp(keys)}.) do
|
122
|
+
@tc.assert_missing_keys(hash, keys)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
it "raise error for incompatible values" do
|
127
|
+
@assertion_count = 0
|
128
|
+
assert_raises NoMethodError do
|
129
|
+
@tc.assert_missing_keys([], "a")
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe ".assert_raises_with_message" do
|
135
|
+
it "return the matched exception if the exception and message match" do
|
136
|
+
@assertion_count = 2
|
137
|
+
|
138
|
+
res = @tc.assert_raises_with_message(ArgumentError, "Don't have a cow, man!") do
|
139
|
+
raise ArgumentError, "Don't have a cow, man!"
|
140
|
+
end
|
141
|
+
|
142
|
+
assert_kind_of ArgumentError, res
|
143
|
+
end
|
144
|
+
|
145
|
+
it "is triggered with a different exception" do
|
146
|
+
@assertion_count = 1
|
147
|
+
|
148
|
+
util_assert_triggered %Q(#{mu_pp([ArgumentError])} exception expected, not\nClass: <NoMethodError>\nMessage: <"NoMethodError">\n---Backtrace---) do
|
149
|
+
@tc.assert_raises_with_message(ArgumentError, "Don’t have a cow, man!") do
|
150
|
+
raise NoMethodError
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
it "be triggered with a different message" do
|
156
|
+
@assertion_count = 2
|
157
|
+
util_assert_triggered %Q(ArgumentError exception expected with message "Don’t have a cow, man!".\nExpected: "Don’t have a cow, man!"\n Actual: "Have a cow, man!") do
|
158
|
+
@tc.assert_raises_with_message(ArgumentError, "Don’t have a cow, man!") do
|
159
|
+
raise ArgumentError, "Have a cow, man!"
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
metadata
ADDED
@@ -0,0 +1,278 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: minitest-bonus-assertions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Austin Ziegler
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: hoe-doofus
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: hoe-gemspec2
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: hoe-git
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.5'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.5'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: hoe-travis
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.2'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: minitest-around
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.3'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.3'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: minitest-autotest
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: minitest-bisect
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.2'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.2'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: minitest-focus
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.1'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.1'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: minitest-moar
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: minitest-pretty_diff
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0.1'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0.1'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rake
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '10.0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '10.0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: simplecov
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0.7'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0.7'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: hoe
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '3.13'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '3.13'
|
223
|
+
description: Additional assertions for {Minitest}[https://github.com/seattlerb/minitest].
|
224
|
+
email:
|
225
|
+
- halostatue@gmail.com
|
226
|
+
executables: []
|
227
|
+
extensions: []
|
228
|
+
extra_rdoc_files:
|
229
|
+
- Contributing.rdoc
|
230
|
+
- History.rdoc
|
231
|
+
- Licence.rdoc
|
232
|
+
- Manifest.txt
|
233
|
+
- README.rdoc
|
234
|
+
files:
|
235
|
+
- ".autotest"
|
236
|
+
- ".document"
|
237
|
+
- ".gemtest"
|
238
|
+
- ".minitest.rb"
|
239
|
+
- ".travis.yml"
|
240
|
+
- ".workenv"
|
241
|
+
- Contributing.rdoc
|
242
|
+
- Gemfile
|
243
|
+
- History.rdoc
|
244
|
+
- Licence.rdoc
|
245
|
+
- Manifest.txt
|
246
|
+
- README.rdoc
|
247
|
+
- Rakefile
|
248
|
+
- VERSION
|
249
|
+
- lib/minitest-bonus-assertions.rb
|
250
|
+
- test/minitest_config.rb
|
251
|
+
- test/test_minitest-bonus-assertions.rb
|
252
|
+
homepage: https://github.com/halostatue/minitest-bonus-assertions
|
253
|
+
licenses:
|
254
|
+
- MIT
|
255
|
+
metadata: {}
|
256
|
+
post_install_message:
|
257
|
+
rdoc_options:
|
258
|
+
- "--main"
|
259
|
+
- README.rdoc
|
260
|
+
require_paths:
|
261
|
+
- lib
|
262
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
263
|
+
requirements:
|
264
|
+
- - ">="
|
265
|
+
- !ruby/object:Gem::Version
|
266
|
+
version: 1.9.2
|
267
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
requirements: []
|
273
|
+
rubyforge_project:
|
274
|
+
rubygems_version: 2.2.2
|
275
|
+
signing_key:
|
276
|
+
specification_version: 4
|
277
|
+
summary: Additional assertions for {Minitest}[https://github.com/seattlerb/minitest].
|
278
|
+
test_files: []
|