asrt 0.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/.travis.yml +9 -0
- data/CHANGELOG.rst +12 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +49 -0
- data/LICENSE.rst +4 -0
- data/README.rst +71 -0
- data/Rakefile +8 -0
- data/asrt.gemspec +11 -0
- data/lib/asrt.rb +44 -0
- data/spec/asrt/fallible_spec.rb +51 -0
- data/spec/asrt/infallible_spec.rb +23 -0
- metadata +54 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1ae767d14b182a4d8c749050c58a0a7dc5663b55
|
4
|
+
data.tar.gz: 0bacdf797d4bafbeecffc64126bcd03b4136d351
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d48ee7d8f08a0e3b2b867295f3d0b7488bbcab17f10482766371a9ccb09267085846eb1a35a195ff15385f0f7b11d6258a73cb13f4cdfeaf102f1bb710398daa
|
7
|
+
data.tar.gz: 850a6b2186ade4151ba04be01557fdfc0ac2ebefd5afb96d3614d3e7c88bafc290c4fcf3c3b6d610e6d31e4c9a002d4f3333d49beaeee4f14c17efea07e37b92
|
data/.travis.yml
ADDED
data/CHANGELOG.rst
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
coderay (1.1.0)
|
5
|
+
coveralls (0.7.0)
|
6
|
+
multi_json (~> 1.3)
|
7
|
+
rest-client
|
8
|
+
simplecov (>= 0.7)
|
9
|
+
term-ansicolor
|
10
|
+
thor
|
11
|
+
diff-lcs (1.2.5)
|
12
|
+
docile (1.1.3)
|
13
|
+
method_source (0.8.2)
|
14
|
+
mime-types (2.1)
|
15
|
+
multi_json (1.8.4)
|
16
|
+
pry (0.9.12.6)
|
17
|
+
coderay (~> 1.0)
|
18
|
+
method_source (~> 0.8)
|
19
|
+
slop (~> 3.4)
|
20
|
+
rake (10.1.1)
|
21
|
+
rest-client (1.6.7)
|
22
|
+
mime-types (>= 1.16)
|
23
|
+
rspec (2.14.1)
|
24
|
+
rspec-core (~> 2.14.0)
|
25
|
+
rspec-expectations (~> 2.14.0)
|
26
|
+
rspec-mocks (~> 2.14.0)
|
27
|
+
rspec-core (2.14.7)
|
28
|
+
rspec-expectations (2.14.5)
|
29
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
30
|
+
rspec-mocks (2.14.5)
|
31
|
+
simplecov (0.8.2)
|
32
|
+
docile (~> 1.1.0)
|
33
|
+
multi_json
|
34
|
+
simplecov-html (~> 0.8.0)
|
35
|
+
simplecov-html (0.8.0)
|
36
|
+
slop (3.4.7)
|
37
|
+
term-ansicolor (1.3.0)
|
38
|
+
tins (~> 1.0)
|
39
|
+
thor (0.18.1)
|
40
|
+
tins (1.0.0)
|
41
|
+
|
42
|
+
PLATFORMS
|
43
|
+
ruby
|
44
|
+
|
45
|
+
DEPENDENCIES
|
46
|
+
coveralls
|
47
|
+
pry
|
48
|
+
rake
|
49
|
+
rspec
|
data/LICENSE.rst
ADDED
data/README.rst
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
.. role:: ruby(code)
|
2
|
+
:language: ruby
|
3
|
+
|
4
|
+
.. role:: sh(code)
|
5
|
+
:language: sh
|
6
|
+
|
7
|
+
asrt
|
8
|
+
==========
|
9
|
+
|
10
|
+
.. image:: http://img.shields.io/license/MIT.png?color=green
|
11
|
+
:alt: MIT License
|
12
|
+
:target: http://opensource.org/licenses/MIT
|
13
|
+
|
14
|
+
Introduction
|
15
|
+
------------
|
16
|
+
|
17
|
+
`This gem <https://rubygems.org/gems/asrt>`_ simply gives you :ruby:`asrt` so
|
18
|
+
you can do
|
19
|
+
|
20
|
+
.. code-block:: ruby
|
21
|
+
|
22
|
+
def funny(input)
|
23
|
+
asrt input.is_a?(String), 'Me only eat strings.'
|
24
|
+
|
25
|
+
input + ' is funny'
|
26
|
+
end
|
27
|
+
|
28
|
+
Why use :ruby:`asrt` rather than :ruby:`assert`? Well, it's short and you may
|
29
|
+
like to use some other assert stuff for your unit tests.
|
30
|
+
|
31
|
+
|
32
|
+
Installation
|
33
|
+
------------
|
34
|
+
|
35
|
+
.. code-block:: sh
|
36
|
+
|
37
|
+
gem install asrt
|
38
|
+
|
39
|
+
In your ``Gemfile`` may want to have :ruby:`gem 'asrt'`.
|
40
|
+
|
41
|
+
Dependencies
|
42
|
+
............
|
43
|
+
|
44
|
+
None.
|
45
|
+
|
46
|
+
|
47
|
+
Examples
|
48
|
+
--------
|
49
|
+
|
50
|
+
.. code-block:: ruby
|
51
|
+
|
52
|
+
def funny(input)
|
53
|
+
asrt input.is_a?(String), 'Me only eat strings.'
|
54
|
+
|
55
|
+
input + ' is funny'
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
Contribute
|
61
|
+
----------
|
62
|
+
|
63
|
+
* `Fork <https://github.com/ct-clearhaus/asrt/fork>`_
|
64
|
+
* Clone
|
65
|
+
* :sh:`bundle install && bundle exec rake test`
|
66
|
+
* Make your changes
|
67
|
+
* :sh:`bundle exec rake test` again, preferably against Ruby 1.9.3, 2.0.0 and
|
68
|
+
2.1.0 (`Travis <https://travis-ci.org/ct-clearhaus/asrt/pull_requests>`_
|
69
|
+
will do that).
|
70
|
+
* Create a Pull Request
|
71
|
+
* Enjoy!
|
data/Rakefile
ADDED
data/asrt.gemspec
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'asrt'
|
3
|
+
s.version = '0.1.0'
|
4
|
+
s.summary = 'Assertion library.'
|
5
|
+
s.description = 'Allows you to assert things to be true in your code.'
|
6
|
+
s.license = 'MIT'
|
7
|
+
s.authors = ['Casper Thomsen']
|
8
|
+
s.email = 'ct@clearhaus.com'
|
9
|
+
s.homepage = 'https://github.com/ct-clearhaus/asrt'
|
10
|
+
s.files = `git ls-files`.split($/)
|
11
|
+
end
|
data/lib/asrt.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
module Asrt
|
2
|
+
class AssertionError < StandardError
|
3
|
+
end
|
4
|
+
|
5
|
+
module Fallible
|
6
|
+
def asrt(*args, &block)
|
7
|
+
if block.nil?
|
8
|
+
condition, message, garbage = args
|
9
|
+
|
10
|
+
okay = (condition == true)
|
11
|
+
else
|
12
|
+
message, garbage = args
|
13
|
+
|
14
|
+
okay = (yield rescue false) == true
|
15
|
+
end
|
16
|
+
|
17
|
+
raise ArgumentError, 'wrong number of arguments.' unless garbage.nil?
|
18
|
+
|
19
|
+
raise AssertionError, message unless okay
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Infallible
|
24
|
+
def asrt(*args, &block)
|
25
|
+
if block.nil?
|
26
|
+
_, _, garbage = args
|
27
|
+
else
|
28
|
+
_, garbage = args
|
29
|
+
end
|
30
|
+
|
31
|
+
raise ArgumentError, 'wrong number of arguments.' unless garbage.nil?
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.disable
|
36
|
+
Object.class_eval do
|
37
|
+
include Asrt::Infallible
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Object.class_eval do
|
43
|
+
include Asrt::Fallible
|
44
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'asrt'
|
2
|
+
|
3
|
+
describe 'Asrt::Fallible#asrt' do
|
4
|
+
it 'should fail if no parameter nor block is given' do
|
5
|
+
expect{ asrt }.to raise_error(Asrt::AssertionError)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should fail unless parameter is true' do
|
9
|
+
expect{ asrt false }.to raise_error(Asrt::AssertionError)
|
10
|
+
expect{ asrt nil }.to raise_error(Asrt::AssertionError)
|
11
|
+
expect{ asrt 1 }.to raise_error(Asrt::AssertionError)
|
12
|
+
expect{ asrt 'true' }.to raise_error(Asrt::AssertionError)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should not fail when parameter is true' do
|
16
|
+
expect{ asrt true }.to_not raise_error
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should fail when block yields anything but true' do
|
20
|
+
expect{ asrt { false } }.to raise_error(Asrt::AssertionError)
|
21
|
+
expect{ asrt { nil } }.to raise_error(Asrt::AssertionError)
|
22
|
+
expect{ asrt { 1 } }.to raise_error(Asrt::AssertionError)
|
23
|
+
expect{ asrt { 'true' } }.to raise_error(Asrt::AssertionError)
|
24
|
+
expect{ asrt { raise StandardError } }.to raise_error(Asrt::AssertionError)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should not fail when block yields true' do
|
28
|
+
expect{ asrt { true } }.to_not raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should fail with the given message, when failing' do
|
32
|
+
expect{ asrt false, 'msg' }.to raise_error(Asrt::AssertionError, 'msg')
|
33
|
+
expect{ asrt 'msg' do false end }.to raise_error(Asrt::AssertionError, 'msg')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should complain when too many arguments are given' do
|
37
|
+
expect{ asrt 1, 2, 3 }.to raise_error(ArgumentError)
|
38
|
+
expect{ asrt 1, 2, 3, 4 }.to raise_error(ArgumentError)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should have the right associativity' do
|
42
|
+
def negate(x)
|
43
|
+
not x
|
44
|
+
end
|
45
|
+
|
46
|
+
expect{ asrt negate false }.to_not raise_error
|
47
|
+
expect{ asrt ! false }.to_not raise_error
|
48
|
+
expect{ asrt 1 + 2 == 3 }.to_not raise_error
|
49
|
+
expect{ asrt raise StandardError rescue raise StandardError, 'msg' }.to raise_error(StandardError, 'msg')
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'asrt'
|
2
|
+
|
3
|
+
describe 'Asrt::Infallible#asrt' do
|
4
|
+
include Asrt::Infallible
|
5
|
+
|
6
|
+
it 'should not fail' do
|
7
|
+
expect{
|
8
|
+
asrt
|
9
|
+
asrt true
|
10
|
+
asrt false
|
11
|
+
asrt false, 'message'
|
12
|
+
asrt 'message' do false end
|
13
|
+
asrt 'message' do raise StandardError end
|
14
|
+
}.to_not raise_error
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should complain when too many arguments are given' do
|
18
|
+
expect{ asrt 1, 2 do 3 end }.to raise_error(ArgumentError)
|
19
|
+
expect{ asrt 1, 2, 3 }.to raise_error(ArgumentError)
|
20
|
+
expect{ asrt 1, 2, 3, 4 }.to raise_error(ArgumentError)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: asrt
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Casper Thomsen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-30 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Allows you to assert things to be true in your code.
|
14
|
+
email: ct@clearhaus.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- .travis.yml
|
20
|
+
- CHANGELOG.rst
|
21
|
+
- Gemfile
|
22
|
+
- Gemfile.lock
|
23
|
+
- LICENSE.rst
|
24
|
+
- README.rst
|
25
|
+
- Rakefile
|
26
|
+
- asrt.gemspec
|
27
|
+
- lib/asrt.rb
|
28
|
+
- spec/asrt/fallible_spec.rb
|
29
|
+
- spec/asrt/infallible_spec.rb
|
30
|
+
homepage: https://github.com/ct-clearhaus/asrt
|
31
|
+
licenses:
|
32
|
+
- MIT
|
33
|
+
metadata: {}
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirements: []
|
49
|
+
rubyforge_project:
|
50
|
+
rubygems_version: 2.2.2
|
51
|
+
signing_key:
|
52
|
+
specification_version: 4
|
53
|
+
summary: Assertion library.
|
54
|
+
test_files: []
|