basic_assert 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1efadba56623ddda47c99eebf7b6e157081e4646
4
+ data.tar.gz: a784c715b34b882a93c584c55b441346e59b608f
5
+ SHA512:
6
+ metadata.gz: 50252d47a6d154eed63cb272f1c9b1abf1c635b28b1e2e5066af3d44e32d8e2769b14562276dd8c19185bca97a516fb9420c510af1ecbb08f94e20c6fb9effa7
7
+ data.tar.gz: dc06a5a7fe7c08b2cc8777d277cf601f331fe74edc35028daabcf9b11e7bc6360136ac50dab217376fb32a421cedfee1d7d17e9bf79eb820c6ef5232e8d656b6
data/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # Basic Assert
2
+
3
+ A basic, customizable assertion library for lightweight pre and post-conditions checking.
4
+
5
+ ## Installation
6
+
7
+ Just add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'basic_assert'
11
+ ```
12
+
13
+ ## What's this for ?
14
+
15
+ TODO: add rationale and examples
16
+
17
+ ## Usage
18
+
19
+ In order to use this library you need to include an *asserter* and a *raiser* in the current `self` context.
20
+
21
+ In, say, a Rails project, you may just add an initializer like
22
+
23
+ ```ruby
24
+ class Object
25
+ case Rails.configuration.assert_mode
26
+ when :raise
27
+ include BasicAssert::ExceptionRaiser
28
+ include BasicAssert::BasicAsserter
29
+ else # :ignore
30
+ include BasicAssert::NoopAsserter
31
+ end
32
+ end
33
+ ```
34
+
35
+ or define your own asserting policies and side effects, or override them for the given `self` where appropriate.
36
+
37
+ An *asserter* is a concern exposing an `assert()` function responsible of evaluating the given condition; a *raiser* is a concern exposing an `assert_raise()` function responsible of managing the actual condition failure.
38
+
39
+ Currently, the following asserters and raisers are defined:
40
+ - `BasicAsserter`: exposes plain and block versions, with or without message
41
+ - `NoopAsserter`: does nothing, blocks are never evaluated in this case
42
+ - `ExceptionRaiser`: raises an `ExceptionRaiser::AssertionException`
43
+
44
+
45
+ ## Development
46
+
47
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
48
+
49
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
50
+
51
+ ## Contributing
52
+
53
+ Bug reports and pull requests are welcome on GitHub at https://github.com/maxjanes/basic_assert.
54
+
55
+ ## License
56
+
57
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,22 @@
1
+ require 'active_support/concern'
2
+
3
+ module BasicAssert
4
+ module BasicAsserter
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ # check a pre/post-condition, used as:
9
+ # - assert condition
10
+ # - assert condition, message
11
+ # - assert { condition }
12
+ # - assert(message) { condition }
13
+ def assert(*args)
14
+ if block_given?
15
+ assert yield, args[0]
16
+ elsif !args[0]
17
+ assert_raise args[1]
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require 'active_support/concern'
2
+
3
+ module BasicAssert
4
+ # ExceptionRaiser's exception
5
+ # you'll should never rescue this in user code; indeed, ceci n'est pas un StandardError ...
6
+ class AssertionException < Exception
7
+ end
8
+
9
+ module ExceptionRaiser
10
+ extend ActiveSupport::Concern
11
+
12
+ included do
13
+ def assert_raise(message)
14
+ raise AssertionException, message || caller_locations(2..2)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ require 'active_support/concern'
2
+
3
+ module BasicAssert
4
+ module NoopAsserter
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ def assert(*args)
9
+ # do nothing
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module BasicAssert
2
+ VERSION = '0.1.0'.freeze
3
+ end
@@ -0,0 +1,22 @@
1
+ require 'basic_assert/version'
2
+ require 'basic_assert/exception_raiser'
3
+ require 'basic_assert/basic_asserter'
4
+ require 'basic_assert/noop_asserter'
5
+
6
+ # require_relative '../../lib/asserts'
7
+ #
8
+
9
+
10
+ # basic_assert
11
+ #
12
+ # assert_raise
13
+ #
14
+ # case Rails.configuration.assert_mode
15
+ # when :raise
16
+ # include Asserts::ExceptionRaiser
17
+ # include Asserts::Methods
18
+ #
19
+
20
+ # # Set assertion mode, see assert initializer
21
+ # config.assert_mode = :ignore
22
+ #
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: basic_assert
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Massimiliano Janes
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-10-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description:
56
+ email:
57
+ - massimiliano.janes@uqido.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - README.md
63
+ - lib/basic_assert.rb
64
+ - lib/basic_assert/basic_asserter.rb
65
+ - lib/basic_assert/exception_raiser.rb
66
+ - lib/basic_assert/noop_asserter.rb
67
+ - lib/basic_assert/version.rb
68
+ homepage: https://github.com/maxjanes/basic_assert
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 2.3.0
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 2.5.2
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: A basic, customizable assertion library for lightweight pre-postconditions
92
+ checking
93
+ test_files: []