maxitest 5.1.0 → 5.3.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: bf5d2aa58f3aff1492c20ee215eee1158a08d8cb5494c1549560ad19788c4b40
4
- data.tar.gz: 711007c687350abbaf006f30bab9283846f8c33309717513dde02d7a1b078adb
3
+ metadata.gz: 9061b66cde59aa2093b1b9b0261c18d5134e64790936084086bcf4dd6ef9f954
4
+ data.tar.gz: cca38bde23d12a34db6c54dbd0f783eb8b568555fcdfa81aa259aaca1020af3c
5
5
  SHA512:
6
- metadata.gz: ac882f4678a9f32b130de1ebe2c542c33909519b7ca334f072d9e1659af38873cef24051d714ef91ef9958f4b01c8dd39ccf89e0a920a0290e547337c6dcc981
7
- data.tar.gz: c725d8a83554977d1b1e0b920db1f1540fffe5ee153e2ab9787632f03335d62e0010107630004917a2d0cbfc139c434087e7345d38b50095a48dfe8a82d632a3
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
@@ -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)
@@ -1,16 +1,16 @@
1
1
  module Maxitest
2
2
  module Pending
3
- def pending(reason=nil)
4
- if block_given?
5
- begin
6
- yield
7
- rescue StandardError, Minitest::Assertion
8
- skip reason
9
- else
10
- raise "Fixed"
11
- end
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
- raise ArgumentError, "Need a block to execute"
13
+ flunk "Test is fixed, remove `pending`"
14
14
  end
15
15
  end
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module Maxitest
2
- VERSION = "5.1.0"
2
+ VERSION = "5.3.0"
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.1.0
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-06-24 00:00:00.000000000 Z
11
+ date: 2023-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 5.14.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 5.19.0
22
+ version: 5.20.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 5.14.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 5.19.0
32
+ version: 5.20.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rake
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -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