aggregate_assertions 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '00639ccdafa8ebe12ef425257a24af2e0dfc4e8d76ce3c70fece367f6a6565b7'
4
- data.tar.gz: cc5ba9f480daf808165ae61bc5c0786d0014e7f1eab91d5a5c6eaea5fbe34a51
3
+ metadata.gz: 77b0cce26f3703f2174328d00eabd81792c97871c6d81fb137932ef73d297754
4
+ data.tar.gz: 63f5abd248efdac2067557ab4389abcd2614f7d1cf2e81ccb65dc3afe4e044d9
5
5
  SHA512:
6
- metadata.gz: 4805686e88f29f9b721a02c84fc80f579291b89a403c96ede61d814999a660a0e07a8b85d044b35c1ce210d2a133b1bdadd7bfed583377a5f31b9e893e29f413
7
- data.tar.gz: 49a27fe41ce38d2c889c2d827dc5d0556a4e06a0701dde3068308a54e517863895113350b74d89de340555a2712379084e36e60fcb89e041cd726e85373a2583
6
+ metadata.gz: b29c664ed761747edd3e2e8358db4fb4e19955a7f3c4e9c6cf5267b949c349420bd715573bf0e008a118b1ed7420df302558833ff315a1c89f3bccac678d8c62
7
+ data.tar.gz: e463dee9e7da960bc3ca0774be6c030652d9281e3fcf4ece57786d101050fb10f5a1cc7b7157e89ff6c55b5fd07918525c848e750af1946ee7879b7a461ebf4c
@@ -10,7 +10,7 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
- ruby-version: 2.6.8
13
+ ruby-version: 2.7.6
14
14
  bundler-cache: true
15
15
  - name: Tests
16
16
  run: bundle exec rake test
data/.rubocop.yml CHANGED
@@ -1,11 +1,14 @@
1
1
  AllCops:
2
2
  NewCops: enable
3
3
  SuggestExtensions: false
4
- TargetRubyVersion: 2.6
4
+ TargetRubyVersion: 2.7
5
5
 
6
6
  Metrics/AbcSize:
7
7
  Enabled: false
8
8
 
9
+ Metrics/ClassLength:
10
+ Enabled: false
11
+
9
12
  Metrics/MethodLength:
10
13
  Enabled: false
11
14
 
data/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.0] - 2022-10-19
4
+ - Add `AggregateAssertions::EachTest` module to wrap each test with an implicit `aggregate_assertions`.
5
+ - Add `aggregate_assertions/everywhere` require to wrap all tests with an implicit `aggregate_assertions`.
6
+ - Require Ruby 2.7 or later.
7
+
8
+ ## [0.1.1] - 2021-11-15
9
+ - Specify `rubygems_mfa_required` in gemspec metadata.
10
+
3
11
  ## [0.1.0] - 2021-07-17
4
12
  - Initial release
data/Gemfile.lock CHANGED
@@ -1,38 +1,39 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aggregate_assertions (0.1.0.pre0)
4
+ aggregate_assertions (0.2.0)
5
5
  minitest (~> 5.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ast (2.4.2)
11
- minitest (5.14.4)
12
- parallel (1.20.1)
13
- parser (3.0.1.1)
11
+ minitest (5.16.3)
12
+ parallel (1.21.0)
13
+ parser (3.0.2.0)
14
14
  ast (~> 2.4.1)
15
15
  rainbow (3.0.0)
16
- rake (13.0.3)
16
+ rake (13.0.6)
17
17
  regexp_parser (2.1.1)
18
18
  rexml (3.2.5)
19
- rubocop (1.18.2)
19
+ rubocop (1.23.0)
20
20
  parallel (~> 1.10)
21
21
  parser (>= 3.0.0.0)
22
22
  rainbow (>= 2.2.2, < 4.0)
23
23
  regexp_parser (>= 1.8, < 3.0)
24
24
  rexml
25
- rubocop-ast (>= 1.7.0, < 2.0)
25
+ rubocop-ast (>= 1.12.0, < 2.0)
26
26
  ruby-progressbar (~> 1.7)
27
27
  unicode-display_width (>= 1.4.0, < 3.0)
28
- rubocop-ast (1.7.0)
28
+ rubocop-ast (1.13.0)
29
29
  parser (>= 3.0.1.1)
30
- rubocop-minitest (0.14.0)
30
+ rubocop-minitest (0.16.0)
31
31
  rubocop (>= 0.90, < 2.0)
32
32
  ruby-progressbar (1.11.0)
33
- unicode-display_width (2.0.0)
33
+ unicode-display_width (2.1.0)
34
34
 
35
35
  PLATFORMS
36
+ ruby
36
37
  x86_64-darwin-19
37
38
  x86_64-linux
38
39
 
@@ -44,4 +45,4 @@ DEPENDENCIES
44
45
  rubocop-minitest
45
46
 
46
47
  BUNDLED WITH
47
- 2.2.19
48
+ 2.3.4
data/README.md CHANGED
@@ -69,6 +69,27 @@ There were 3 errors in group "testing response":
69
69
  Actual: "Not Found"
70
70
  ```
71
71
 
72
+ ### Experimental: Enable for all tests
73
+
74
+ All tests in a class or an entire test suite can be implicitly wrapped
75
+ with `aggregate_assertions`.
76
+
77
+ To enable for all tests in a class include the module `AggregateAssertions::EachTest`:
78
+
79
+ ```ruby
80
+ class MyTest < Minitest::Test
81
+ include AggregateAssertions::EachTest
82
+
83
+ def test_both_errors_reported
84
+ # both assertions are reported without needing an explicit aggregate_assertions block
85
+ assert false, "first error"
86
+ assert false, "second error"
87
+ end
88
+ end
89
+ ```
90
+
91
+ To enable for all tests in a test suite require `aggregate_assertions/everywhere` from your `test_helper.rb` file.
92
+
72
93
  ## Development
73
94
 
74
95
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -12,10 +12,10 @@ Gem::Specification.new do |spec|
12
12
  spec.description = spec.summary
13
13
  spec.homepage = "https://github.com/tjwp/aggregate_assertions"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.6.0"
15
+ spec.required_ruby_version = ">= 2.7.0"
16
16
 
17
17
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
18
-
18
+ spec.metadata["rubygems_mfa_required"] = "true"
19
19
  spec.metadata["homepage_uri"] = spec.homepage
20
20
  spec.metadata["source_code_uri"] = spec.homepage
21
21
  spec.metadata["changelog_uri"] = "https://github.com/tjwp/aggregate_assertions/blob/main/CHANGELOG.md"
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative("error")
4
- require_relative("failure_group")
3
+ require "minitest"
4
+ require_relative "error"
5
+ require_relative "failure_group"
5
6
 
6
7
  module AggregateAssertions
7
8
  # Main entry-point for the interacting with the state of aggregation.
@@ -23,6 +24,24 @@ module AggregateAssertions
23
24
  store.pop
24
25
  end
25
26
 
27
+ def wrap(label = nil)
28
+ AssertionAggregator.open_failure_group(label)
29
+
30
+ begin
31
+ yield
32
+ rescue Minitest::Assertion, StandardError => e
33
+ AssertionAggregator.add_error(e)
34
+ ensure
35
+ failure_group = AssertionAggregator.close_failure_group
36
+ end
37
+
38
+ return if failure_group.success?
39
+
40
+ raise failure_group.error unless AssertionAggregator.active?
41
+
42
+ AssertionAggregator.add_error(failure_group.error)
43
+ end
44
+
26
45
  private
27
46
 
28
47
  def store
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "aggregate_assertions/assertion_aggregator"
4
+
5
+ module AggregateAssertions
6
+ # Aggregate assertions for all test cases in a Minitest::Test class.
7
+ module EachTest
8
+ def capture_exceptions(&block)
9
+ super do
10
+ AssertionAggregator.wrap(&block)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "aggregate_assertions/each_test"
4
+
5
+ Minitest::Test.prepend(AggregateAssertions::EachTest)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AggregateAssertions
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "minitest"
4
4
  require_relative "aggregate_assertions/version"
5
+ require_relative "aggregate_assertions/each_test"
5
6
  require_relative "aggregate_assertions/assertion_aggregator"
6
7
 
7
8
  module AggregateAssertions
@@ -15,24 +16,10 @@ module AggregateAssertions
15
16
  AssertionAggregator.add_error(e)
16
17
  end
17
18
 
18
- def aggregate_assertions(label = nil)
19
+ def aggregate_assertions(label = nil, &block)
19
20
  flunk "aggregate_assertions requires a block" unless block_given?
20
21
 
21
- AssertionAggregator.open_failure_group(label)
22
-
23
- begin
24
- yield
25
- rescue Minitest::Assertion, StandardError => e
26
- AssertionAggregator.add_error(e)
27
- ensure
28
- failure_group = AssertionAggregator.close_failure_group
29
- end
30
-
31
- return if failure_group.success?
32
-
33
- raise failure_group.error unless AssertionAggregator.active?
34
-
35
- AssertionAggregator.add_error(failure_group.error)
22
+ AssertionAggregator.wrap(label, &block)
36
23
  end
37
24
  end
38
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aggregate_assertions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Perkins
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-17 00:00:00.000000000 Z
11
+ date: 2022-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -45,7 +45,9 @@ files:
45
45
  - bin/setup
46
46
  - lib/aggregate_assertions.rb
47
47
  - lib/aggregate_assertions/assertion_aggregator.rb
48
+ - lib/aggregate_assertions/each_test.rb
48
49
  - lib/aggregate_assertions/error.rb
50
+ - lib/aggregate_assertions/everywhere.rb
49
51
  - lib/aggregate_assertions/failure_group.rb
50
52
  - lib/aggregate_assertions/version.rb
51
53
  homepage: https://github.com/tjwp/aggregate_assertions
@@ -53,10 +55,11 @@ licenses:
53
55
  - MIT
54
56
  metadata:
55
57
  allowed_push_host: https://rubygems.org
58
+ rubygems_mfa_required: 'true'
56
59
  homepage_uri: https://github.com/tjwp/aggregate_assertions
57
60
  source_code_uri: https://github.com/tjwp/aggregate_assertions
58
61
  changelog_uri: https://github.com/tjwp/aggregate_assertions/blob/main/CHANGELOG.md
59
- post_install_message:
62
+ post_install_message:
60
63
  rdoc_options: []
61
64
  require_paths:
62
65
  - lib
@@ -64,15 +67,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
67
  requirements:
65
68
  - - ">="
66
69
  - !ruby/object:Gem::Version
67
- version: 2.6.0
70
+ version: 2.7.0
68
71
  required_rubygems_version: !ruby/object:Gem::Requirement
69
72
  requirements:
70
73
  - - ">="
71
74
  - !ruby/object:Gem::Version
72
75
  version: '0'
73
76
  requirements: []
74
- rubygems_version: 3.1.6
75
- signing_key:
77
+ rubygems_version: 3.2.20
78
+ signing_key:
76
79
  specification_version: 4
77
80
  summary: Aggregate Minitest assertions
78
81
  test_files: []