yard 0.9.23 → 0.9.27
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.dockerignore +0 -0
- data/.gitattributes +4 -0
- data/.github/FUNDING.yml +3 -0
- data/.github/ISSUE_TEMPLATE.md +6 -6
- data/.github/PULL_REQUEST_TEMPLATE.md +5 -5
- data/.github/workflows/ci.yml +30 -0
- data/.github/workflows/gem.yml +19 -0
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/.rubocop.yml +37 -24
- data/.yardopts +0 -0
- data/.yardopts_guide +0 -0
- data/.yardopts_i18n +0 -0
- data/CHANGELOG.md +50 -4
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +5 -3
- data/README.md +97 -102
- data/Rakefile +2 -3
- data/lib/yard/cli/diff.rb +4 -1
- data/lib/yard/cli/server.rb +22 -13
- data/lib/yard/cli/stats.rb +2 -0
- data/lib/yard/cli/yardoc.rb +2 -1
- data/lib/yard/code_objects/method_object.rb +1 -1
- data/lib/yard/code_objects/namespace_mapper.rb +30 -3
- data/lib/yard/code_objects/proxy.rb +2 -1
- data/lib/yard/globals.rb +1 -1
- data/lib/yard/handlers/c/base.rb +35 -0
- data/lib/yard/handlers/ruby/method_handler.rb +1 -1
- data/lib/yard/handlers/ruby/mixin_handler.rb +7 -2
- data/lib/yard/handlers/ruby/module_function_handler.rb +15 -3
- data/lib/yard/parser/ruby/ast_node.rb +2 -2
- data/lib/yard/parser/ruby/ruby_parser.rb +7 -5
- data/lib/yard/parser/ruby/token_resolver.rb +3 -1
- data/lib/yard/parser/source_parser.rb +1 -1
- data/lib/yard/registry_resolver.rb +10 -24
- data/lib/yard/registry_store.rb +1 -1
- data/lib/yard/serializers/yardoc_serializer.rb +1 -1
- data/lib/yard/server/commands/base.rb +2 -2
- data/lib/yard/server/commands/library_command.rb +1 -1
- data/lib/yard/tags/directives.rb +10 -1
- data/lib/yard/templates/helpers/html_helper.rb +15 -5
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
- data/lib/yard/templates/helpers/markup_helper.rb +2 -1
- data/lib/yard/templates/section.rb +1 -3
- data/lib/yard/version.rb +1 -1
- data/lib/yard.rb +3 -0
- data/samus.json +15 -46
- data/tasks/prepare_tag.rake +45 -0
- data/tasks/update_error_map.rake +53 -0
- data/templates/default/fulldoc/html/css/style.css +1 -0
- data/yard.gemspec +3 -2
- metadata +23 -207
- data/.travis.yml +0 -52
- data/spec/cli/command_parser_spec.rb +0 -43
- data/spec/cli/command_spec.rb +0 -36
- data/spec/cli/config_spec.rb +0 -148
- data/spec/cli/diff_spec.rb +0 -254
- data/spec/cli/display_spec.rb +0 -30
- data/spec/cli/gems_spec.rb +0 -81
- data/spec/cli/graph_spec.rb +0 -18
- data/spec/cli/help_spec.rb +0 -22
- data/spec/cli/i18n_spec.rb +0 -107
- data/spec/cli/list_spec.rb +0 -8
- data/spec/cli/markup_types_spec.rb +0 -22
- data/spec/cli/server_spec.rb +0 -324
- data/spec/cli/stats_spec.rb +0 -96
- data/spec/cli/yard_on_yard_spec.rb +0 -38
- data/spec/cli/yardoc_spec.rb +0 -896
- data/spec/cli/yri_spec.rb +0 -101
- data/spec/code_objects/base_spec.rb +0 -485
- data/spec/code_objects/class_object_spec.rb +0 -226
- data/spec/code_objects/code_object_list_spec.rb +0 -36
- data/spec/code_objects/constants_spec.rb +0 -116
- data/spec/code_objects/extra_file_object_spec.rb +0 -161
- data/spec/code_objects/macro_object_spec.rb +0 -150
- data/spec/code_objects/method_object_spec.rb +0 -184
- data/spec/code_objects/module_object_spec.rb +0 -142
- data/spec/code_objects/namespace_object_spec.rb +0 -171
- data/spec/code_objects/proxy_spec.rb +0 -147
- data/spec/code_objects/spec_helper.rb +0 -3
- data/spec/config_spec.rb +0 -171
- data/spec/core_ext/array_spec.rb +0 -13
- data/spec/core_ext/file_spec.rb +0 -72
- data/spec/core_ext/hash_spec.rb +0 -14
- data/spec/core_ext/insertion_spec.rb +0 -37
- data/spec/core_ext/module_spec.rb +0 -9
- data/spec/core_ext/string_spec.rb +0 -42
- data/spec/core_ext/symbol_hash_spec.rb +0 -89
- data/spec/docstring_parser_spec.rb +0 -280
- data/spec/docstring_spec.rb +0 -373
- data/spec/handlers/alias_handler_spec.rb +0 -82
- data/spec/handlers/attribute_handler_spec.rb +0 -96
- data/spec/handlers/base_spec.rb +0 -216
- data/spec/handlers/c/alias_handler_spec.rb +0 -34
- data/spec/handlers/c/attribute_handler_spec.rb +0 -41
- data/spec/handlers/c/class_handler_spec.rb +0 -78
- data/spec/handlers/c/constant_handler_spec.rb +0 -71
- data/spec/handlers/c/init_handler_spec.rb +0 -48
- data/spec/handlers/c/method_handler_spec.rb +0 -327
- data/spec/handlers/c/mixin_handler_spec.rb +0 -44
- data/spec/handlers/c/module_handler_spec.rb +0 -71
- data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
- data/spec/handlers/c/path_handler_spec.rb +0 -36
- data/spec/handlers/c/spec_helper.rb +0 -23
- data/spec/handlers/c/struct_handler_spec.rb +0 -16
- data/spec/handlers/class_condition_handler_spec.rb +0 -87
- data/spec/handlers/class_handler_spec.rb +0 -247
- data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
- data/spec/handlers/class_variable_handler_spec.rb +0 -12
- data/spec/handlers/constant_handler_spec.rb +0 -112
- data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
- data/spec/handlers/dsl_handler_spec.rb +0 -226
- data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
- data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
- data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
- data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
- data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
- data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
- data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
- data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
- data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
- data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
- data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
- data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
- data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
- data/spec/handlers/exception_handler_spec.rb +0 -49
- data/spec/handlers/extend_handler_spec.rb +0 -28
- data/spec/handlers/legacy_base_spec.rb +0 -128
- data/spec/handlers/method_condition_handler_spec.rb +0 -15
- data/spec/handlers/method_handler_spec.rb +0 -214
- data/spec/handlers/mixin_handler_spec.rb +0 -60
- data/spec/handlers/module_function_handler_spec.rb +0 -106
- data/spec/handlers/module_handler_spec.rb +0 -35
- data/spec/handlers/private_class_method_handler_spec.rb +0 -11
- data/spec/handlers/private_constant_handler_spec.rb +0 -25
- data/spec/handlers/processor_spec.rb +0 -35
- data/spec/handlers/public_class_method_handler_spec.rb +0 -11
- data/spec/handlers/ruby/base_spec.rb +0 -95
- data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
- data/spec/handlers/spec_helper.rb +0 -33
- data/spec/handlers/visibility_handler_spec.rb +0 -44
- data/spec/handlers/yield_handler_spec.rb +0 -52
- data/spec/i18n/locale_spec.rb +0 -81
- data/spec/i18n/message_spec.rb +0 -52
- data/spec/i18n/messages_spec.rb +0 -67
- data/spec/i18n/pot_generator_spec.rb +0 -295
- data/spec/i18n/text_spec.rb +0 -184
- data/spec/logging_spec.rb +0 -44
- data/spec/options_spec.rb +0 -171
- data/spec/parser/base_spec.rb +0 -24
- data/spec/parser/c_parser_spec.rb +0 -236
- data/spec/parser/examples/array.c.txt +0 -6267
- data/spec/parser/examples/example1.rb.txt +0 -8
- data/spec/parser/examples/extrafile.c.txt +0 -8
- data/spec/parser/examples/file.c.txt +0 -28
- data/spec/parser/examples/multifile.c.txt +0 -22
- data/spec/parser/examples/namespace.cpp.txt +0 -68
- data/spec/parser/examples/override.c.txt +0 -424
- data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
- data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
- data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
- data/spec/parser/ruby/ast_node_spec.rb +0 -33
- data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
- data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
- data/spec/parser/ruby/ruby_parser_spec.rb +0 -508
- data/spec/parser/ruby/token_resolver_spec.rb +0 -165
- data/spec/parser/source_parser_spec.rb +0 -727
- data/spec/parser/tag_parsing_spec.rb +0 -17
- data/spec/rake/yardoc_task_spec.rb +0 -118
- data/spec/registry_spec.rb +0 -463
- data/spec/registry_store_spec.rb +0 -327
- data/spec/rubygems/doc_manager_spec.rb +0 -112
- data/spec/serializers/data/serialized_yardoc/checksums +0 -1
- data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
- data/spec/serializers/file_system_serializer_spec.rb +0 -145
- data/spec/serializers/spec_helper.rb +0 -2
- data/spec/serializers/yardoc_serializer_spec.rb +0 -78
- data/spec/server/adapter_spec.rb +0 -39
- data/spec/server/commands/base_spec.rb +0 -91
- data/spec/server/commands/library_command_spec.rb +0 -39
- data/spec/server/doc_server_helper_spec.rb +0 -72
- data/spec/server/doc_server_serializer_spec.rb +0 -60
- data/spec/server/rack_adapter_spec.rb +0 -21
- data/spec/server/router_spec.rb +0 -123
- data/spec/server/spec_helper.rb +0 -22
- data/spec/server/static_caching_spec.rb +0 -47
- data/spec/server/webrick_servlet_spec.rb +0 -20
- data/spec/server_spec.rb +0 -19
- data/spec/spec_helper.rb +0 -212
- data/spec/tags/default_factory_spec.rb +0 -168
- data/spec/tags/default_tag_spec.rb +0 -11
- data/spec/tags/directives_spec.rb +0 -463
- data/spec/tags/library_spec.rb +0 -48
- data/spec/tags/overload_tag_spec.rb +0 -53
- data/spec/tags/ref_tag_list_spec.rb +0 -53
- data/spec/tags/types_explainer_spec.rb +0 -203
- data/spec/templates/class_spec.rb +0 -45
- data/spec/templates/constant_spec.rb +0 -41
- data/spec/templates/engine_spec.rb +0 -131
- data/spec/templates/examples/class001.html +0 -308
- data/spec/templates/examples/class001.txt +0 -36
- data/spec/templates/examples/class002.html +0 -39
- data/spec/templates/examples/constant001.txt +0 -25
- data/spec/templates/examples/constant002.txt +0 -7
- data/spec/templates/examples/constant003.txt +0 -11
- data/spec/templates/examples/method001.html +0 -137
- data/spec/templates/examples/method001.txt +0 -35
- data/spec/templates/examples/method002.html +0 -91
- data/spec/templates/examples/method002.txt +0 -20
- data/spec/templates/examples/method003.html +0 -165
- data/spec/templates/examples/method003.txt +0 -45
- data/spec/templates/examples/method004.html +0 -48
- data/spec/templates/examples/method004.txt +0 -10
- data/spec/templates/examples/method005.html +0 -105
- data/spec/templates/examples/method005.txt +0 -33
- data/spec/templates/examples/method006.html +0 -108
- data/spec/templates/examples/method006.txt +0 -20
- data/spec/templates/examples/module001.dot +0 -33
- data/spec/templates/examples/module001.html +0 -833
- data/spec/templates/examples/module001.txt +0 -33
- data/spec/templates/examples/module002.html +0 -341
- data/spec/templates/examples/module003.html +0 -202
- data/spec/templates/examples/module004.html +0 -394
- data/spec/templates/examples/module005.html +0 -82
- data/spec/templates/examples/tag001.txt +0 -82
- data/spec/templates/helpers/base_helper_spec.rb +0 -171
- data/spec/templates/helpers/html_helper_spec.rb +0 -687
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
- data/spec/templates/helpers/markup_helper_spec.rb +0 -136
- data/spec/templates/helpers/method_helper_spec.rb +0 -107
- data/spec/templates/helpers/module_helper_spec.rb +0 -35
- data/spec/templates/helpers/shared_signature_examples.rb +0 -126
- data/spec/templates/helpers/text_helper_spec.rb +0 -65
- data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
- data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -46
- data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -59
- data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
- data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -59
- data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -48
- data/spec/templates/method_spec.rb +0 -118
- data/spec/templates/module_spec.rb +0 -203
- data/spec/templates/onefile_spec.rb +0 -66
- data/spec/templates/section_spec.rb +0 -144
- data/spec/templates/spec_helper.rb +0 -76
- data/spec/templates/tag_spec.rb +0 -52
- data/spec/templates/template_spec.rb +0 -410
- data/spec/verifier_spec.rb +0 -106
@@ -1,82 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}AliasHandler" do
|
5
|
-
before(:all) { parse_file :alias_handler_001, __FILE__ }
|
6
|
-
|
7
|
-
it "throws alias into namespace object list" do
|
8
|
-
expect(P(:A).aliases[P("A#b")]).to eq :a
|
9
|
-
end
|
10
|
-
|
11
|
-
['c', 'd?', '[]', '[]=', '-@', '%', '*', 'cstrkey', 'cstrmeth'].each do |a|
|
12
|
-
it "handles the Ruby 'alias' keyword syntax for method ##{a}" do
|
13
|
-
expect(P('A#' + a)).to be_instance_of(CodeObjects::MethodObject)
|
14
|
-
expect(P('A#' + a).is_alias?).to be true
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
it "handles keywords as the alias name" do
|
19
|
-
expect(P('A#for')).to be_instance_of(CodeObjects::MethodObject)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "allows ConstantNames to be specified as aliases" do
|
23
|
-
expect(P('A#ConstantName')).to be_instance_of(CodeObjects::MethodObject)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "creates a new method object for the alias" do
|
27
|
-
expect(P("A#b")).to be_instance_of(CodeObjects::MethodObject)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "pulls the method into the current class if it's from another one" do
|
31
|
-
expect(P(:B).aliases[P("B#q")]).to eq :x
|
32
|
-
expect(P(:B).aliases[P("B#r?")]).to eq :x
|
33
|
-
end
|
34
|
-
|
35
|
-
it "gracefully fails to pull a method in if the original method cannot be found" do
|
36
|
-
expect(P(:B).aliases[P("B#s")]).to eq :to_s
|
37
|
-
end
|
38
|
-
|
39
|
-
it "allows complex Ruby expressions after the alias parameters" do
|
40
|
-
expect(P(:B).aliases[P("B#t")]).to eq :inspect
|
41
|
-
end
|
42
|
-
|
43
|
-
it "shows up in #is_alias? for method" do
|
44
|
-
expect(P("B#t").is_alias?).to be true
|
45
|
-
expect(P('B#r?').is_alias?).to be true
|
46
|
-
end
|
47
|
-
|
48
|
-
it "allows operators and keywords to be specified as symbols" do
|
49
|
-
expect(P('B#<<')).to be_instance_of(CodeObjects::MethodObject)
|
50
|
-
expect(P('B#for')).to be_instance_of(CodeObjects::MethodObject)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "handles keywords in alias names" do
|
54
|
-
expect(P('B#do').is_alias?).to be true
|
55
|
-
expect(P('B#x2').is_alias?).to be true
|
56
|
-
expect(P(:B).aliases[P('B#do')]).to eq :x
|
57
|
-
expect(P(:B).aliases[P('B#x2')]).to eq :do
|
58
|
-
end
|
59
|
-
|
60
|
-
it "handles quoted symbols" do
|
61
|
-
foo = Registry.at('A#foo')
|
62
|
-
expect(foo).not_to be nil
|
63
|
-
expect(foo.is_alias?).to be true
|
64
|
-
expect(Registry.at('A').aliases[foo]).to eq :a
|
65
|
-
end
|
66
|
-
|
67
|
-
it "prepends aliases object's docstring to comments" do
|
68
|
-
expect(Registry.at('D#a').tag(:return).types).to eq ['Numeric']
|
69
|
-
expect(Registry.at('D#b').tag(:return).types).to eq ['String']
|
70
|
-
expect(Registry.at('D#b').docstring).to eq "Foo bar"
|
71
|
-
end
|
72
|
-
|
73
|
-
it "raises an UndocumentableError if only one parameter is passed" do
|
74
|
-
undoc_error "alias_method :q"
|
75
|
-
end
|
76
|
-
|
77
|
-
it "raises an UndocumentableError if the parameter is not a Symbol or String" do
|
78
|
-
undoc_error "alias_method CONST, Something"
|
79
|
-
undoc_error "alias_method variable, ClassName"
|
80
|
-
undoc_error "alias_method variable, other_variable"
|
81
|
-
end
|
82
|
-
end
|
@@ -1,96 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}AttributeHandler" do
|
5
|
-
before(:all) { parse_file :attribute_handler_001, __FILE__ }
|
6
|
-
|
7
|
-
def read_write(namespace, name, read, write, scope = :instance)
|
8
|
-
rname = namespace.to_s + "#" + name.to_s
|
9
|
-
wname = namespace.to_s + "#" + name.to_s + "="
|
10
|
-
if read
|
11
|
-
expect(Registry.at(rname)).to be_instance_of(CodeObjects::MethodObject)
|
12
|
-
else
|
13
|
-
expect(Registry.at(rname)).to eq nil
|
14
|
-
end
|
15
|
-
|
16
|
-
if write
|
17
|
-
expect(Registry.at(wname)).to be_kind_of(CodeObjects::MethodObject)
|
18
|
-
else
|
19
|
-
expect(Registry.at(wname)).to eq nil
|
20
|
-
end
|
21
|
-
|
22
|
-
attrs = Registry.at(namespace).attributes[scope][name]
|
23
|
-
expect(attrs[:read]).to eq(read ? Registry.at(rname) : nil)
|
24
|
-
expect(attrs[:write]).to eq(write ? Registry.at(wname) : nil)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "parses attributes inside modules too" do
|
28
|
-
expect(Registry.at("A#x=")).not_to eq nil
|
29
|
-
end
|
30
|
-
|
31
|
-
it "parses 'attr'" do
|
32
|
-
read_write(:B, :a, true, true)
|
33
|
-
read_write(:B, :a2, true, false)
|
34
|
-
read_write(:B, "a3", true, false)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "parses 'attr_reader'" do
|
38
|
-
read_write(:B, :b, true, false)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "parses 'attr_writer'" do
|
42
|
-
read_write(:B, :e, false, true)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "parses 'attr_accessor'" do
|
46
|
-
read_write(:B, :f, true, true)
|
47
|
-
end
|
48
|
-
|
49
|
-
it "parses a list of attributes" do
|
50
|
-
read_write(:B, :b, true, false)
|
51
|
-
read_write(:B, :c, true, false)
|
52
|
-
read_write(:B, :d, true, false)
|
53
|
-
end
|
54
|
-
|
55
|
-
it "has a default docstring if one is not supplied" do
|
56
|
-
expect(Registry.at("B#f=").docstring).not_to be_empty
|
57
|
-
end
|
58
|
-
|
59
|
-
it "sets the correct docstring if one is supplied" do
|
60
|
-
expect(Registry.at("B#b").docstring).to eq "Docstring"
|
61
|
-
expect(Registry.at("B#c").docstring).to eq "Docstring"
|
62
|
-
expect(Registry.at("B#d").docstring).to eq "Docstring"
|
63
|
-
end
|
64
|
-
|
65
|
-
it "is able to differentiate between class and instance attributes" do
|
66
|
-
expect(P('B').class_attributes[:z][:read].scope).to eq :class
|
67
|
-
expect(P('B').instance_attributes[:z][:read].scope).to eq :instance
|
68
|
-
end
|
69
|
-
|
70
|
-
it "responds true in method's #is_attribute?" do
|
71
|
-
expect(P('B#a').is_attribute?).to be true
|
72
|
-
expect(P('B#a=').is_attribute?).to be true
|
73
|
-
end
|
74
|
-
|
75
|
-
it "does not return true for #is_explicit? in created methods" do
|
76
|
-
Registry.at(:B).meths.each do |meth|
|
77
|
-
expect(meth.is_explicit?).to be false
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
it "handles attr call with no arguments" do
|
82
|
-
expect { StubbedSourceParser.parse_string "attr" }.not_to raise_error
|
83
|
-
end
|
84
|
-
|
85
|
-
it "adds existing reader method as part of attr_writer combo" do
|
86
|
-
expect(Registry.at('C#foo=').attr_info[:read]).to eq Registry.at('C#foo')
|
87
|
-
end
|
88
|
-
|
89
|
-
it "adds existing writer method as part of attr_reader combo" do
|
90
|
-
expect(Registry.at('C#foo').attr_info[:write]).to eq Registry.at('C#foo=')
|
91
|
-
end
|
92
|
-
|
93
|
-
it "maintains visibility for attr_reader" do
|
94
|
-
expect(Registry.at('D#parser').visibility).to eq :protected
|
95
|
-
end
|
96
|
-
end
|
data/spec/handlers/base_spec.rb
DELETED
@@ -1,216 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
require 'ostruct'
|
4
|
-
|
5
|
-
include Parser
|
6
|
-
|
7
|
-
RSpec.describe YARD::Handlers::Base do
|
8
|
-
describe "#handles and inheritance" do
|
9
|
-
before do
|
10
|
-
allow(Handlers::Base).to receive(:inherited)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "keeps track of subclasses" do
|
14
|
-
expect(Handlers::Base).to receive(:inherited).once
|
15
|
-
class TestHandler < Handlers::Base; end
|
16
|
-
end
|
17
|
-
|
18
|
-
it "raises NotImplementedError if process is called on a class with no #process" do
|
19
|
-
class TestNotImplementedHandler < Handlers::Base
|
20
|
-
end
|
21
|
-
|
22
|
-
expect { TestNotImplementedHandler.new(0, 0).process }.to raise_error(NotImplementedError)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "allows multiple handles arguments" do
|
26
|
-
expect(Handlers::Base).to receive(:inherited).once
|
27
|
-
class TestHandler1 < Handlers::Base
|
28
|
-
handles :a, :b, :c
|
29
|
-
end
|
30
|
-
expect(TestHandler1.handlers).to eq [:a, :b, :c]
|
31
|
-
end
|
32
|
-
|
33
|
-
it "allows multiple handles calls" do
|
34
|
-
expect(Handlers::Base).to receive(:inherited).once
|
35
|
-
class TestHandler2 < Handlers::Base
|
36
|
-
handles :a
|
37
|
-
handles :b
|
38
|
-
handles :c
|
39
|
-
end
|
40
|
-
expect(TestHandler2.handlers).to eq [:a, :b, :c]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "#abort! (and HandlerAborted)" do
|
45
|
-
it "allows HandlerAborted to be raised" do
|
46
|
-
class AbortHandler1 < Handlers::Ruby::Base
|
47
|
-
process { abort! }
|
48
|
-
end
|
49
|
-
expect { AbortHandler1.new(nil, nil).process }.to raise_error(HandlerAborted)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "transitive tags" do
|
54
|
-
it "adds transitive tags to children" do
|
55
|
-
Registry.clear
|
56
|
-
YARD.parse_string <<-eof
|
57
|
-
# @since 1.0
|
58
|
-
# @author Foo
|
59
|
-
class A
|
60
|
-
def foo; end
|
61
|
-
# @since 1.1
|
62
|
-
def bar; end
|
63
|
-
end
|
64
|
-
eof
|
65
|
-
expect(Registry.at('A').tag(:since).text).to eq "1.0"
|
66
|
-
expect(Registry.at('A#foo').tag(:since).text).to eq "1.0"
|
67
|
-
expect(Registry.at('A#bar').tag(:since).text).to eq "1.1"
|
68
|
-
expect(Registry.at('A#bar').tag(:author)).to be nil
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe "sharing global state" do
|
73
|
-
it "allows globals to share global state among handlers" do
|
74
|
-
class GlobalStateHandler1 < Handlers::Ruby::Base
|
75
|
-
class << self; attr_accessor :state end
|
76
|
-
handles :class
|
77
|
-
process { self.class.state = globals.foo; globals.foo = :bar }
|
78
|
-
end
|
79
|
-
|
80
|
-
class GlobalStateHandler2 < Handlers::Ruby::Base
|
81
|
-
class << self; attr_accessor :state end
|
82
|
-
handles :def
|
83
|
-
process { self.class.state = globals.foo }
|
84
|
-
end
|
85
|
-
|
86
|
-
2.times do
|
87
|
-
YARD.parse_string 'class Foo; end; def foo; end'
|
88
|
-
expect(GlobalStateHandler1.state).to eq nil
|
89
|
-
expect(GlobalStateHandler2.state).to eq :bar
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end if HAVE_RIPPER
|
93
|
-
|
94
|
-
describe "#push_state" do
|
95
|
-
def process(klass)
|
96
|
-
state = OpenStruct.new(:namespace => "ROOT", :scope => :instance, :owner => "ROOT")
|
97
|
-
klass.new(state, nil).process
|
98
|
-
end
|
99
|
-
|
100
|
-
it "pushes and return all old state info after block" do
|
101
|
-
class PushStateHandler1 < Handlers::Base
|
102
|
-
include RSpec::Matchers
|
103
|
-
RSpec::Expectations::Syntax.enable_expect(self)
|
104
|
-
|
105
|
-
def process
|
106
|
-
push_state(:namespace => "FOO", :scope => :class, :owner => "BAR") do
|
107
|
-
expect(namespace).to eq "FOO"
|
108
|
-
expect(scope).to eq :class
|
109
|
-
expect(owner).to eq "BAR"
|
110
|
-
end
|
111
|
-
expect(namespace).to eq "ROOT"
|
112
|
-
expect(owner).to eq "ROOT"
|
113
|
-
expect(scope).to eq :instance
|
114
|
-
end
|
115
|
-
end
|
116
|
-
process PushStateHandler1
|
117
|
-
end
|
118
|
-
|
119
|
-
it "allows owner to be pushed individually" do
|
120
|
-
class PushStateHandler2 < Handlers::Base
|
121
|
-
include RSpec::Matchers
|
122
|
-
RSpec::Expectations::Syntax.enable_expect(self)
|
123
|
-
|
124
|
-
def process
|
125
|
-
push_state(:owner => "BAR") do
|
126
|
-
expect(namespace).to eq "ROOT"
|
127
|
-
expect(scope).to eq :instance
|
128
|
-
expect(owner).to eq "BAR"
|
129
|
-
end
|
130
|
-
expect(owner).to eq "ROOT"
|
131
|
-
end
|
132
|
-
end
|
133
|
-
process PushStateHandler2
|
134
|
-
end
|
135
|
-
|
136
|
-
it "allows scope to be pushed individually" do
|
137
|
-
class PushStateHandler3 < Handlers::Base
|
138
|
-
include RSpec::Matchers
|
139
|
-
RSpec::Expectations::Syntax.enable_expect(self)
|
140
|
-
|
141
|
-
def process
|
142
|
-
push_state(:scope => :foo) do
|
143
|
-
expect(namespace).to eq "ROOT"
|
144
|
-
expect(scope).to eq :foo
|
145
|
-
expect(owner).to eq "ROOT"
|
146
|
-
end
|
147
|
-
expect(scope).to eq :instance
|
148
|
-
end
|
149
|
-
end
|
150
|
-
process PushStateHandler3
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
describe ".in_file" do
|
155
|
-
def parse(filename, parser_type, src = "class A; end")
|
156
|
-
parser = Parser::SourceParser.new(parser_type)
|
157
|
-
parser.instance_variable_set("@file", filename)
|
158
|
-
parser.parse(StringIO.new(src))
|
159
|
-
end
|
160
|
-
|
161
|
-
def create_handler(stmts, parser_type)
|
162
|
-
$handler_counter ||= 0
|
163
|
-
sklass = parser_type == :ruby ? "Base" : "Legacy::Base"
|
164
|
-
instance_eval(<<-eof, __FILE__, __LINE__ + 1)
|
165
|
-
class ::InFileHandler#{$handler_counter += 1} < Handlers::Ruby::#{sklass}
|
166
|
-
handles(/^class/)
|
167
|
-
#{stmts}
|
168
|
-
def process; MethodObject.new(:root, :FOO) end
|
169
|
-
end
|
170
|
-
eof
|
171
|
-
end
|
172
|
-
|
173
|
-
def test_handler(file, stmts, creates = true, parser_type = :ruby)
|
174
|
-
Registry.clear
|
175
|
-
expect(Registry.at('#FOO')).to be nil
|
176
|
-
create_handler(stmts, parser_type)
|
177
|
-
parse(file, parser_type)
|
178
|
-
expect(Registry.at('#FOO')).send(creates ? :not_to : :to, be_nil)
|
179
|
-
Handlers::Base.subclasses.delete_if {|k, _v| k.to_s =~ /^InFileHandler/ }
|
180
|
-
end
|
181
|
-
|
182
|
-
[:ruby, :ruby18].each do |parser_type|
|
183
|
-
next if parser_type == :ruby && LEGACY_PARSER
|
184
|
-
describe "Parser type = #{parser_type.inspect}" do
|
185
|
-
it "allows handler to be specific to a file" do
|
186
|
-
test_handler 'file_a.rb', 'in_file "file_a.rb"', true, parser_type
|
187
|
-
end
|
188
|
-
|
189
|
-
it "ignores handler if filename does not match" do
|
190
|
-
test_handler 'file_b.rb', 'in_file "file_a.rb"', false, parser_type
|
191
|
-
end
|
192
|
-
|
193
|
-
it "only tests filename part when given a String" do
|
194
|
-
test_handler '/path/to/file_a.rb', 'in_file "/to/file_a.rb"', false, parser_type
|
195
|
-
end
|
196
|
-
|
197
|
-
it "tests exact match for entire String" do
|
198
|
-
test_handler 'file_a.rb', 'in_file "file"', false, parser_type
|
199
|
-
end
|
200
|
-
|
201
|
-
it "allows a Regexp as argument and test against full path" do
|
202
|
-
test_handler 'file_a.rbx', 'in_file(/\.rbx$/)', true, parser_type
|
203
|
-
test_handler '/path/to/file_a.rbx', 'in_file(/\/to\/file_/)', true, parser_type
|
204
|
-
test_handler '/path/to/file_a.rbx', 'in_file(/^\/path/)', true, parser_type
|
205
|
-
end
|
206
|
-
|
207
|
-
it "allows multiple in_file declarations" do
|
208
|
-
stmts = 'in_file "x"; in_file(/y/); in_file "foo.rb"'
|
209
|
-
test_handler 'foo.rb', stmts, true, parser_type
|
210
|
-
test_handler 'xyzzy.rb', stmts, true, parser_type
|
211
|
-
test_handler 'x', stmts, true, parser_type
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
216
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
3
|
-
|
4
|
-
RSpec.describe YARD::Handlers::C::AliasHandler do
|
5
|
-
it "allows defining of aliases (rb_define_alias)" do
|
6
|
-
parse <<-eof
|
7
|
-
/* FOO */
|
8
|
-
VALUE foo(VALUE x) { int value = x; }
|
9
|
-
void Init_Foo() {
|
10
|
-
rb_cFoo = rb_define_class("Foo", rb_cObject);
|
11
|
-
rb_define_method(rb_cFoo, "foo", foo, 1);
|
12
|
-
rb_define_alias(rb_cFoo, "bar", "foo");
|
13
|
-
}
|
14
|
-
eof
|
15
|
-
|
16
|
-
expect(Registry.at('Foo#bar')).to be_is_alias
|
17
|
-
expect(Registry.at('Foo#bar').docstring).to eq 'FOO'
|
18
|
-
end
|
19
|
-
|
20
|
-
it "allows defining of aliases (rb_define_alias) of attributes" do
|
21
|
-
parse <<-eof
|
22
|
-
/* FOO */
|
23
|
-
VALUE foo(VALUE x) { int value = x; }
|
24
|
-
void Init_Foo() {
|
25
|
-
rb_cFoo = rb_define_class("Foo", rb_cObject);
|
26
|
-
rb_define_attr(rb_cFoo, "foo", 1, 0);
|
27
|
-
rb_define_alias(rb_cFoo, "foo?", "foo");
|
28
|
-
}
|
29
|
-
eof
|
30
|
-
|
31
|
-
expect(Registry.at('Foo#foo')).to be_reader
|
32
|
-
expect(Registry.at('Foo#foo?')).to be_is_alias
|
33
|
-
end
|
34
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
3
|
-
|
4
|
-
RSpec.describe YARD::Handlers::C::AttributeHandler do
|
5
|
-
def run(read, write, commented = nil)
|
6
|
-
parse <<-eof
|
7
|
-
/* FOO */
|
8
|
-
VALUE foo(VALUE x) { int value = x; }
|
9
|
-
void Init_Foo() {
|
10
|
-
rb_cFoo = rb_define_class("Foo", rb_cObject);
|
11
|
-
#{commented ? '/*' : ''}
|
12
|
-
rb_define_attr(rb_cFoo, "foo", #{read}, #{write});
|
13
|
-
#{commented ? '*/' : ''}
|
14
|
-
}
|
15
|
-
eof
|
16
|
-
end
|
17
|
-
|
18
|
-
it "handles readonly attribute (rb_define_attr)" do
|
19
|
-
run(1, 0)
|
20
|
-
expect(Registry.at('Foo#foo')).to be_reader
|
21
|
-
expect(Registry.at('Foo#foo=')).to be nil
|
22
|
-
end
|
23
|
-
|
24
|
-
it "handles writeonly attribute (rb_define_attr)" do
|
25
|
-
run(0, 1)
|
26
|
-
expect(Registry.at('Foo#foo')).to be nil
|
27
|
-
expect(Registry.at('Foo#foo=')).to be_writer
|
28
|
-
end
|
29
|
-
|
30
|
-
it "handles readwrite attribute (rb_define_attr)" do
|
31
|
-
run(1, 1)
|
32
|
-
expect(Registry.at('Foo#foo')).to be_reader
|
33
|
-
expect(Registry.at('Foo#foo=')).to be_writer
|
34
|
-
end
|
35
|
-
|
36
|
-
it "handles commented writeonly attribute (/* rb_define_attr */)" do
|
37
|
-
run(1, 1, true)
|
38
|
-
expect(Registry.at('Foo#foo')).to be_reader
|
39
|
-
expect(Registry.at('Foo#foo=')).to be_writer
|
40
|
-
end
|
41
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
3
|
-
|
4
|
-
RSpec.describe YARD::Handlers::C::ClassHandler do
|
5
|
-
it "registers classes" do
|
6
|
-
parse_init 'cFoo = rb_define_class("Foo", rb_cObject);'
|
7
|
-
expect(Registry.at('Foo').type).to eq :class
|
8
|
-
end
|
9
|
-
|
10
|
-
it "registers classes under namespaces" do
|
11
|
-
parse_init <<-EOF
|
12
|
-
cBar = rb_define_class("Bar", rb_cObject);
|
13
|
-
cFoo = rb_define_class_under( cBar, "Foo", rb_cBaz );
|
14
|
-
EOF
|
15
|
-
expect(Registry.at('Bar::Foo').type).to eq :class
|
16
|
-
expect(Registry.at('Bar::Foo').superclass.path).to eq 'Baz'
|
17
|
-
end
|
18
|
-
|
19
|
-
it "remembers symbol defined with class" do
|
20
|
-
parse_init(<<-eof)
|
21
|
-
cXYZ = rb_define_class("Foo", rb_cObject);
|
22
|
-
rb_define_method(cXYZ, "bar", bar, 0);
|
23
|
-
eof
|
24
|
-
expect(Registry.at('Foo').type).to eq :class
|
25
|
-
expect(Registry.at('Foo#bar')).not_to be nil
|
26
|
-
end
|
27
|
-
|
28
|
-
it "looks up superclass symbol name" do
|
29
|
-
parse_init(<<-eof)
|
30
|
-
cXYZ = rb_define_class("Foo", rb_cObject);
|
31
|
-
cBar = rb_define_class("Bar", cXYZ);
|
32
|
-
eof
|
33
|
-
expect(Registry.at('Bar').superclass).to eq Registry.at('Foo')
|
34
|
-
end
|
35
|
-
|
36
|
-
it "uses superclass symbol name as proxy if not found" do
|
37
|
-
parse_init(<<-eof)
|
38
|
-
// cXYZ = rb_define_class("Foo", rb_cObject);
|
39
|
-
cBar = rb_define_class("Bar", cXYZ);
|
40
|
-
eof
|
41
|
-
expect(Registry.at('Bar').superclass).to eq P('XYZ')
|
42
|
-
end
|
43
|
-
|
44
|
-
it "does not associate declaration comments as class docstring" do
|
45
|
-
parse_init(<<-eof)
|
46
|
-
/* Docstring! */
|
47
|
-
cFoo = rb_define_class("Foo", cObject);
|
48
|
-
eof
|
49
|
-
expect(Registry.at('Foo').docstring).to be_blank
|
50
|
-
end
|
51
|
-
|
52
|
-
it "associates a file with the declaration" do
|
53
|
-
parse_init(<<-eof)
|
54
|
-
cFoo = rb_define_class("Foo", cObject);
|
55
|
-
eof
|
56
|
-
expect(Registry.at('Foo').file).to eq '(stdin)'
|
57
|
-
expect(Registry.at('Foo').line).to eq 2
|
58
|
-
end
|
59
|
-
|
60
|
-
it "properly handles Proxy superclasses" do
|
61
|
-
parse_init <<-eof
|
62
|
-
mFoo = rb_define_module("Foo");
|
63
|
-
cBar = rb_define_class_under(mFoo, "Bar", rb_cBar);
|
64
|
-
eof
|
65
|
-
expect(Registry.at('Foo::Bar').type).to eq :class
|
66
|
-
expect(Registry.at('Foo::Bar').superclass).to eq P('Bar')
|
67
|
-
expect(Registry.at('Foo::Bar').superclass.type).to eq :class
|
68
|
-
end
|
69
|
-
|
70
|
-
it "resolves namespace variable names across multiple files" do
|
71
|
-
parse_multi_file_init(
|
72
|
-
'cBar = rb_define_class_under(cFoo, "Bar", rb_cObject);',
|
73
|
-
'cFoo = rb_define_class("Foo", rb_cObject);'
|
74
|
-
)
|
75
|
-
|
76
|
-
expect(Registry.at('Foo::Bar').type).to eq :class
|
77
|
-
end
|
78
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
3
|
-
|
4
|
-
RSpec.describe YARD::Handlers::C::ConstantHandler do
|
5
|
-
it "registers constants" do
|
6
|
-
parse_init <<-eof
|
7
|
-
mFoo = rb_define_module("Foo");
|
8
|
-
rb_define_const(mFoo, "FOO", ID2SYM(100));
|
9
|
-
rb_define_global_const("BAR", ID2SYM(100));
|
10
|
-
eof
|
11
|
-
expect(Registry.at('Foo::FOO').type).to eq :constant
|
12
|
-
expect(Registry.at('BAR').type).to eq :constant
|
13
|
-
end
|
14
|
-
|
15
|
-
it "looks for override comments" do
|
16
|
-
parse <<-eof
|
17
|
-
/* Document-const: FOO
|
18
|
-
* Document-const: Foo::BAR
|
19
|
-
* Foo bar!
|
20
|
-
*/
|
21
|
-
|
22
|
-
void Init_Foo() {
|
23
|
-
mFoo = rb_define_module("Foo");
|
24
|
-
rb_define_const(mFoo, "FOO", ID2SYM(100));
|
25
|
-
rb_define_const(mFoo, "BAR", ID2SYM(101));
|
26
|
-
}
|
27
|
-
eof
|
28
|
-
foo = Registry.at('Foo::FOO')
|
29
|
-
expect(foo.type).to eq :constant
|
30
|
-
expect(foo.docstring).to eq 'Foo bar!'
|
31
|
-
expect(foo.value).to eq 'ID2SYM(100)'
|
32
|
-
expect(foo.file).to eq '(stdin)'
|
33
|
-
expect(foo.line).to eq 8
|
34
|
-
bar = Registry.at('Foo::BAR')
|
35
|
-
expect(bar.type).to eq :constant
|
36
|
-
expect(bar.docstring).to eq 'Foo bar!'
|
37
|
-
expect(bar.file).to eq '(stdin)'
|
38
|
-
expect(bar.line).to eq 9
|
39
|
-
expect(bar.value).to eq 'ID2SYM(101)'
|
40
|
-
end
|
41
|
-
|
42
|
-
it "uses comment attached to declaration as fallback" do
|
43
|
-
parse_init <<-eof
|
44
|
-
mFoo = rb_define_module("Foo");
|
45
|
-
rb_define_const(mFoo, "FOO", ID2SYM(100)); // foobar!
|
46
|
-
eof
|
47
|
-
foo = Registry.at('Foo::FOO')
|
48
|
-
expect(foo.value).to eq 'ID2SYM(100)'
|
49
|
-
expect(foo.docstring).to eq 'foobar!'
|
50
|
-
end
|
51
|
-
|
52
|
-
it "allows the form VALUE: DOCSTRING to document value" do
|
53
|
-
parse_init <<-eof
|
54
|
-
mFoo = rb_define_module("Foo");
|
55
|
-
rb_define_const(mFoo, "FOO", ID2SYM(100)); // 100: foobar!
|
56
|
-
eof
|
57
|
-
foo = Registry.at('Foo::FOO')
|
58
|
-
expect(foo.value).to eq '100'
|
59
|
-
expect(foo.docstring).to eq 'foobar!'
|
60
|
-
end
|
61
|
-
|
62
|
-
it "allows escaping of backslashes in VALUE: DOCSTRING syntax" do
|
63
|
-
parse_init <<-eof
|
64
|
-
mFoo = rb_define_module("Foo");
|
65
|
-
rb_define_const(mFoo, "FOO", ID2SYM(100)); // 100\\:x\\:y: foobar:x!
|
66
|
-
eof
|
67
|
-
foo = Registry.at('Foo::FOO')
|
68
|
-
expect(foo.value).to eq '100:x:y'
|
69
|
-
expect(foo.docstring).to eq 'foobar:x!'
|
70
|
-
end
|
71
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
3
|
-
|
4
|
-
RSpec.describe YARD::Handlers::C::InitHandler do
|
5
|
-
it "adds documentation in Init_ClassName() to ClassName" do
|
6
|
-
parse(<<-eof)
|
7
|
-
// Bar!
|
8
|
-
void Init_A() {
|
9
|
-
rb_cA = rb_define_class("A", rb_cObject);
|
10
|
-
}
|
11
|
-
eof
|
12
|
-
expect(Registry.at('A').docstring).to eq 'Bar!'
|
13
|
-
end
|
14
|
-
|
15
|
-
it "does not add documentation if ClassName is not created in Init" do
|
16
|
-
parse(<<-eof)
|
17
|
-
// Bar!
|
18
|
-
void Init_A() {
|
19
|
-
}
|
20
|
-
eof
|
21
|
-
expect(Registry.at('A')).to be nil
|
22
|
-
end
|
23
|
-
|
24
|
-
it "does not overwrite override comment" do
|
25
|
-
parse(<<-eof)
|
26
|
-
/* Document-class: A
|
27
|
-
* Foo!
|
28
|
-
*/
|
29
|
-
|
30
|
-
// Bar!
|
31
|
-
static SWIGEXPORT void Init_A() {
|
32
|
-
rb_cA = rb_define_class("A", rb_cObject);
|
33
|
-
}
|
34
|
-
eof
|
35
|
-
expect(Registry.at('A').docstring).to eq 'Foo!'
|
36
|
-
end
|
37
|
-
|
38
|
-
it "checks non-Init methods for declarations too" do
|
39
|
-
parse(<<-eof)
|
40
|
-
void foo(int x, int y, char *name) {
|
41
|
-
rb_cB = rb_define_class("B", rb_cObject);
|
42
|
-
rb_define_method(rb_cB, "foo", foo_impl, 0);
|
43
|
-
}
|
44
|
-
eof
|
45
|
-
expect(Registry.at('B')).to be_a(CodeObjects::ClassObject)
|
46
|
-
expect(Registry.at('B#foo')).to be_a(CodeObjects::MethodObject)
|
47
|
-
end
|
48
|
-
end
|