aggregate_assertions 0.1.0 → 0.2.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 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: []