Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ gem 'pstore'

group :minitest do
gem "minitest"
gem "minitest-mock"
end

group :typecheck_test do
Expand Down
5 changes: 4 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@ GEM
marcel (1.1.0)
memory_profiler (1.1.0)
mini_portile2 (2.8.9)
minitest (5.26.2)
minitest (6.0.0)
prism (~> 1.5)
minitest-mock (5.27.0)
mutex_m (0.3.0)
net-protocol (0.2.2)
timeout
Expand Down Expand Up @@ -204,6 +206,7 @@ DEPENDENCIES
json-schema
memory_profiler
minitest
minitest-mock
mutex_m
net-smtp
nkf
Expand Down
2 changes: 2 additions & 0 deletions test/rbs/test/runtime_test_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ def world: () -> void
end

def test_minitest
omit unless has_gem?("minitest-mock") && has_gem?("minitest")
omit if skip_minitest?

assert_test_success(other_env: { 'RBS_TEST_TARGET' => 'Foo', 'RBS_TEST_DOUBLE_SUITE' => 'minitest' }, rbs_content: <<RBS, ruby_content: <<RUBY)
Expand All @@ -156,6 +157,7 @@ def foo(integer)
end

require "minitest/autorun"
require "minitest/mock"

class FooTest < Minitest::Test
def test_foo_mock
Expand Down
57 changes: 35 additions & 22 deletions test/rbs/test/type_check_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -623,22 +623,11 @@ def test_typecheck_args
end
end

def test_is_double
omit unless has_gem?("rspec")
omit if skip_minitest?

def test_is_double__rspec
require "rspec/mocks/standalone"
require "minitest/mock"

SignatureManager.new do |manager|
manager.build do |env|
minitest_typecheck = Test::TypeCheck.new(
self_class: Integer,
builder: DefinitionBuilder.new(env: env),
sample_size: 100,
unchecked_classes: ['Minitest::Mock']
)

rspec_typecheck = Test::TypeCheck.new(
self_class: Integer,
builder: DefinitionBuilder.new(env: env),
Expand All @@ -653,26 +642,50 @@ def test_is_double
unchecked_classes: []
)

minitest_mock = ::Minitest::Mock.new
rspec_mock = RSPEC_MOCK[]

assert minitest_typecheck.is_double? minitest_mock
assert rspec_typecheck.is_double? rspec_mock

refute minitest_typecheck.is_double? rspec_mock
refute rspec_typecheck.is_double? minitest_mock

refute minitest_typecheck.is_double? 1
refute minitest_typecheck.is_double? 'hi'
refute minitest_typecheck.is_double? nil
refute no_mock_typecheck.is_double? rspec_mock

refute rspec_typecheck.is_double? 1
refute rspec_typecheck.is_double? 'hi'
refute rspec_typecheck.is_double? nil
end
end
end

refute no_mock_typecheck.is_double? minitest_mock
def test_is_double__minitest
# Minitest is optional dependency to make ruby-lsp-test-discovery work correctly.
# Omit this test when minitest is unavailable, or `NO_MINITEST` env var is set.
omit unless has_gem?("minitest-mock") && has_gem?("minitest")
omit if skip_minitest?

require "minitest/mock"

SignatureManager.new do |manager|
manager.build do |env|
minitest_typecheck = Test::TypeCheck.new(
self_class: Integer,
builder: DefinitionBuilder.new(env: env),
sample_size: 100,
unchecked_classes: ['Minitest::Mock']
)

no_mock_typecheck = Test::TypeCheck.new(
self_class: Integer,
builder: DefinitionBuilder.new(env: env),
sample_size: 100,
unchecked_classes: []
)

minitest_mock = ::Minitest::Mock.new

assert minitest_typecheck.is_double? minitest_mock
refute no_mock_typecheck.is_double? minitest_mock

refute minitest_typecheck.is_double? 1
refute minitest_typecheck.is_double? 'hi'
refute minitest_typecheck.is_double? nil
end
end
end
Expand Down
Loading