diff --git a/Gemfile b/Gemfile index 130ba98..ca31976 100644 --- a/Gemfile +++ b/Gemfile @@ -4,11 +4,10 @@ source "https://rubygems.org" gemspec gem "rake" -gem "minitest" +gem "tldr", github: "tenderlove/tldr" gem "standard" gem "standard-sorbet" gem "simplecov" -gem "m" gem "sorbet-static" gem "tapioca" diff --git a/Gemfile.lock b/Gemfile.lock index d01fe72..c2ffabc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,11 @@ +GIT + remote: https://github.com/tenderlove/tldr.git + revision: 94b2835ba7e1ee10b80df6328ca599823608dfbe + specs: + tldr (0.1.0) + concurrent-ruby (~> 1.2) + super_diff (~> 0.10) + PATH remote: . specs: @@ -9,23 +17,23 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.2) + attr_extras (7.1.0) base64 (0.1.1) + concurrent-ruby (1.2.2) diff-lcs (1.5.0) docile (1.4.0) erubi (1.12.0) json (2.6.3) language_server-protocol (3.17.0.3) lint_roller (1.1.0) - m (1.6.1) - method_source (>= 0.6.7) - rake (>= 0.9.2.2) - method_source (1.0.0) - minitest (5.19.0) netrc (0.11.0) + optimist (3.1.0) parallel (1.23.0) parser (3.2.2.3) ast (~> 2.4.1) racc + patience_diff (1.2.0) + optimist (~> 3.0) prettier_print (1.2.1) racc (1.7.1) rainbow (3.1.1) @@ -100,6 +108,10 @@ GEM standard-sorbet (0.0.2) lint_roller (~> 1.1) rubocop-sorbet (~> 0.7.0) + super_diff (0.10.0) + attr_extras (>= 6.2.4) + diff-lcs + patience_diff syntax_tree (6.1.1) prettier_print (>= 1.2.0) tapioca (0.11.8) @@ -126,8 +138,6 @@ PLATFORMS ruby DEPENDENCIES - m - minitest mocktail! rake rubocop-sorbet @@ -137,6 +147,7 @@ DEPENDENCIES standard standard-sorbet tapioca + tldr! BUNDLED WITH 2.3.6 diff --git a/Rakefile b/Rakefile index bc6c315..600f116 100644 --- a/Rakefile +++ b/Rakefile @@ -1,10 +1,4 @@ require "bundler/gem_tasks" -require "rake/testtask" require "standard/rake" -Rake::TestTask.new(:test) do |t| - t.libs << "test" - t.test_files = FileList["test/**/*_test.rb"] -end - -task default: [:test, "standard:fix"] +task default: ["standard:fix"] diff --git a/script/test b/script/test index 1bb96c2..5150f2a 100755 --- a/script/test +++ b/script/test @@ -2,8 +2,11 @@ set -xeuo pipefail +echo "-----> Running Standard Ruby" +bundle exec rake standard:fix + echo "-----> Running Mocktail's test against src" -COVER=true bundle exec rake +COVER=true bundle exec tldr echo "-----> Type-checking Mocktail source" bundle exec srb tc @@ -12,10 +15,10 @@ echo "-----> Building src/mocktail into lib/mocktail and lib/mocktail/sorbet" ./script/build echo "-----> Running Mocktail's test against lib" -MOCKTAIL_TEST_SRC_DIRECTORY="lib" bundle exec rake +MOCKTAIL_TEST_SRC_DIRECTORY="lib" bundle exec tldr echo "-----> Running Mocktail's test against lib/mocktail/sorbet" -MOCKTAIL_TEST_SRC_DIRECTORY="lib/mocktail/sorbet" bundle exec rake +MOCKTAIL_TEST_SRC_DIRECTORY="lib/mocktail/sorbet" bundle exec tldr echo "-----> Ensuring that double-requiring Mocktail produces the right warning and bails out of redefining constants" script/test_double_require_warnings diff --git a/test/test_helper.rb b/test/helper.rb similarity index 93% rename from test/test_helper.rb rename to test/helper.rb index d941f53..9f39b47 100644 --- a/test/test_helper.rb +++ b/test/helper.rb @@ -11,7 +11,6 @@ $LOAD_PATH.unshift File.expand_path("../#{ENV["MOCKTAIL_TEST_SRC_DIRECTORY"] || "src"}", __dir__) require "mocktail" -require "minitest/autorun" # T is not defined yet, so we can't use T.unsafe to pass typechecking if eval("Mocktail::TYPED", binding, __FILE__, __LINE__) @@ -19,14 +18,14 @@ else require_relative "support/sorbet_stubs" end +require "tldr" -class Minitest::Test +class TLDR extend T::Sig + include TLDR::Assertions::MinitestCompatibility protected - make_my_diffs_pretty! - sig { params(blk: T.proc.void).returns(Thread) } def thread(&blk) Thread.new(&blk).tap do |t| diff --git a/test/mocktail_test.rb b/test/mocktail_test.rb index 0b5eef3..338118f 100644 --- a/test/mocktail_test.rb +++ b/test/mocktail_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class MocktailTest < Minitest::Test +class MocktailTest < TLDR extend T::Sig sig { void } diff --git a/test/safe/call_count_test.rb b/test/safe/call_count_test.rb index e8d1d1d..b417ef5 100644 --- a/test/safe/call_count_test.rb +++ b/test/safe/call_count_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class CallCountTest < Minitest::Test +class CallCountTest < TLDR include Mocktail::DSL extend T::Sig diff --git a/test/safe/dsl_test.rb b/test/safe/dsl_test.rb index e6d067e..8b70c59 100644 --- a/test/safe/dsl_test.rb +++ b/test/safe/dsl_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class DslTest < Minitest::Test +class DslTest < TLDR extend T::Sig sig { void } diff --git a/test/safe/explain_test.rb b/test/safe/explain_test.rb index 907683c..32c5983 100644 --- a/test/safe/explain_test.rb +++ b/test/safe/explain_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class ExplainTest < Minitest::Test +class ExplainTest < TLDR include Mocktail::DSL extend T::Sig @@ -41,7 +39,7 @@ def test_explain_stub_returned_nil The call site: - #{__FILE__}:25:in `test_explain_stub_returned_nil' + #{__FILE__}:23:in `test_explain_stub_returned_nil' No stubbings were configured on this method. @@ -75,7 +73,7 @@ def test_explain_stub_returned_nil_with_stubbings The call site: - #{__FILE__}:56:in `test_explain_stub_returned_nil_with_stubbings' + #{__FILE__}:54:in `test_explain_stub_returned_nil_with_stubbings' Stubbings configured prior to this call but not satisfied by it: diff --git a/test/safe/kwargs_vs_options_hash_test.rb b/test/safe/kwargs_vs_options_hash_test.rb index d442db4..8444bfc 100644 --- a/test/safe/kwargs_vs_options_hash_test.rb +++ b/test/safe/kwargs_vs_options_hash_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class KwargsVsOptionsHashTest < Minitest::Test +class KwargsVsOptionsHashTest < TLDR include Mocktail::DSL extend T::Sig diff --git a/test/safe/mocking_methodful_classes_test.rb b/test/safe/mocking_methodful_classes_test.rb index 7473830..49489d2 100644 --- a/test/safe/mocking_methodful_classes_test.rb +++ b/test/safe/mocking_methodful_classes_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class MockingMethodfulClassesTest < Minitest::Test +class MockingMethodfulClassesTest < TLDR include Mocktail::DSL extend T::Sig diff --git a/test/safe/of_next_test.rb b/test/safe/of_next_test.rb index daca31c..2f36332 100644 --- a/test/safe/of_next_test.rb +++ b/test/safe/of_next_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class OfNextTest < Minitest::Test +class OfNextTest < TLDR include Mocktail::DSL extend T::Sig diff --git a/test/safe/of_test.rb b/test/safe/of_test.rb index 5dfa6f9..33678b6 100644 --- a/test/safe/of_test.rb +++ b/test/safe/of_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class OfTest < Minitest::Test +class OfTest < TLDR include Mocktail::DSL extend T::Sig diff --git a/test/safe/replace_test.rb b/test/safe/replace_test.rb index f8b48d2..62456e3 100644 --- a/test/safe/replace_test.rb +++ b/test/safe/replace_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class ReplaceTest < Minitest::Test +class ReplaceTest < TLDR include Mocktail::DSL extend T::Sig diff --git a/test/safe/reset_test.rb b/test/safe/reset_test.rb index 75998e3..dd32de0 100644 --- a/test/safe/reset_test.rb +++ b/test/safe/reset_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class ResetTest < Minitest::Test +class ResetTest < TLDR include Mocktail::DSL extend T::Sig diff --git a/test/safe/stub_test.rb b/test/safe/stub_test.rb index f8eb393..d42ea4a 100644 --- a/test/safe/stub_test.rb +++ b/test/safe/stub_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class StubTest < Minitest::Test +class StubTest < TLDR include Mocktail::DSL extend T::Sig @@ -322,7 +320,7 @@ def test_param_checking }, "Library paths should not appear in backtrace:\n#{e.backtrace.join("\n")}" # Make sure the message contains the call - assert_equal "missing keyword: :and [Mocktail call: `do(1, 2, also: 3) { Proc at test/safe/stub_test.rb:318 }']", e.message + assert_equal "missing keyword: :and [Mocktail call: `do(1, 2, also: 3) { Proc at test/safe/stub_test.rb:316 }']", e.message # Make sure it doesn't raise: does_too_much.do(1, and: 2) diff --git a/test/safe/verify_test.rb b/test/safe/verify_test.rb index 14054dc..e5a5109 100644 --- a/test/safe/verify_test.rb +++ b/test/safe/verify_test.rb @@ -1,8 +1,6 @@ # typed: strict -require "test_helper" - -class VerifyTest < Minitest::Test +class VerifyTest < TLDR include Mocktail::DSL extend T::Sig @@ -120,13 +118,13 @@ def test_blocks assert_equal <<~MSG, e.message Expected mocktail of `VerifyTest::Syn#ack' to be called like: - ack(:apple, b: :banana) { Proc at test/safe/verify_test.rb:117 } + ack(:apple, b: :banana) { Proc at test/safe/verify_test.rb:115 } It was called differently 2 times: - ack(:apple, b: :banana) { Proc at test/safe/verify_test.rb:109 } + ack(:apple, b: :banana) { Proc at test/safe/verify_test.rb:107 } - ack(:apple, b: :banana) { Proc at test/safe/verify_test.rb:110 } + ack(:apple, b: :banana) { Proc at test/safe/verify_test.rb:108 } MSG end @@ -175,7 +173,7 @@ def test_verify_that_ignores_unspecified_blocks It was called differently 1 time: - ack(42) { Proc at test/safe/verify_test.rb:164 } + ack(42) { Proc at test/safe/verify_test.rb:162 } MSG end diff --git a/test/unit/imitates_type/makes_double/declares_dry_class_test.rb b/test/unit/imitates_type/makes_double/declares_dry_class_test.rb index 9cf9401..e064385 100644 --- a/test/unit/imitates_type/makes_double/declares_dry_class_test.rb +++ b/test/unit/imitates_type/makes_double/declares_dry_class_test.rb @@ -1,16 +1,12 @@ # typed: strict -require "test_helper" - module Mocktail - class DeclaresDryClassTest < Minitest::Test + class DeclaresDryClassTest < TLDR include Mocktail::DSL extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(DeclaresDryClass.new, DeclaresDryClass) end diff --git a/test/unit/matcher_presentation_test.rb b/test/unit/matcher_presentation_test.rb index 5fc32ad..c4869ed 100644 --- a/test/unit/matcher_presentation_test.rb +++ b/test/unit/matcher_presentation_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class MatcherPresentationTest < Minitest::Test + class MatcherPresentationTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(MatcherPresentation.new, MatcherPresentation) end diff --git a/test/unit/matchers/base_test.rb b/test/unit/matchers/base_test.rb index 8e7491a..8e93a63 100644 --- a/test/unit/matchers/base_test.rb +++ b/test/unit/matchers/base_test.rb @@ -1,9 +1,7 @@ # typed: strict -require "test_helper" - module Mocktail::Matchers - class BaseTest < Minitest::Test + class BaseTest < TLDR extend T::Sig sig { void } diff --git a/test/unit/matchers/captor_test.rb b/test/unit/matchers/captor_test.rb index cd69c78..b82ec9f 100644 --- a/test/unit/matchers/captor_test.rb +++ b/test/unit/matchers/captor_test.rb @@ -1,9 +1,7 @@ # typed: true -require "test_helper" - module Mocktail::Matchers - class CaptorTest < Minitest::Test + class CaptorTest < TLDR extend T::Sig sig { void } diff --git a/test/unit/matchers/includes_test.rb b/test/unit/matchers/includes_test.rb index 5a4b84e..3d5bfb8 100644 --- a/test/unit/matchers/includes_test.rb +++ b/test/unit/matchers/includes_test.rb @@ -1,9 +1,7 @@ # typed: strict -require "test_helper" - module Mocktail::Matchers - class IncludesTest < Minitest::Test + class IncludesTest < TLDR extend T::Sig sig { void } diff --git a/test/unit/matchers/matches_test.rb b/test/unit/matchers/matches_test.rb index be54876..e604b6c 100644 --- a/test/unit/matchers/matches_test.rb +++ b/test/unit/matchers/matches_test.rb @@ -1,7 +1,5 @@ # typed: strict -require "test_helper" - module Mocktail::Matchers class GoodMatch extend T::Sig @@ -29,7 +27,7 @@ def match? end end - class MatchesTest < Minitest::Test + class MatchesTest < TLDR extend T::Sig sig { void } diff --git a/test/unit/matchers/numeric_test.rb b/test/unit/matchers/numeric_test.rb index 82ceb5d..9c968ed 100644 --- a/test/unit/matchers/numeric_test.rb +++ b/test/unit/matchers/numeric_test.rb @@ -1,10 +1,9 @@ # typed: strict -require "test_helper" require "bigdecimal" module Mocktail::Matchers - class NumericTest < Minitest::Test + class NumericTest < TLDR extend T::Sig sig { void } diff --git a/test/unit/matchers/that_test.rb b/test/unit/matchers/that_test.rb index 5db1a09..68a1e96 100644 --- a/test/unit/matchers/that_test.rb +++ b/test/unit/matchers/that_test.rb @@ -1,9 +1,7 @@ # typed: strict -require "test_helper" - module Mocktail::Matchers - class ThatTest < Minitest::Test + class ThatTest < TLDR extend T::Sig sig { void } diff --git a/test/unit/raises_neato_no_method_error_test.rb b/test/unit/raises_neato_no_method_error_test.rb index 9a0f221..8dff0b8 100644 --- a/test/unit/raises_neato_no_method_error_test.rb +++ b/test/unit/raises_neato_no_method_error_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class RaisesNeatoNoMethodErrorTest < Minitest::Test + class RaisesNeatoNoMethodErrorTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(RaisesNeatoNoMethodError.new, RaisesNeatoNoMethodError) end diff --git a/test/unit/registers_matcher_test.rb b/test/unit/registers_matcher_test.rb index b54787c..f2355c4 100644 --- a/test/unit/registers_matcher_test.rb +++ b/test/unit/registers_matcher_test.rb @@ -1,12 +1,10 @@ # typed: strict -require "test_helper" - -class RegistersMatcherTest < Minitest::Test +class RegistersMatcherTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) + sig { void } + def initialize super @subject = T.let(Mocktail::RegistersMatcher.new, Mocktail::RegistersMatcher) diff --git a/test/unit/share/bind_test.rb b/test/unit/share/bind_test.rb index 5720602..c59161b 100644 --- a/test/unit/share/bind_test.rb +++ b/test/unit/share/bind_test.rb @@ -1,9 +1,7 @@ # typed: strict -require "test_helper" - module Mocktail - class BindTest < Minitest::Test + class BindTest < TLDR extend T::Sig class FortyTwo diff --git a/test/unit/share/creates_identifier_test.rb b/test/unit/share/creates_identifier_test.rb index c69a9e8..9364c83 100644 --- a/test/unit/share/creates_identifier_test.rb +++ b/test/unit/share/creates_identifier_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class CreatesIdentifierTest < Minitest::Test + class CreatesIdentifierTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(CreatesIdentifier.new, CreatesIdentifier) end diff --git a/test/unit/simulates_argument_error/cleans_backtrace_test.rb b/test/unit/simulates_argument_error/cleans_backtrace_test.rb index 644f7e2..1769325 100644 --- a/test/unit/simulates_argument_error/cleans_backtrace_test.rb +++ b/test/unit/simulates_argument_error/cleans_backtrace_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class CleansBacktraceTest < Minitest::Test + class CleansBacktraceTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(CleansBacktrace.new, CleansBacktrace) end diff --git a/test/unit/simulates_argument_error/reconciles_args_with_params_test.rb b/test/unit/simulates_argument_error/reconciles_args_with_params_test.rb index e702622..8d55f9e 100644 --- a/test/unit/simulates_argument_error/reconciles_args_with_params_test.rb +++ b/test/unit/simulates_argument_error/reconciles_args_with_params_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class ReconcilesArgsWithParamsTest < Minitest::Test + class ReconcilesArgsWithParamsTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(ReconcilesArgsWithParams.new, ReconcilesArgsWithParams) end diff --git a/test/unit/simulates_argument_error/recreates_message_test.rb b/test/unit/simulates_argument_error/recreates_message_test.rb index e202be1..1cabdd0 100644 --- a/test/unit/simulates_argument_error/recreates_message_test.rb +++ b/test/unit/simulates_argument_error/recreates_message_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class RecreatesMessageTest < Minitest::Test + class RecreatesMessageTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(RecreatesMessage.new, RecreatesMessage) end diff --git a/test/unit/simulates_argument_error/transforms_params_test.rb b/test/unit/simulates_argument_error/transforms_params_test.rb index dfac11b..0925805 100644 --- a/test/unit/simulates_argument_error/transforms_params_test.rb +++ b/test/unit/simulates_argument_error/transforms_params_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class TransformsParamsTest < Minitest::Test + class TransformsParamsTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(TransformsParams.new, TransformsParams) end diff --git a/test/unit/stringifies_method_signature_test.rb b/test/unit/stringifies_method_signature_test.rb index 295012f..7e01d26 100644 --- a/test/unit/stringifies_method_signature_test.rb +++ b/test/unit/stringifies_method_signature_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class StringifiesMethodSignatureTest < Minitest::Test + class StringifiesMethodSignatureTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(StringifiesMethodSignature.new, StringifiesMethodSignature) end diff --git a/test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb b/test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb index e66e374..fe3647c 100644 --- a/test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb +++ b/test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb @@ -1,15 +1,11 @@ # typed: strict -require "test_helper" - module Mocktail - class StringifiesCallTest < Minitest::Test + class StringifiesCallTest < TLDR extend T::Sig - sig { params(name: String).void } - def initialize(name) - super - + sig { void } + def initialize @subject = T.let(StringifiesCall.new, StringifiesCall) end @@ -43,11 +39,11 @@ def test_some_calls assert_equal "hi(d: {:e=>4}, f: [:g, {:h=>5}])", invoke(kwargs: {d: {e: 4}, f: [:g, {h: 5}]}) # Blocks & Procs - assert_equal "hi { Proc at test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb:46 }", invoke {} - assert_equal "hi(&lambda[test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb:47])", invoke(&lambda {}) + assert_equal "hi { Proc at test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb:42 }", invoke {} + assert_equal "hi(&lambda[test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb:43])", invoke(&lambda {}) # Mix & Match - assert_equal "hi(:a, 1, b: 2) { Proc at test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb:50 }", invoke(args: [:a, 1], kwargs: {b: 2}) { |c| 3 } + assert_equal "hi(:a, 1, b: 2) { Proc at test/unit/verifies_call/raises_verification_error/stringifies_call_test.rb:46 }", invoke(args: [:a, 1], kwargs: {b: 2}) { |c| 3 } end private