# File lib/ruby_indexer/test/method_test.rb, line 278deftest_ignores_attributes_invoked_on_constantindex(<<~RUBY)
class Foo
end
Foo.attr_reader :bar
RUBYassert_no_entry("bar")
end
test_keeps_track_of_attributes()
# File lib/ruby_indexer/test/method_test.rb, line 259deftest_keeps_track_of_attributesindex(<<~RUBY)
class Foo
# Hello there
attr_reader :bar, :other
attr_writer :baz
attr_accessor :qux
end
RUBYassert_entry("bar", Entry::Accessor, "/fake/path/foo.rb:2-15:2-18")
assert_equal("Hello there", @index["bar"].first.comments.join("\n"))
assert_entry("other", Entry::Accessor, "/fake/path/foo.rb:2-21:2-26")
assert_equal("Hello there", @index["other"].first.comments.join("\n"))
assert_entry("baz=", Entry::Accessor, "/fake/path/foo.rb:3-15:3-18")
assert_entry("qux", Entry::Accessor, "/fake/path/foo.rb:4-17:4-20")
assert_entry("qux=", Entry::Accessor, "/fake/path/foo.rb:4-17:4-20")
end
test_keeps_track_of_method_owner()
# File lib/ruby_indexer/test/method_test.rb, line 245deftest_keeps_track_of_method_ownerindex(<<~RUBY)
class Foo
def bar
end
end
RUBYentry = T.must(@index["bar"].first)
owner_name = T.must(entry.owner).nameassert_equal("Foo", owner_name)
end
test_method_with_anonymous_rest_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 212deftest_method_with_anonymous_rest_parametersindex(<<~RUBY)
class Foo
def bar(*, **)
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(2, entry.parameters.length)
first, second = entry.parametersassert_equal(Entry::RestParameter::DEFAULT_NAME, first.name)
assert_instance_of(Entry::RestParameter, first)
assert_equal(Entry::KeywordRestParameter::DEFAULT_NAME, second.name)
assert_instance_of(Entry::KeywordRestParameter, second)
end
test_method_with_block_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 188deftest_method_with_block_parametersindex(<<~RUBY)
class Foo
def bar(&block)
end
def baz(&)
end
end
RUBYentry = T.must(@index["bar"].first)
param = entry.parameters.firstassert_equal(:block, param.name)
assert_instance_of(Entry::BlockParameter, param)
entry = T.must(@index["baz"].first)
assert_equal(1, entry.parameters.length)
param = entry.parameters.firstassert_equal(Entry::BlockParameter::DEFAULT_NAME, param.name)
assert_instance_of(Entry::BlockParameter, param)
end
test_method_with_destructed_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 57deftest_method_with_destructed_parametersindex(<<~RUBY)
class Foo
def bar((a, (b, )))
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(1, entry.parameters.length)
parameter = entry.parameters.firstassert_equal(:"(a, (b, ))", parameter.name)
assert_instance_of(Entry::RequiredParameter, parameter)
end
test_method_with_destructured_rest_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 171deftest_method_with_destructured_rest_parametersindex(<<~RUBY)
class Foo
def bar((a, *b))
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(1, entry.parameters.length)
param = entry.parameters.firstassert_equal(:"(a, *b)", param.name)
assert_instance_of(Entry::RequiredParameter, param)
end
# File lib/ruby_indexer/test/method_test.rb, line 232deftest_method_with_forbidden_keyword_splat_parameterindex(<<~RUBY)
class Foo
def bar(**nil)
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_empty(entry.parameters)
end
test_method_with_keyword_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 89deftest_method_with_keyword_parametersindex(<<~RUBY)
class Foo
def bar(a:, b: 123)
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(2, entry.parameters.length)
a, b = entry.parametersassert_equal(:a, a.name)
assert_instance_of(Entry::KeywordParameter, a)
assert_equal(:b, b.name)
assert_instance_of(Entry::OptionalKeywordParameter, b)
end
test_method_with_no_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 8deftest_method_with_no_parametersindex(<<~RUBY)
class Foo
def bar
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
end
test_method_with_optional_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 73deftest_method_with_optional_parametersindex(<<~RUBY)
class Foo
def bar(a = 123)
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(1, entry.parameters.length)
parameter = entry.parameters.firstassert_equal(:a, parameter.name)
assert_instance_of(Entry::OptionalParameter, parameter)
end
test_method_with_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 41deftest_method_with_parametersindex(<<~RUBY)
class Foo
def bar(a)
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(1, entry.parameters.length)
parameter = entry.parameters.firstassert_equal(:a, parameter.name)
assert_instance_of(Entry::RequiredParameter, parameter)
end
test_method_with_post_parameters()
# File lib/ruby_indexer/test/method_test.rb, line 129deftest_method_with_post_parametersindex(<<~RUBY)
class Foo
def bar(*a, b)
end
def baz(**a, b)
end
def qux(*a, (b, c))
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(2, entry.parameters.length)
a, b = entry.parametersassert_equal(:a, a.name)
assert_instance_of(Entry::RestParameter, a)
assert_equal(:b, b.name)
assert_instance_of(Entry::RequiredParameter, b)
entry = T.must(@index["baz"].first)
assert_equal(2, entry.parameters.length)
a, b = entry.parametersassert_equal(:a, a.name)
assert_instance_of(Entry::KeywordRestParameter, a)
assert_equal(:b, b.name)
assert_instance_of(Entry::RequiredParameter, b)
entry = T.must(@index["qux"].first)
assert_equal(2, entry.parameters.length)
_a, second = entry.parametersassert_equal(:"(b, c)", second.name)
assert_instance_of(Entry::RequiredParameter, second)
end
# File lib/ruby_indexer/test/method_test.rb, line 109deftest_method_with_rest_and_keyword_rest_parametersindex(<<~RUBY)
class Foo
def bar(*a, **b)
end
end
RUBYassert_entry("bar", Entry::InstanceMethod, "/fake/path/foo.rb:1-2:2-5")
entry = T.must(@index["bar"].first)
assert_equal(2, entry.parameters.length)
a, b = entry.parametersassert_equal(:a, a.name)
assert_instance_of(Entry::RestParameter, a)
assert_equal(:b, b.name)
assert_instance_of(Entry::KeywordRestParameter, b)
end
# File lib/ruby_indexer/test/method_test.rb, line 30deftest_singleton_method_using_other_receiver_is_not_indexedindex(<<~RUBY)
class Foo
def String.bar
end
end
RUBYassert_no_entry("bar")
end
test_singleton_method_using_self_receiver()
# File lib/ruby_indexer/test/method_test.rb, line 19deftest_singleton_method_using_self_receiverindex(<<~RUBY)
class Foo
def self.bar
end
end
RUBYassert_entry("bar", Entry::SingletonMethod, "/fake/path/foo.rb:1-2:2-5")
end