- Clean Project
- Split Files
- minitest/reporter
- list other files to split out
- Cleaner Call Stack
- Dream Stack
- Runnables#shuffle
- remove
#runnable_methods
- No Cruft
- end support for maglev idiosyncracies
- end support for rubinius idiosyncracies
- lib/minitest/test
- remove compatibility layer
-
#class_name
-
-- def self.test_order ++ def self.run_order
- Consider removing insurance that autorun is using the gemified minitest
- Style
- Split Files
-
Scale
Mostly it would be pointing out code that relies on bad architecture (eg global / class-level variables) that make them brittle or have race conditions. Changing your architecture or implementation so that the code is parallel-safe means you really can scale your software up (by adding threads or processes or distributing the work).
But it’s also an opportunity to simply have faster developer feedback. The faster your tests can run, the faster your devs can go with full information. Otherwise there’s a window where they’re either waiting or coding blind.
- Parallelism by default:
- [ ]
-- parallelize_me! ++ serialize_me!
- DB Testing
- Transactional
- Non-transactional
- Stubbing class methods?
- IE: Time.now
- All tests shuffled, rather than class by class basis
- TestMinitestUnitTestCase shuffleable?
- Yes, they, but, they're shuffled by class, then methods within the class, not methods among all classes
- TestMinitestUnitTestCase shuffleable?
- Worker-based Distributed Testing
- Locally
- CPU Utilization
- Across VMs
- Speed Up CI
- Config?
- Setup?
- Dependencies
- SSH Access
- Open ports (or tunneling?)
- Same source layout (ie: container based testing)
- True for non unix platforms?
- Available libraries?
- tmm1/test-queue (used by github)
- jeremyevans/minitest-parallel_fork
- ArturT/knapsack (paid service)
- Shopify
- Serialization Gaurantees
- tenderlove
- minitest/minitest#716
- https://gist.github.com/zenspider/4f1b0c9fbad6b718b60ddf8d4a5589e1
- No Marshal Code
- Ruby 2.5 Exceptions?
- noahgibbs
- jeremyevans
- Maintains references to chains of exceptions
- Risk to serialization gaurantees
- Command Line Runner
- Better integration with minitest_bisect and autotest
- rename --name to --include
- ZSH test completion
- Rake's TestTask
- Doesn't like rake's default
- schneems
- Improved Test Doubles
- stub w/ blocks
- graduate to 6_2
- Adding fake?
- singleton_method (too easy? truly needed?)
- stub w/ blocks
- Stricter and Better Assertions
-
assert_equal(nil,x) => Failure
- Unhack nested
refute_nil
- More Explicit, Signal intent
- Unhack nested
- Fix Tautological Tests
- Assertion Reuse
-
assert_operator
,assert_predicate
callassert_respond_to
-
(assert|refute)_empty
-
(assert|refute)_includes
-
(assert|refute)_match
-
(assert|refute)_operator
-
(assert|refute)_predicate
-
- remove call to
message
inassert_empty
- Better Failures
-
-- Error: NoMethodError (undefined method `message’ for #<X:Y>). ++ Failure: Expected X to respond to message.
- Better Messages
- Better Message with layered assertions
-
- Remove
assert_send
- Better Failure messages for multiline strings
-
-
- Improved Specs
- No more expectations on Object \
-- o.m.must_equal 42 ++ _(o.m).must_equal 42 ++ value(o.m).must_equal 42
- CheezitMan
- s/expect/_/
- Deprecation warning
- Internal migration
- CheezitMan
- No more expectations on Object \
- Benchmarking
- assert_performance_logarithmic
- assert_performance_exponential
- assert_performance_constant
- validation_for_fit
- assert_performance
- assert_performance_power
- assert_performance_linear
- Outstanding pull requests
- Access to the seed
- Silent Reporter PuZZleDucK