summaryrefslogtreecommitdiff
path: root/test/rdoc/test_rdoc_any_method.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rdoc/test_rdoc_any_method.rb')
-rw-r--r--test/rdoc/test_rdoc_any_method.rb102
1 files changed, 101 insertions, 1 deletions
diff --git a/test/rdoc/test_rdoc_any_method.rb b/test/rdoc/test_rdoc_any_method.rb
index 615789dfb3..b11c15420c 100644
--- a/test/rdoc/test_rdoc_any_method.rb
+++ b/test/rdoc/test_rdoc_any_method.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
-require File.expand_path '../xref_test_case', __FILE__
+require_relative 'xref_test_case'
class TestRDocAnyMethod < XrefTestCase
@@ -51,10 +51,38 @@ method(a, b) { |c, d| ... }
assert_equal 'foo', m.call_seq
end
+ def test_call_seq_alias_for
+ a = RDoc::AnyMethod.new nil, "each"
+ m = RDoc::AnyMethod.new nil, "each_line"
+
+ a.call_seq = <<-CALLSEQ
+each(foo)
+each_line(foo)
+ CALLSEQ
+
+ m.is_alias_for = a
+
+ assert_equal "each_line(foo)", m.call_seq
+ end
+
def test_full_name
assert_equal 'C1::m', @c1.method_list.first.full_name
end
+ def test_has_call_seq?
+ m = RDoc::AnyMethod.new nil, "each_line"
+ m2 = RDoc::AnyMethod.new nil, "each"
+ assert_equal false, m.has_call_seq?
+ m.call_seq = "each_line()"
+ assert_equal true, m.has_call_seq?
+
+ m = RDoc::AnyMethod.new nil, "each_line"
+ m.is_alias_for = m2
+ assert_equal false, m.has_call_seq?
+ m2.call_seq = "each_line()"
+ assert_equal true, m.has_call_seq?
+ end
+
def test_is_alias_for
assert_equal @c2_b, @c2_a.is_alias_for
@@ -72,6 +100,54 @@ method(a, b) { |c, d| ... }
assert_nil m1.is_alias_for, 'missing alias'
end
+ def test_call_seq_handles_aliases
+ # see 0ead786
+ @store.path = Dir.tmpdir
+ top_level = @store.add_file 'file.rb'
+ cm = top_level.add_class RDoc::ClassModule, 'Klass'
+
+ method_with_call_seq = RDoc::AnyMethod.new(nil, "method_with_call_seq")
+ method_with_call_seq.call_seq = <<~SEQ
+ method_with_call_seq(a)
+ method_with_call_seq(a, b)
+ alias_to_method(a)
+ alias_to_method(a, b)
+ SEQ
+ cm.add_method(method_with_call_seq)
+
+ alias_to_method = method_with_call_seq.add_alias(
+ RDoc::Alias.new(nil, "method_with_call_seq", "alias_to_method", "comment"),
+ cm
+ )
+
+ assert_equal("method_with_call_seq(a)\nmethod_with_call_seq(a, b)",
+ method_with_call_seq.call_seq)
+ assert_equal("alias_to_method(a)\nalias_to_method(a, b)",
+ alias_to_method.call_seq)
+ end
+
+ def test_call_seq_returns_nil_if_alias_is_missing_from_call_seq
+ @store.path = Dir.tmpdir
+ top_level = @store.add_file 'file.rb'
+ cm = top_level.add_class RDoc::ClassModule, 'Klass'
+
+ method_with_call_seq = RDoc::AnyMethod.new(nil, "method_with_call_seq")
+ method_with_call_seq.call_seq = <<~SEQ
+ method_with_call_seq(a)
+ method_with_call_seq(a, b)
+ SEQ
+ cm.add_method(method_with_call_seq)
+
+ alias_to_method = method_with_call_seq.add_alias(
+ RDoc::Alias.new(nil, "method_with_call_seq", "alias_to_method", "comment"),
+ cm
+ )
+
+ assert_equal("method_with_call_seq(a)\nmethod_with_call_seq(a, b)",
+ method_with_call_seq.call_seq)
+ assert_nil(alias_to_method.call_seq)
+ end
+
def test_markup_code
tokens = [
{ :line_no => 0, :char_no => 0, :kind => :on_const, :text => 'CONSTANT' },
@@ -453,6 +529,30 @@ method(a, b) { |c, d| ... }
assert_equal 'C1', @c1.method_list.last.parent_name
end
+ def test_skip_description?
+ m = RDoc::AnyMethod.new nil, "each_line"
+ m2 = RDoc::AnyMethod.new nil, "each"
+ assert_equal false, m.skip_description?
+ assert_equal false, m2.skip_description?
+
+ m.is_alias_for = m2
+ m2.aliases << m
+ assert_equal false, m.skip_description?
+ assert_equal false, m2.skip_description?
+
+ m2.call_seq = "each()"
+ assert_equal true, m.skip_description?
+ assert_equal false, m2.skip_description?
+
+ m2.call_seq = "each_line()"
+ assert_equal false, m.skip_description?
+ assert_equal true, m2.skip_description?
+
+ m2.call_seq = "each()\neach_line()"
+ assert_equal false, m.skip_description?
+ assert_equal false, m2.skip_description?
+ end
+
def test_store_equals
loaded = Marshal.load Marshal.dump(@c1.method_list.last)