maxitest 5.2.0 → 5.3.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 +4 -4
- data/README.md +7 -0
- data/lib/maxitest/autorun.rb +6 -0
- data/lib/maxitest/helpers.rb +54 -0
- data/lib/maxitest/pending.rb +10 -10
- data/lib/maxitest/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9061b66cde59aa2093b1b9b0261c18d5134e64790936084086bcf4dd6ef9f954
|
4
|
+
data.tar.gz: cca38bde23d12a34db6c54dbd0f783eb8b568555fcdfa81aa259aaca1020af3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0303fec9b3ca3f7f6fe419576beb0ebf9185f9bcd9850d386308ad2781bfa004138c2c01d77e7496b6a3516c1b783a0c5a7f0d8efe2b82cd4fabc45ad0135541
|
7
|
+
data.tar.gz: 80e22f71856fce5b79cf8e26fcf60887fce07f6934b4923cd9e1a0e7ab25c297c72ab3c98c7a6e54d343a8d91c3863e0ce3555caccbdf635a0a20c51e62e596c
|
data/README.md
CHANGED
@@ -22,6 +22,8 @@ Features
|
|
22
22
|
- `pending { assert false }` is skip when it fails, but fails when it passes
|
23
23
|
- implicit subject via `require 'maxitest/implicit_subject'`
|
24
24
|
- `xit` to skip test (also does not call setup or teardown)
|
25
|
+
- `with_env` to change environment variables during test run
|
26
|
+
- `capture_stdout` and `capture_stderr` to capture stdout or stderr but not both (like `capture_io` does)
|
25
27
|
- `require 'maxitest/timeout'` to make hanging tests fail after `Maxitest.timeout` seconds
|
26
28
|
- `require 'maxitest/threads'` fail tests that leave extra threads running
|
27
29
|
- `require 'maxitest/global_must'` (before autorun) disable deprecation on global `must_*` or [global_expectations](https://github.com/jeremyevans/minitest-global_expectations) gem
|
@@ -42,6 +44,11 @@ require "maxitest/autorun"
|
|
42
44
|
... normal tests ...
|
43
45
|
```
|
44
46
|
|
47
|
+
### pending
|
48
|
+
|
49
|
+
- `pending "need to fix" do` to show why something is pending
|
50
|
+
- `pending "need to fix", if: ENV["CI"] do` to only skip on CI (if something is supposed to work locally)
|
51
|
+
|
45
52
|
Development
|
46
53
|
===========
|
47
54
|
- everything vendored into 1 gem to avoid dependency madness
|
data/lib/maxitest/autorun.rb
CHANGED
@@ -6,6 +6,7 @@ require "maxitest/let_bang"
|
|
6
6
|
require "maxitest/let_all"
|
7
7
|
require "maxitest/hook_all"
|
8
8
|
require "maxitest/pending"
|
9
|
+
require "maxitest/helpers"
|
9
10
|
require "maxitest/xit"
|
10
11
|
require "maxitest/static_class_order"
|
11
12
|
require "maxitest/shorted_backtrace"
|
@@ -20,3 +21,8 @@ Minitest::Spec::DSL.send(:alias_method, :context, :describe)
|
|
20
21
|
class << Minitest::Test
|
21
22
|
alias_method :order_dependent!, :i_suck_and_my_tests_are_order_dependent!
|
22
23
|
end
|
24
|
+
|
25
|
+
# do not show maxitest as causing errors, but the last line in the users code
|
26
|
+
old = MiniTest::BacktraceFilter::MT_RE
|
27
|
+
MiniTest::BacktraceFilter.send(:remove_const, :MT_RE)
|
28
|
+
MiniTest::BacktraceFilter::MT_RE = Regexp.union(old, %r%lib/maxitest%)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Maxitest
|
2
|
+
module Helpers
|
3
|
+
module InstanceMethods
|
4
|
+
def with_env(env)
|
5
|
+
_synchronize do
|
6
|
+
old = ENV.to_h
|
7
|
+
env.each { |k, v| ENV[k.to_s] = v }
|
8
|
+
yield
|
9
|
+
ensure
|
10
|
+
ENV.replace old
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# stripped down version of capture_io
|
15
|
+
def capture_stdout
|
16
|
+
_synchronize do
|
17
|
+
begin
|
18
|
+
captured_stdout = StringIO.new
|
19
|
+
orig_stdout = $stdout
|
20
|
+
$stdout = captured_stdout
|
21
|
+
yield
|
22
|
+
return captured_stdout.string
|
23
|
+
ensure
|
24
|
+
$stdout = orig_stdout
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# stripped down version of capture_io
|
30
|
+
def capture_stderr
|
31
|
+
_synchronize do
|
32
|
+
begin
|
33
|
+
captured_stderr = StringIO.new
|
34
|
+
orig_stderr = $stderr
|
35
|
+
$stderr = captured_stderr
|
36
|
+
yield
|
37
|
+
return captured_stderr.string
|
38
|
+
ensure
|
39
|
+
$stderr = orig_stderr
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
module ClassMethods
|
46
|
+
def with_env(env)
|
47
|
+
around { |t| with_env(env, &t) }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
Minitest::Test.send(:include, Maxitest::Helpers::InstanceMethods)
|
54
|
+
Minitest::Test.send(:extend, Maxitest::Helpers::ClassMethods)
|
data/lib/maxitest/pending.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
module Maxitest
|
2
2
|
module Pending
|
3
|
-
def pending(reason=nil)
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
def pending(reason=nil, **kwargs)
|
4
|
+
raise ArgumentError, "Need a block to execute" unless block_given?
|
5
|
+
raise ArgumentError, "Only :if option is supported" if (kwargs.keys | [:if] != [:if])
|
6
|
+
return yield if kwargs.fetch(:if, true) == false # allow user to for example mark test only pending on CI with `if: ENV["CI"]`
|
7
|
+
|
8
|
+
begin
|
9
|
+
yield # execute test
|
10
|
+
rescue StandardError, Minitest::Assertion
|
11
|
+
skip reason # test failed as expected
|
12
12
|
else
|
13
|
-
|
13
|
+
flunk "Test is fixed, remove `pending`"
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
data/lib/maxitest/version.rb
CHANGED
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.
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- lib/maxitest.rb
|
72
72
|
- lib/maxitest/autorun.rb
|
73
73
|
- lib/maxitest/global_must.rb
|
74
|
+
- lib/maxitest/helpers.rb
|
74
75
|
- lib/maxitest/hook_all.rb
|
75
76
|
- lib/maxitest/implicit_subject.rb
|
76
77
|
- lib/maxitest/let_all.rb
|