diff --git a/test/test_helper.rb b/test/test_helper.rb index 94fda1e01a..759e0a9516 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -13,7 +13,7 @@ require "debug" require "mocha/minitest" -sorbet_paths = Gem.loaded_specs["sorbet-runtime"].full_require_paths.freeze +sorbet_paths = T.let(Gem.loaded_specs["sorbet-runtime"].full_require_paths.freeze, T::Array[String]) DEBUGGER__::CONFIG[:skip_path] = Array(DEBUGGER__::CONFIG[:skip_path]) + sorbet_paths minitest_reporter = if ENV["SPEC_REPORTER"] @@ -28,3 +28,20 @@ class Test Minitest::Test.make_my_diffs_pretty! end end + +# based on https://github.com/minitest/minitest/blob/master/lib/minitest.rb +class BacktraceWithoutSorbetFilter < Minitest::BacktraceFilter + extend T::Sig + sig { override.params(bt: T.nilable(T::Array[String])).returns(T::Array[String]) } + def filter(bt) + return ["No backtrace"] unless bt + + return bt.dup if $DEBUG + + bt.find_all do |line| + line !~ MT_RE && SORBET_PATHS.none? { |path| line.include?(path) } + end + end +end + +Minitest.backtrace_filter = BacktraceWithoutSorbetFilter.new(sorbet_paths)