maxitest 5.7.0 → 5.7.1

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: 8a49dada902aa4d58820d62a83173833be90399d5180b134cc1ce54a5f8ded51
4
- data.tar.gz: a2b23c6f996f135938d2e195bf69fc9594eb9d7fc346936ac0aadf382ec11017
3
+ metadata.gz: d101ca4626dab43e42c73800d34678620f68eaf702c093d70a16dd2dabac306d
4
+ data.tar.gz: bc5b5547620a044c9a8cc7eee87cf5411a822418a6e61949056ac3acec2a095a
5
5
  SHA512:
6
- metadata.gz: 8d62e5aba46713e142920656b7ee55b38dbc4a37bc3e3515fb4f0985e6b5db9aa69f1dd40811f1b2b56eb52dc78fcb3a81c34c5599ec1fe5b6ae1d4065c4871f
7
- data.tar.gz: c0fe87d5f05fbffc46f04259c133a2f8b49cdf2577425e577ff606d6f665ac80a6bc1c876583b44ed4fe6eb7fe3c838038549de36aff9e99859714a88e72607b
6
+ metadata.gz: 878e6e0b75f59f8aaa187d5c953cd0f4aa0f3942022fbea271e9277f57d36b6b4624f6e010c4c8e3079bef993d282630142dc50ca9d295b5aed9b0d06cc621bc
7
+ data.tar.gz: 9bce01fea6fb55cbf2c35bd7c4cd44c6826dc4502313cf493750ffa21b06335f84736d007a90c713c7a76ef9e188d05f839098456dc153ca4b9480f2212a4b4a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Next
2
2
 
3
+ # v5.7.1
4
+ - support disabling interrupt handling to avoid minitest-reporters bug with MAXITEST_NO_INTERRUPT=true
5
+
6
+ # v5.7.0
7
+ - support minitest 5.25
8
+
9
+ # v5.6.0
10
+ - support minitest 5.24
11
+
3
12
  # v5.5.0
4
13
  - support minitest 5.23
5
14
 
data/README.md CHANGED
@@ -81,6 +81,11 @@ output = capture_stdout { puts 1 }
81
81
  _(output).must_equal "1\n"
82
82
  ```
83
83
 
84
+ ### minitest-reporters
85
+
86
+ If [PR](https://github.com/minitest-reporters/minitest-reporters/pull/357) is not resolved,
87
+ disable Interrupt handling with `ENV["MAXITEST_NO_INTERRUPT"] = "true"` to avoid "stack level too deep" errors.
88
+
84
89
  Development
85
90
  ===========
86
91
  - everything vendored into 1 gem to avoid dependency madness
@@ -1,7 +1,7 @@
1
1
  require "minitest"
2
2
  require "minitest/autorun"
3
3
  require "maxitest/vendor/around"
4
- require "maxitest/trap"
4
+ require "maxitest/interrupt" unless ENV["MAXITEST_NO_INTERRUPT"]
5
5
  require "maxitest/let_bang"
6
6
  require "maxitest/let_all"
7
7
  require "maxitest/hook_all"
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ # - show current backtrace when interrupting a stuck test with Ctrl+c
4
+ # - skip remaining tests
5
+
6
+ module Maxitest
7
+ Interrupted = Class.new(StandardError)
8
+ class << self
9
+ attr_accessor :interrupted
10
+ end
11
+
12
+ module InterruptHandler
13
+ # capture interrupt and treat it as a regular error so we get a backtrace
14
+ def capture_exceptions(&block)
15
+ super(&block)
16
+ rescue Interrupt => e
17
+ Maxitest.interrupted = true
18
+ failures << Minitest::UnexpectedError.new(e)
19
+ end
20
+
21
+ # skip remaining tests if we were interrupted
22
+ def run
23
+ if Maxitest.interrupted
24
+ # produce a real error so we do not crash in -v mode
25
+ failures <<
26
+ begin
27
+ raise Minitest::Skip, 'Maxitest::Interrupted'
28
+ rescue Minitest::Skip
29
+ $!
30
+ end
31
+ result = Minitest::Result.from(self)
32
+ result.time = 0
33
+ result
34
+ else
35
+ super()
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ Minitest::Test.prepend(Maxitest::InterruptHandler)
@@ -1,3 +1,3 @@
1
1
  module Maxitest
2
- VERSION = "5.7.0"
2
+ VERSION = "5.7.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maxitest
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.7.0
4
+ version: 5.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-03 00:00:00.000000000 Z
11
+ date: 2024-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -75,6 +75,7 @@ files:
75
75
  - lib/maxitest/helpers.rb
76
76
  - lib/maxitest/hook_all.rb
77
77
  - lib/maxitest/implicit_subject.rb
78
+ - lib/maxitest/interrupt.rb
78
79
  - lib/maxitest/let_all.rb
79
80
  - lib/maxitest/let_bang.rb
80
81
  - lib/maxitest/pending.rb
@@ -82,7 +83,6 @@ files:
82
83
  - lib/maxitest/static_class_order.rb
83
84
  - lib/maxitest/threads.rb
84
85
  - lib/maxitest/timeout.rb
85
- - lib/maxitest/trap.rb
86
86
  - lib/maxitest/vendor/around.rb
87
87
  - lib/maxitest/vendor/line.rb
88
88
  - lib/maxitest/vendor/line_describe.rb
data/lib/maxitest/trap.rb DELETED
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Maxitest
4
- Interrupted = Class.new(StandardError)
5
- class << self
6
- attr_accessor :interrupted
7
- end
8
-
9
- module InterruptHandler
10
- def capture_exceptions(&block)
11
- super(&block)
12
- rescue Interrupt => e
13
- Maxitest.interrupted = true
14
- failures << Minitest::UnexpectedError.new(e)
15
- end
16
-
17
- def run
18
- if Maxitest.interrupted
19
- skip = begin
20
- raise Minitest::Skip, 'Maxitest::Interrupted'
21
- rescue Minitest::Skip => e
22
- e
23
- end
24
- self.failures = [skip]
25
- defined?(Minitest::Result) ? Minitest::Result.from(self) : self
26
- else
27
- super()
28
- end
29
- end
30
- end
31
- end
32
-
33
- Minitest::Test.prepend(Maxitest::InterruptHandler)