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,2 +0,0 @@
1
- {I" Object:EF:
2
- class
@@ -1,145 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.join(File.dirname(__FILE__), "spec_helper")
3
-
4
- require 'stringio'
5
-
6
- RSpec.describe YARD::Serializers::FileSystemSerializer do
7
- before do
8
- allow(FileUtils).to receive(:mkdir_p)
9
- allow(File).to receive(:open)
10
- end
11
-
12
- describe "#basepath" do
13
- it "defaults the base path to the 'doc/'" do
14
- obj = Serializers::FileSystemSerializer.new
15
- expect(obj.basepath).to eq 'doc'
16
- end
17
- end
18
-
19
- describe "#extension" do
20
- it "defaults the file extension to .html" do
21
- obj = Serializers::FileSystemSerializer.new
22
- expect(obj.extension).to eq "html"
23
- end
24
- end
25
-
26
- describe "#serialized_path" do
27
- it "allows no extension to be used" do
28
- obj = Serializers::FileSystemSerializer.new :extension => nil
29
- yard = CodeObjects::ClassObject.new(nil, :FooBar)
30
- expect(obj.serialized_path(yard)).to eq 'FooBar'
31
- end
32
-
33
- it "serializes to top-level-namespace for root" do
34
- obj = Serializers::FileSystemSerializer.new :extension => nil
35
- expect(obj.serialized_path(Registry.root)).to eq "top-level-namespace"
36
- end
37
-
38
- it "returns serialized_path for a String" do
39
- s = Serializers::FileSystemSerializer.new(:basepath => 'foo', :extension => 'txt')
40
- expect(s.serialized_path('test.txt')).to eq 'test.txt'
41
- end
42
-
43
- it "removes special chars from path" do
44
- m = CodeObjects::MethodObject.new(nil, 'a')
45
- s = Serializers::FileSystemSerializer.new
46
-
47
- {:gsub! => 'gsub_21_i.html',
48
- :ask? => 'ask_3F_i.html',
49
- :=== => '_3D_3D_3D_i.html',
50
- :+ => '_2B_i.html',
51
- :- => '-_i.html',
52
- :[]= => '_5B_5D_3D_i.html',
53
- :<< => '_3C_3C_i.html',
54
- :>= => '_3E_3D_i.html',
55
- :` => '_60_i.html',
56
- :& => '_26_i.html',
57
- :* => '_2A_i.html',
58
- :| => '_7C_i.html',
59
- :/ => '_2F_i.html',
60
- :=~ => '_3D_7E_i.html'}.each do |meth, value|
61
- allow(m).to receive(:name).and_return(meth)
62
- expect(s.serialized_path(m)).to eq value
63
- end
64
- end
65
-
66
- it "handles ExtraFileObject's" do
67
- s = Serializers::FileSystemSerializer.new
68
- e = CodeObjects::ExtraFileObject.new('filename.txt', '')
69
- expect(s.serialized_path(e)).to eq 'file.filename.html'
70
- end
71
-
72
- it "differentiates instance and class methods from serialized path" do
73
- s = Serializers::FileSystemSerializer.new
74
- m1 = CodeObjects::MethodObject.new(nil, 'meth')
75
- m2 = CodeObjects::MethodObject.new(nil, 'meth', :class)
76
- expect(s.serialized_path(m1)).not_to eq s.serialized_path(m2)
77
- end
78
-
79
- it "serializes path from overload tag" do
80
- YARD.parse_string <<-'eof'
81
- class Foo
82
- # @overload bar
83
- def bar; end
84
- end
85
- eof
86
-
87
- serializer = Serializers::FileSystemSerializer.new
88
- object = Registry.at('Foo#bar').tag(:overload)
89
- expect(serializer.serialized_path(object)).to eq "Foo/bar_i.html"
90
- end
91
-
92
- it "maps matching case sensitive object names to different files on disk" do
93
- Registry.clear
94
- o1 = CodeObjects::ClassObject.new(:root, "AB")
95
- o2 = CodeObjects::ClassObject.new(:root, "Ab")
96
- s = Serializers::FileSystemSerializer.new
97
- expect([["AB_.html", "Ab.html"], ["AB.html", "Ab_.html"]]).to include(
98
- [s.serialized_path(o1), s.serialized_path(o2)]
99
- )
100
- end
101
-
102
- it "handles case sensitivity of nested paths for objects with matching names" do
103
- Registry.clear
104
- YARD.parse_string <<-eof
105
- class Abc; class D; end end
106
- class ABC; class D; end end
107
- eof
108
-
109
- s = Serializers::FileSystemSerializer.new
110
- expect(s.serialized_path(Registry.at('ABC::D'))).to eq "ABC/D.html"
111
- expect(s.serialized_path(Registry.at('Abc::D'))).to eq "Abc/D.html"
112
- end
113
- end
114
-
115
- describe "#serialize" do
116
- it "serializes to the correct path" do
117
- yard = CodeObjects::ClassObject.new(nil, :FooBar)
118
- meth = CodeObjects::MethodObject.new(yard, :baz, :class)
119
- meth2 = CodeObjects::MethodObject.new(yard, :baz)
120
-
121
- {'foo/FooBar/baz_c.txt' => meth,
122
- 'foo/FooBar/baz_i.txt' => meth2,
123
- 'foo/FooBar.txt' => yard}.each do |path, obj|
124
- io = StringIO.new
125
- expect(File).to receive(:open).with(path, 'wb').and_yield(io)
126
- expect(io).to receive(:write).with("data")
127
-
128
- s = Serializers::FileSystemSerializer.new(:basepath => 'foo', :extension => 'txt')
129
- s.serialize(obj, "data")
130
- end
131
- end
132
-
133
- it "guarantees the directory exists" do
134
- o1 = CodeObjects::ClassObject.new(nil, :Really)
135
- o2 = CodeObjects::ClassObject.new(o1, :Long)
136
- o3 = CodeObjects::ClassObject.new(o2, :PathName)
137
- obj = CodeObjects::MethodObject.new(o3, :foo)
138
-
139
- expect(FileUtils).to receive(:mkdir_p).once.with('doc/Really/Long/PathName')
140
-
141
- s = Serializers::FileSystemSerializer.new
142
- s.serialize(obj, "data")
143
- end
144
- end
145
- end
@@ -1,2 +0,0 @@
1
- # frozen_string_literal: true
2
- include YARD
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + "/spec_helper"
3
-
4
- instance_eval do
5
- class YARD::Serializers::YardocSerializer
6
- public :dump
7
- public :internal_dump
8
- end
9
- end
10
-
11
- RSpec.describe YARD::Serializers::YardocSerializer do
12
- before do
13
- @serializer = YARD::Serializers::YardocSerializer.new('.yardoc')
14
-
15
- Registry.clear
16
- @foo = CodeObjects::ClassObject.new(:root, :Foo)
17
- @bar = CodeObjects::MethodObject.new(@foo, :bar)
18
- end
19
-
20
- describe "#dump" do
21
- it "maintains object equality when loading a dumped object" do
22
- newfoo = @serializer.internal_dump(@foo)
23
- expect(newfoo).to equal(@foo)
24
- expect(newfoo).to eq @foo
25
- expect(@foo).to equal(newfoo)
26
- expect(@foo).to eq newfoo
27
- expect(newfoo.hash).to eq @foo.hash
28
- end
29
-
30
- it "maintains hash key equality when loading a dumped object" do
31
- newfoo = @serializer.internal_dump(@foo)
32
- expect(@foo => 1).to have_key(newfoo)
33
- expect(newfoo => 1).to have_key(@foo)
34
- end
35
- end
36
-
37
- describe "#serialize" do
38
- it "accepts a hash of codeobjects (and write to root)" do
39
- data = {:root => Registry.root}
40
- marshaldata = Marshal.dump(data)
41
- filemock = double(:file)
42
- expect(filemock).to receive(:write).with(marshaldata)
43
- expect(File).to receive(:open!).with('.yardoc/objects/root.dat', 'wb').and_yield(filemock)
44
- @serializer.serialize(data)
45
- end
46
- end
47
-
48
- describe "#lock_for_writing" do
49
- it "creates a lock file during writing and cleans up" do
50
- expect(File).to receive(:open!).with(@serializer.processing_path, 'w')
51
- expect(File).to receive(:exist?).with(@serializer.processing_path).exactly(2).times.and_return(true)
52
- expect(File).to receive(:unlink).with(@serializer.processing_path)
53
- @serializer.lock_for_writing do
54
- expect(@serializer.locked_for_writing?).to eq true
55
- end
56
- end
57
- end
58
-
59
- describe "#complete?" do
60
- it "returns false if complete file does not exist" do
61
- allow(File).to receive(:exist?).with(@serializer.complete_lock_path).and_return(false)
62
- allow(File).to receive(:exist?).with(@serializer.processing_path).and_return(false)
63
- expect(@serializer.complete?).to eq false
64
- end
65
-
66
- it "returns false if processing file exists" do
67
- allow(File).to receive(:exist?).with(@serializer.complete_lock_path).and_return(true)
68
- allow(File).to receive(:exist?).with(@serializer.processing_path).and_return(true)
69
- expect(@serializer.complete?).to eq false
70
- end
71
-
72
- it "returns true if complete file exists with no processing file" do
73
- allow(File).to receive(:exist?).with(@serializer.complete_lock_path).and_return(true)
74
- allow(File).to receive(:exist?).with(@serializer.processing_path).and_return(false)
75
- expect(@serializer.complete?).to eq true
76
- end
77
- end
78
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe YARD::Server::Adapter do
5
- after(:all) { Server::Adapter.shutdown }
6
-
7
- describe "#add_library" do
8
- it "adds a library" do
9
- lib = LibraryVersion.new('yard')
10
- a = Adapter.new({})
11
- expect(a.libraries).to be_empty
12
- a.add_library(lib)
13
- expect(a.libraries['yard']).to eq [lib]
14
- end
15
- end
16
-
17
- describe "#start" do
18
- it "does not implement #start" do
19
- expect { Adapter.new({}).start }.to raise_error(NotImplementedError)
20
- end
21
- end
22
-
23
- describe ".setup" do
24
- it "adds template paths and helpers" do
25
- Adapter.setup
26
- expect(Templates::Template.extra_includes).to include(DocServerHelper)
27
- expect(Templates::Engine.template_paths).to include(YARD::ROOT + '/yard/server/templates')
28
- end
29
- end
30
-
31
- describe ".shutdown" do
32
- it "cleans up template paths and helpers" do
33
- Adapter.setup
34
- Adapter.shutdown
35
- expect(Templates::Template.extra_includes).not_to include(DocServerHelper)
36
- expect(Templates::Engine.template_paths).not_to include(YARD::ROOT + '/yard/server/templates')
37
- end
38
- end
39
- end
@@ -1,91 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class MyProcCommand < Base
4
- def initialize(&block)
5
- self.class.send(:undef_method, :run)
6
- self.class.send(:define_method, :run, &block)
7
- end
8
- end
9
-
10
- class MyCacheCommand < Base
11
- def run; cache 'foo' end
12
- end
13
-
14
- RSpec.describe YARD::Server::Commands::Base do
15
- describe "#cache" do
16
- before do
17
- @command = MyCacheCommand.new(:adapter => mock_adapter, :caching => true)
18
- @command.request = mock_request(nil)
19
- end
20
-
21
- it "does not cache if caching == false" do
22
- expect(File).not_to receive(:open)
23
- @command.caching = false
24
- @command.run
25
- end
26
-
27
- it "requires document root to cache" do
28
- expect(File).not_to receive(:open)
29
- @command.adapter.document_root = nil
30
- @command.run
31
- end
32
-
33
- it "caches to path/to/file.html and create directories" do
34
- expect(FileUtils).to receive(:mkdir_p).with('/public/path/to')
35
- expect(File).to receive(:open).with('/public/path/to/file.html', anything)
36
- @command.request.path_info = '/path/to/file.html'
37
- @command.run
38
- end
39
- end
40
-
41
- describe "#redirect" do
42
- it "returns a valid redirection" do
43
- cmd = MyProcCommand.new { redirect '/foo' }
44
- expect(cmd.call(mock_request('/foo'))).to eq(
45
- [302, {"Content-Type" => "text/html", "Location" => "/foo"}, [""]]
46
- )
47
- end
48
- end
49
-
50
- describe "#call" do
51
- it "handles a NotFoundError and use message as body" do
52
- cmd = MyProcCommand.new { raise NotFoundError, "hello world" }
53
- s, _, b = *cmd.call(mock_request('/foo'))
54
- expect(s).to eq 404
55
- expect(b).to eq ["hello world"]
56
- end
57
-
58
- it "does not use message as body if not provided in NotFoundError" do
59
- cmd = MyProcCommand.new { raise NotFoundError }
60
- s, _, b = *cmd.call(mock_request('/foo'))
61
- expect(s).to eq 404
62
- expect(b).to eq ["Not found: /foo"]
63
- end
64
-
65
- it "handles 404 status code from #run" do
66
- cmd = MyProcCommand.new { self.status = 404 }
67
- s, _, b = *cmd.call(mock_request('/foo'))
68
- expect(s).to eq 404
69
- expect(b).to eq ["Not found: /foo"]
70
- end
71
-
72
- it "does not override body if status is 404 and body is defined" do
73
- cmd = MyProcCommand.new { self.body = "foo"; self.status = 404 }
74
- s, _, b = *cmd.call(mock_request('/bar'))
75
- expect(s).to eq 404
76
- expect(b).to eq ['foo']
77
- end
78
-
79
- it "handles body as Array" do
80
- cmd = MyProcCommand.new { self.body = ['a', 'b', 'c'] }
81
- _, _, b = *cmd.call(mock_request('/foo'))
82
- expect(b).to eq %w(a b c)
83
- end
84
-
85
- it "allows headers to be defined" do
86
- cmd = MyProcCommand.new { headers['Foo'] = 'BAR' }
87
- _, h, = *cmd.call(mock_request('/foo'))
88
- expect(h['Foo']).to eq 'BAR'
89
- end
90
- end
91
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'ostruct'
3
-
4
- RSpec.describe YARD::Server::Commands::LibraryCommand do
5
- before do
6
- allow(Templates::Engine).to receive(:render)
7
- allow(Templates::Engine).to receive(:generate)
8
- allow(YARD).to receive(:parse)
9
- allow(Registry).to receive(:load)
10
- allow(Registry).to receive(:save)
11
-
12
- @cmd = LibraryCommand.new(:adapter => mock_adapter)
13
- @request = mock_request("/foo", :xhr? => false)
14
- @library = OpenStruct.new(:source_path => '.')
15
- @cmd.library = @library
16
- allow(@cmd).to receive(:load_yardoc).and_return(nil)
17
- end
18
-
19
- def call
20
- expect { @cmd.call(@request) }.to raise_error(NotImplementedError)
21
- end
22
-
23
- describe "#call" do
24
- it "raises NotImplementedError" do
25
- call
26
- end
27
-
28
- it "sets :rdoc as the default markup in incremental mode" do
29
- @cmd.incremental = true
30
- call
31
- expect(@cmd.options[:markup]).to eq :rdoc
32
- end
33
-
34
- it "sets :rdoc as the default markup in regular mode" do
35
- call
36
- expect(@cmd.options[:markup]).to eq :rdoc
37
- end
38
- end
39
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + "/spec_helper"
3
-
4
- class MyDocServerSerializerRouter
5
- attr_accessor :request
6
- def docs_prefix; 'PREFIX' end
7
- def initialize; @request = mock_request end
8
- end
9
-
10
- class MockDocServerHelper
11
- include YARD::Templates::Helpers::BaseHelper
12
- include YARD::Templates::Helpers::HtmlHelper
13
- include YARD::Server::DocServerHelper
14
-
15
- attr_accessor :adapter
16
- attr_accessor :single_library
17
- attr_accessor :library
18
-
19
- def initialize
20
- @single_library = false
21
- @library = LibraryVersion.new('foo')
22
- @adapter = mock_adapter(:router => MyDocServerSerializerRouter.new)
23
- @serializer = YARD::Server::DocServerSerializer.new
24
- @object = YARD::Registry.root
25
- end
26
-
27
- def options; OpenStruct.new end
28
- end
29
-
30
- RSpec.describe YARD::Server::DocServerHelper do
31
- before do
32
- @helper = MockDocServerHelper.new
33
- end
34
-
35
- describe "#url_for" do
36
- it "does not link to /library/ if single_library = true" do
37
- @helper.single_library = true
38
- expect(@helper.url_for(Registry.root)).to eq "/PREFIX/toplevel"
39
- end
40
-
41
- it "returns /PREFIX/foo/version if foo has a version" do
42
- @helper.library = LibraryVersion.new('foo', 'bar')
43
- @helper.adapter.router.request.version_supplied = true
44
- expect(@helper.url_for(P('A'))).to eq '/PREFIX/foo/bar/A'
45
- end
46
-
47
- it "uses script name prefix if set" do
48
- @helper.adapter.router.request.script_name = '/mount/point'
49
- @helper.library = LibraryVersion.new('foo', 'bar')
50
- @helper.adapter.router.request.version_supplied = true
51
- expect(@helper.url_for(P('A'))).to eq '/mount/point/PREFIX/foo/bar/A'
52
- end
53
- end
54
-
55
- describe "#url_for_file" do
56
- it "properly links file objects using file/ prefix" do
57
- file = CodeObjects::ExtraFileObject.new('a/b/FooBar.md', '')
58
- expect(@helper.url_for_file(file)).to eq '/PREFIX/foo/file/a/b/FooBar.md'
59
- end
60
-
61
- it "properly links anchor portion" do
62
- file = CodeObjects::ExtraFileObject.new('a/b/FooBar.md', '')
63
- expect(@helper.url_for_file(file, 'anchor')).to eq '/PREFIX/foo/file/a/b/FooBar.md#anchor'
64
- end
65
-
66
- it "uses script name prefix if set" do
67
- @helper.adapter.router.request.script_name = '/mount/point'
68
- file = CodeObjects::ExtraFileObject.new('a/b/FooBar.md', '')
69
- expect(@helper.url_for_file(file)).to eq '/mount/point/PREFIX/foo/file/a/b/FooBar.md'
70
- end
71
- end
72
- end