yard 0.9.21 → 0.9.26

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