yard 0.9.24 → 0.9.25

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.

Files changed (223) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +37 -24
  3. data/CHANGELOG.md +18 -3
  4. data/README.md +96 -101
  5. data/Rakefile +2 -0
  6. data/lib/yard/cli/diff.rb +4 -1
  7. data/lib/yard/cli/server.rb +22 -13
  8. data/lib/yard/code_objects/proxy.rb +2 -1
  9. data/lib/yard/globals.rb +1 -1
  10. data/lib/yard/handlers/c/base.rb +164 -129
  11. data/lib/yard/parser/ruby/ruby_parser.rb +6 -4
  12. data/lib/yard/registry_store.rb +1 -1
  13. data/lib/yard/templates/helpers/html_helper.rb +10 -3
  14. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
  15. data/lib/yard/version.rb +1 -1
  16. data/tasks/update_error_map.rake +53 -0
  17. data/yard.gemspec +1 -1
  18. metadata +3 -207
  19. data/spec/cli/command_parser_spec.rb +0 -43
  20. data/spec/cli/command_spec.rb +0 -36
  21. data/spec/cli/config_spec.rb +0 -148
  22. data/spec/cli/diff_spec.rb +0 -254
  23. data/spec/cli/display_spec.rb +0 -30
  24. data/spec/cli/gems_spec.rb +0 -81
  25. data/spec/cli/graph_spec.rb +0 -18
  26. data/spec/cli/help_spec.rb +0 -22
  27. data/spec/cli/i18n_spec.rb +0 -107
  28. data/spec/cli/list_spec.rb +0 -8
  29. data/spec/cli/markup_types_spec.rb +0 -22
  30. data/spec/cli/server_spec.rb +0 -324
  31. data/spec/cli/stats_spec.rb +0 -96
  32. data/spec/cli/yard_on_yard_spec.rb +0 -38
  33. data/spec/cli/yardoc_spec.rb +0 -896
  34. data/spec/cli/yri_spec.rb +0 -101
  35. data/spec/code_objects/base_spec.rb +0 -485
  36. data/spec/code_objects/class_object_spec.rb +0 -226
  37. data/spec/code_objects/code_object_list_spec.rb +0 -36
  38. data/spec/code_objects/constants_spec.rb +0 -116
  39. data/spec/code_objects/extra_file_object_spec.rb +0 -161
  40. data/spec/code_objects/macro_object_spec.rb +0 -150
  41. data/spec/code_objects/method_object_spec.rb +0 -184
  42. data/spec/code_objects/module_object_spec.rb +0 -142
  43. data/spec/code_objects/namespace_mapper_spec.rb +0 -32
  44. data/spec/code_objects/namespace_object_spec.rb +0 -171
  45. data/spec/code_objects/proxy_spec.rb +0 -147
  46. data/spec/code_objects/spec_helper.rb +0 -3
  47. data/spec/config_spec.rb +0 -171
  48. data/spec/core_ext/array_spec.rb +0 -13
  49. data/spec/core_ext/file_spec.rb +0 -72
  50. data/spec/core_ext/hash_spec.rb +0 -14
  51. data/spec/core_ext/insertion_spec.rb +0 -37
  52. data/spec/core_ext/module_spec.rb +0 -9
  53. data/spec/core_ext/string_spec.rb +0 -42
  54. data/spec/core_ext/symbol_hash_spec.rb +0 -89
  55. data/spec/docstring_parser_spec.rb +0 -280
  56. data/spec/docstring_spec.rb +0 -373
  57. data/spec/handlers/alias_handler_spec.rb +0 -82
  58. data/spec/handlers/attribute_handler_spec.rb +0 -96
  59. data/spec/handlers/base_spec.rb +0 -216
  60. data/spec/handlers/c/alias_handler_spec.rb +0 -34
  61. data/spec/handlers/c/attribute_handler_spec.rb +0 -41
  62. data/spec/handlers/c/class_handler_spec.rb +0 -78
  63. data/spec/handlers/c/constant_handler_spec.rb +0 -71
  64. data/spec/handlers/c/init_handler_spec.rb +0 -48
  65. data/spec/handlers/c/method_handler_spec.rb +0 -327
  66. data/spec/handlers/c/mixin_handler_spec.rb +0 -44
  67. data/spec/handlers/c/module_handler_spec.rb +0 -71
  68. data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
  69. data/spec/handlers/c/path_handler_spec.rb +0 -36
  70. data/spec/handlers/c/spec_helper.rb +0 -23
  71. data/spec/handlers/c/struct_handler_spec.rb +0 -16
  72. data/spec/handlers/class_condition_handler_spec.rb +0 -87
  73. data/spec/handlers/class_handler_spec.rb +0 -247
  74. data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
  75. data/spec/handlers/class_variable_handler_spec.rb +0 -12
  76. data/spec/handlers/constant_handler_spec.rb +0 -112
  77. data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
  78. data/spec/handlers/dsl_handler_spec.rb +0 -226
  79. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
  80. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
  81. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
  82. data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
  83. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
  84. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
  85. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
  86. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
  87. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
  88. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
  89. data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
  90. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
  91. data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
  92. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
  93. data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
  94. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
  95. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
  96. data/spec/handlers/exception_handler_spec.rb +0 -49
  97. data/spec/handlers/extend_handler_spec.rb +0 -28
  98. data/spec/handlers/legacy_base_spec.rb +0 -128
  99. data/spec/handlers/method_condition_handler_spec.rb +0 -15
  100. data/spec/handlers/method_handler_spec.rb +0 -214
  101. data/spec/handlers/mixin_handler_spec.rb +0 -60
  102. data/spec/handlers/module_function_handler_spec.rb +0 -106
  103. data/spec/handlers/module_handler_spec.rb +0 -35
  104. data/spec/handlers/private_class_method_handler_spec.rb +0 -11
  105. data/spec/handlers/private_constant_handler_spec.rb +0 -25
  106. data/spec/handlers/processor_spec.rb +0 -35
  107. data/spec/handlers/public_class_method_handler_spec.rb +0 -11
  108. data/spec/handlers/ruby/base_spec.rb +0 -95
  109. data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
  110. data/spec/handlers/spec_helper.rb +0 -33
  111. data/spec/handlers/visibility_handler_spec.rb +0 -44
  112. data/spec/handlers/yield_handler_spec.rb +0 -52
  113. data/spec/i18n/locale_spec.rb +0 -81
  114. data/spec/i18n/message_spec.rb +0 -52
  115. data/spec/i18n/messages_spec.rb +0 -67
  116. data/spec/i18n/pot_generator_spec.rb +0 -295
  117. data/spec/i18n/text_spec.rb +0 -184
  118. data/spec/logging_spec.rb +0 -44
  119. data/spec/options_spec.rb +0 -171
  120. data/spec/parser/base_spec.rb +0 -24
  121. data/spec/parser/c_parser_spec.rb +0 -236
  122. data/spec/parser/examples/array.c.txt +0 -6267
  123. data/spec/parser/examples/example1.rb.txt +0 -8
  124. data/spec/parser/examples/extrafile.c.txt +0 -8
  125. data/spec/parser/examples/file.c.txt +0 -28
  126. data/spec/parser/examples/multifile.c.txt +0 -22
  127. data/spec/parser/examples/namespace.cpp.txt +0 -68
  128. data/spec/parser/examples/override.c.txt +0 -424
  129. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
  130. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
  131. data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
  132. data/spec/parser/ruby/ast_node_spec.rb +0 -33
  133. data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
  134. data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
  135. data/spec/parser/ruby/ruby_parser_spec.rb +0 -520
  136. data/spec/parser/ruby/token_resolver_spec.rb +0 -165
  137. data/spec/parser/source_parser_spec.rb +0 -727
  138. data/spec/parser/tag_parsing_spec.rb +0 -17
  139. data/spec/rake/yardoc_task_spec.rb +0 -118
  140. data/spec/registry_resolver_spec.rb +0 -15
  141. data/spec/registry_spec.rb +0 -463
  142. data/spec/registry_store_spec.rb +0 -327
  143. data/spec/rubygems/doc_manager_spec.rb +0 -112
  144. data/spec/serializers/data/serialized_yardoc/checksums +0 -1
  145. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  146. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  147. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  148. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  149. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
  150. data/spec/serializers/file_system_serializer_spec.rb +0 -145
  151. data/spec/serializers/spec_helper.rb +0 -2
  152. data/spec/serializers/yardoc_serializer_spec.rb +0 -90
  153. data/spec/server/adapter_spec.rb +0 -39
  154. data/spec/server/commands/base_spec.rb +0 -91
  155. data/spec/server/commands/library_command_spec.rb +0 -39
  156. data/spec/server/doc_server_helper_spec.rb +0 -72
  157. data/spec/server/doc_server_serializer_spec.rb +0 -60
  158. data/spec/server/rack_adapter_spec.rb +0 -21
  159. data/spec/server/router_spec.rb +0 -123
  160. data/spec/server/spec_helper.rb +0 -22
  161. data/spec/server/static_caching_spec.rb +0 -47
  162. data/spec/server/webrick_servlet_spec.rb +0 -20
  163. data/spec/server_spec.rb +0 -19
  164. data/spec/spec_helper.rb +0 -212
  165. data/spec/tags/default_factory_spec.rb +0 -168
  166. data/spec/tags/default_tag_spec.rb +0 -11
  167. data/spec/tags/directives_spec.rb +0 -463
  168. data/spec/tags/library_spec.rb +0 -48
  169. data/spec/tags/overload_tag_spec.rb +0 -53
  170. data/spec/tags/ref_tag_list_spec.rb +0 -53
  171. data/spec/tags/types_explainer_spec.rb +0 -203
  172. data/spec/templates/class_spec.rb +0 -45
  173. data/spec/templates/constant_spec.rb +0 -41
  174. data/spec/templates/engine_spec.rb +0 -131
  175. data/spec/templates/examples/class001.html +0 -308
  176. data/spec/templates/examples/class001.txt +0 -36
  177. data/spec/templates/examples/class002.html +0 -39
  178. data/spec/templates/examples/constant001.txt +0 -25
  179. data/spec/templates/examples/constant002.txt +0 -7
  180. data/spec/templates/examples/constant003.txt +0 -11
  181. data/spec/templates/examples/method001.html +0 -137
  182. data/spec/templates/examples/method001.txt +0 -35
  183. data/spec/templates/examples/method002.html +0 -91
  184. data/spec/templates/examples/method002.txt +0 -20
  185. data/spec/templates/examples/method003.html +0 -165
  186. data/spec/templates/examples/method003.txt +0 -45
  187. data/spec/templates/examples/method004.html +0 -48
  188. data/spec/templates/examples/method004.txt +0 -10
  189. data/spec/templates/examples/method005.html +0 -105
  190. data/spec/templates/examples/method005.txt +0 -33
  191. data/spec/templates/examples/method006.html +0 -108
  192. data/spec/templates/examples/method006.txt +0 -20
  193. data/spec/templates/examples/module001.dot +0 -33
  194. data/spec/templates/examples/module001.html +0 -833
  195. data/spec/templates/examples/module001.txt +0 -33
  196. data/spec/templates/examples/module002.html +0 -341
  197. data/spec/templates/examples/module003.html +0 -202
  198. data/spec/templates/examples/module004.html +0 -394
  199. data/spec/templates/examples/module005.html +0 -82
  200. data/spec/templates/examples/tag001.txt +0 -82
  201. data/spec/templates/helpers/base_helper_spec.rb +0 -171
  202. data/spec/templates/helpers/html_helper_spec.rb +0 -666
  203. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
  204. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
  205. data/spec/templates/helpers/markup_helper_spec.rb +0 -136
  206. data/spec/templates/helpers/method_helper_spec.rb +0 -107
  207. data/spec/templates/helpers/module_helper_spec.rb +0 -35
  208. data/spec/templates/helpers/shared_signature_examples.rb +0 -126
  209. data/spec/templates/helpers/text_helper_spec.rb +0 -65
  210. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
  211. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -50
  212. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -48
  213. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
  214. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -64
  215. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -64
  216. data/spec/templates/method_spec.rb +0 -118
  217. data/spec/templates/module_spec.rb +0 -203
  218. data/spec/templates/onefile_spec.rb +0 -66
  219. data/spec/templates/section_spec.rb +0 -144
  220. data/spec/templates/spec_helper.rb +0 -76
  221. data/spec/templates/tag_spec.rb +0 -52
  222. data/spec/templates/template_spec.rb +0 -410
  223. data/spec/verifier_spec.rb +0 -106
@@ -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
@@ -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