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.

Files changed (257) 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 +30 -0
  8. data/.github/workflows/gem.yml +19 -0
  9. data/.gitignore +0 -0
  10. data/.rspec +0 -0
  11. data/.rubocop.yml +37 -24
  12. data/.yardopts +0 -0
  13. data/.yardopts_guide +0 -0
  14. data/.yardopts_i18n +0 -0
  15. data/CHANGELOG.md +50 -4
  16. data/CONTRIBUTING.md +2 -2
  17. data/Gemfile +5 -3
  18. data/README.md +97 -102
  19. data/Rakefile +2 -3
  20. data/lib/yard/cli/diff.rb +4 -1
  21. data/lib/yard/cli/server.rb +22 -13
  22. data/lib/yard/cli/stats.rb +2 -0
  23. data/lib/yard/cli/yardoc.rb +2 -1
  24. data/lib/yard/code_objects/method_object.rb +1 -1
  25. data/lib/yard/code_objects/namespace_mapper.rb +30 -3
  26. data/lib/yard/code_objects/proxy.rb +2 -1
  27. data/lib/yard/globals.rb +1 -1
  28. data/lib/yard/handlers/c/base.rb +35 -0
  29. data/lib/yard/handlers/ruby/method_handler.rb +1 -1
  30. data/lib/yard/handlers/ruby/mixin_handler.rb +7 -2
  31. data/lib/yard/handlers/ruby/module_function_handler.rb +15 -3
  32. data/lib/yard/parser/ruby/ast_node.rb +2 -2
  33. data/lib/yard/parser/ruby/ruby_parser.rb +7 -5
  34. data/lib/yard/parser/ruby/token_resolver.rb +3 -1
  35. data/lib/yard/parser/source_parser.rb +1 -1
  36. data/lib/yard/registry_resolver.rb +10 -24
  37. data/lib/yard/registry_store.rb +1 -1
  38. data/lib/yard/serializers/yardoc_serializer.rb +1 -1
  39. data/lib/yard/server/commands/base.rb +2 -2
  40. data/lib/yard/server/commands/library_command.rb +1 -1
  41. data/lib/yard/tags/directives.rb +10 -1
  42. data/lib/yard/templates/helpers/html_helper.rb +15 -5
  43. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
  44. data/lib/yard/templates/helpers/markup_helper.rb +2 -1
  45. data/lib/yard/templates/section.rb +1 -3
  46. data/lib/yard/version.rb +1 -1
  47. data/lib/yard.rb +3 -0
  48. data/samus.json +15 -46
  49. data/tasks/prepare_tag.rake +45 -0
  50. data/tasks/update_error_map.rake +53 -0
  51. data/templates/default/fulldoc/html/css/style.css +1 -0
  52. data/yard.gemspec +3 -2
  53. metadata +23 -207
  54. data/.travis.yml +0 -52
  55. data/spec/cli/command_parser_spec.rb +0 -43
  56. data/spec/cli/command_spec.rb +0 -36
  57. data/spec/cli/config_spec.rb +0 -148
  58. data/spec/cli/diff_spec.rb +0 -254
  59. data/spec/cli/display_spec.rb +0 -30
  60. data/spec/cli/gems_spec.rb +0 -81
  61. data/spec/cli/graph_spec.rb +0 -18
  62. data/spec/cli/help_spec.rb +0 -22
  63. data/spec/cli/i18n_spec.rb +0 -107
  64. data/spec/cli/list_spec.rb +0 -8
  65. data/spec/cli/markup_types_spec.rb +0 -22
  66. data/spec/cli/server_spec.rb +0 -324
  67. data/spec/cli/stats_spec.rb +0 -96
  68. data/spec/cli/yard_on_yard_spec.rb +0 -38
  69. data/spec/cli/yardoc_spec.rb +0 -896
  70. data/spec/cli/yri_spec.rb +0 -101
  71. data/spec/code_objects/base_spec.rb +0 -485
  72. data/spec/code_objects/class_object_spec.rb +0 -226
  73. data/spec/code_objects/code_object_list_spec.rb +0 -36
  74. data/spec/code_objects/constants_spec.rb +0 -116
  75. data/spec/code_objects/extra_file_object_spec.rb +0 -161
  76. data/spec/code_objects/macro_object_spec.rb +0 -150
  77. data/spec/code_objects/method_object_spec.rb +0 -184
  78. data/spec/code_objects/module_object_spec.rb +0 -142
  79. data/spec/code_objects/namespace_object_spec.rb +0 -171
  80. data/spec/code_objects/proxy_spec.rb +0 -147
  81. data/spec/code_objects/spec_helper.rb +0 -3
  82. data/spec/config_spec.rb +0 -171
  83. data/spec/core_ext/array_spec.rb +0 -13
  84. data/spec/core_ext/file_spec.rb +0 -72
  85. data/spec/core_ext/hash_spec.rb +0 -14
  86. data/spec/core_ext/insertion_spec.rb +0 -37
  87. data/spec/core_ext/module_spec.rb +0 -9
  88. data/spec/core_ext/string_spec.rb +0 -42
  89. data/spec/core_ext/symbol_hash_spec.rb +0 -89
  90. data/spec/docstring_parser_spec.rb +0 -280
  91. data/spec/docstring_spec.rb +0 -373
  92. data/spec/handlers/alias_handler_spec.rb +0 -82
  93. data/spec/handlers/attribute_handler_spec.rb +0 -96
  94. data/spec/handlers/base_spec.rb +0 -216
  95. data/spec/handlers/c/alias_handler_spec.rb +0 -34
  96. data/spec/handlers/c/attribute_handler_spec.rb +0 -41
  97. data/spec/handlers/c/class_handler_spec.rb +0 -78
  98. data/spec/handlers/c/constant_handler_spec.rb +0 -71
  99. data/spec/handlers/c/init_handler_spec.rb +0 -48
  100. data/spec/handlers/c/method_handler_spec.rb +0 -327
  101. data/spec/handlers/c/mixin_handler_spec.rb +0 -44
  102. data/spec/handlers/c/module_handler_spec.rb +0 -71
  103. data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
  104. data/spec/handlers/c/path_handler_spec.rb +0 -36
  105. data/spec/handlers/c/spec_helper.rb +0 -23
  106. data/spec/handlers/c/struct_handler_spec.rb +0 -16
  107. data/spec/handlers/class_condition_handler_spec.rb +0 -87
  108. data/spec/handlers/class_handler_spec.rb +0 -247
  109. data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
  110. data/spec/handlers/class_variable_handler_spec.rb +0 -12
  111. data/spec/handlers/constant_handler_spec.rb +0 -112
  112. data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
  113. data/spec/handlers/dsl_handler_spec.rb +0 -226
  114. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
  115. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
  116. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
  117. data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
  118. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
  119. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
  120. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
  121. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
  122. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
  123. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
  124. data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
  125. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
  126. data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
  127. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
  128. data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
  129. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
  130. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
  131. data/spec/handlers/exception_handler_spec.rb +0 -49
  132. data/spec/handlers/extend_handler_spec.rb +0 -28
  133. data/spec/handlers/legacy_base_spec.rb +0 -128
  134. data/spec/handlers/method_condition_handler_spec.rb +0 -15
  135. data/spec/handlers/method_handler_spec.rb +0 -214
  136. data/spec/handlers/mixin_handler_spec.rb +0 -60
  137. data/spec/handlers/module_function_handler_spec.rb +0 -106
  138. data/spec/handlers/module_handler_spec.rb +0 -35
  139. data/spec/handlers/private_class_method_handler_spec.rb +0 -11
  140. data/spec/handlers/private_constant_handler_spec.rb +0 -25
  141. data/spec/handlers/processor_spec.rb +0 -35
  142. data/spec/handlers/public_class_method_handler_spec.rb +0 -11
  143. data/spec/handlers/ruby/base_spec.rb +0 -95
  144. data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
  145. data/spec/handlers/spec_helper.rb +0 -33
  146. data/spec/handlers/visibility_handler_spec.rb +0 -44
  147. data/spec/handlers/yield_handler_spec.rb +0 -52
  148. data/spec/i18n/locale_spec.rb +0 -81
  149. data/spec/i18n/message_spec.rb +0 -52
  150. data/spec/i18n/messages_spec.rb +0 -67
  151. data/spec/i18n/pot_generator_spec.rb +0 -295
  152. data/spec/i18n/text_spec.rb +0 -184
  153. data/spec/logging_spec.rb +0 -44
  154. data/spec/options_spec.rb +0 -171
  155. data/spec/parser/base_spec.rb +0 -24
  156. data/spec/parser/c_parser_spec.rb +0 -236
  157. data/spec/parser/examples/array.c.txt +0 -6267
  158. data/spec/parser/examples/example1.rb.txt +0 -8
  159. data/spec/parser/examples/extrafile.c.txt +0 -8
  160. data/spec/parser/examples/file.c.txt +0 -28
  161. data/spec/parser/examples/multifile.c.txt +0 -22
  162. data/spec/parser/examples/namespace.cpp.txt +0 -68
  163. data/spec/parser/examples/override.c.txt +0 -424
  164. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
  165. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
  166. data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
  167. data/spec/parser/ruby/ast_node_spec.rb +0 -33
  168. data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
  169. data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
  170. data/spec/parser/ruby/ruby_parser_spec.rb +0 -508
  171. data/spec/parser/ruby/token_resolver_spec.rb +0 -165
  172. data/spec/parser/source_parser_spec.rb +0 -727
  173. data/spec/parser/tag_parsing_spec.rb +0 -17
  174. data/spec/rake/yardoc_task_spec.rb +0 -118
  175. data/spec/registry_spec.rb +0 -463
  176. data/spec/registry_store_spec.rb +0 -327
  177. data/spec/rubygems/doc_manager_spec.rb +0 -112
  178. data/spec/serializers/data/serialized_yardoc/checksums +0 -1
  179. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  180. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  181. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  182. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  183. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
  184. data/spec/serializers/file_system_serializer_spec.rb +0 -145
  185. data/spec/serializers/spec_helper.rb +0 -2
  186. data/spec/serializers/yardoc_serializer_spec.rb +0 -78
  187. data/spec/server/adapter_spec.rb +0 -39
  188. data/spec/server/commands/base_spec.rb +0 -91
  189. data/spec/server/commands/library_command_spec.rb +0 -39
  190. data/spec/server/doc_server_helper_spec.rb +0 -72
  191. data/spec/server/doc_server_serializer_spec.rb +0 -60
  192. data/spec/server/rack_adapter_spec.rb +0 -21
  193. data/spec/server/router_spec.rb +0 -123
  194. data/spec/server/spec_helper.rb +0 -22
  195. data/spec/server/static_caching_spec.rb +0 -47
  196. data/spec/server/webrick_servlet_spec.rb +0 -20
  197. data/spec/server_spec.rb +0 -19
  198. data/spec/spec_helper.rb +0 -212
  199. data/spec/tags/default_factory_spec.rb +0 -168
  200. data/spec/tags/default_tag_spec.rb +0 -11
  201. data/spec/tags/directives_spec.rb +0 -463
  202. data/spec/tags/library_spec.rb +0 -48
  203. data/spec/tags/overload_tag_spec.rb +0 -53
  204. data/spec/tags/ref_tag_list_spec.rb +0 -53
  205. data/spec/tags/types_explainer_spec.rb +0 -203
  206. data/spec/templates/class_spec.rb +0 -45
  207. data/spec/templates/constant_spec.rb +0 -41
  208. data/spec/templates/engine_spec.rb +0 -131
  209. data/spec/templates/examples/class001.html +0 -308
  210. data/spec/templates/examples/class001.txt +0 -36
  211. data/spec/templates/examples/class002.html +0 -39
  212. data/spec/templates/examples/constant001.txt +0 -25
  213. data/spec/templates/examples/constant002.txt +0 -7
  214. data/spec/templates/examples/constant003.txt +0 -11
  215. data/spec/templates/examples/method001.html +0 -137
  216. data/spec/templates/examples/method001.txt +0 -35
  217. data/spec/templates/examples/method002.html +0 -91
  218. data/spec/templates/examples/method002.txt +0 -20
  219. data/spec/templates/examples/method003.html +0 -165
  220. data/spec/templates/examples/method003.txt +0 -45
  221. data/spec/templates/examples/method004.html +0 -48
  222. data/spec/templates/examples/method004.txt +0 -10
  223. data/spec/templates/examples/method005.html +0 -105
  224. data/spec/templates/examples/method005.txt +0 -33
  225. data/spec/templates/examples/method006.html +0 -108
  226. data/spec/templates/examples/method006.txt +0 -20
  227. data/spec/templates/examples/module001.dot +0 -33
  228. data/spec/templates/examples/module001.html +0 -833
  229. data/spec/templates/examples/module001.txt +0 -33
  230. data/spec/templates/examples/module002.html +0 -341
  231. data/spec/templates/examples/module003.html +0 -202
  232. data/spec/templates/examples/module004.html +0 -394
  233. data/spec/templates/examples/module005.html +0 -82
  234. data/spec/templates/examples/tag001.txt +0 -82
  235. data/spec/templates/helpers/base_helper_spec.rb +0 -171
  236. data/spec/templates/helpers/html_helper_spec.rb +0 -687
  237. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
  238. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
  239. data/spec/templates/helpers/markup_helper_spec.rb +0 -136
  240. data/spec/templates/helpers/method_helper_spec.rb +0 -107
  241. data/spec/templates/helpers/module_helper_spec.rb +0 -35
  242. data/spec/templates/helpers/shared_signature_examples.rb +0 -126
  243. data/spec/templates/helpers/text_helper_spec.rb +0 -65
  244. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
  245. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -46
  246. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -59
  247. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
  248. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -59
  249. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -48
  250. data/spec/templates/method_spec.rb +0 -118
  251. data/spec/templates/module_spec.rb +0 -203
  252. data/spec/templates/onefile_spec.rb +0 -66
  253. data/spec/templates/section_spec.rb +0 -144
  254. data/spec/templates/spec_helper.rb +0 -76
  255. data/spec/templates/tag_spec.rb +0 -52
  256. data/spec/templates/template_spec.rb +0 -410
  257. data/spec/verifier_spec.rb +0 -106
@@ -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
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe YARD::Server::DocServerSerializer do
5
- describe "#serialized_path" do
6
- before do
7
- Registry.clear
8
- @serializer = Server::DocServerSerializer.new
9
- end
10
-
11
- after(:all) { Server::Adapter.shutdown }
12
-
13
- it "returns '/PREFIX/library/toplevel' for root" do
14
- expect(@serializer.serialized_path(Registry.root)).to eq "toplevel"
15
- end
16
-
17
- it "returns /PREFIX/library/Object for Object in a library" do
18
- expect(@serializer.serialized_path(P('A::B::C'))).to eq 'A/B/C'
19
- end
20
-
21
- it "links to instance method as Class:method" do
22
- obj = CodeObjects::MethodObject.new(:root, :method)
23
- expect(@serializer.serialized_path(obj)).to eq 'toplevel:method'
24
- end
25
-
26
- it "links to class method as Class.method" do
27
- obj = CodeObjects::MethodObject.new(:root, :method, :class)
28
- expect(@serializer.serialized_path(obj)).to eq 'toplevel.method'
29
- end
30
-
31
- it "links to anchor for constant" do
32
- obj = CodeObjects::ConstantObject.new(:root, :FOO)
33
- expect(@serializer.serialized_path(obj)).to eq 'toplevel#FOO-constant'
34
- end
35
-
36
- it "links to anchor for class variable" do
37
- obj = CodeObjects::ClassVariableObject.new(:root, :@@foo)
38
- expect(@serializer.serialized_path(obj)).to eq 'toplevel#@@foo-classvariable'
39
- end
40
-
41
- it "links files using file/ prefix" do
42
- file = CodeObjects::ExtraFileObject.new('a/b/FooBar.md', '')
43
- expect(@serializer.serialized_path(file)).to eq 'file/FooBar'
44
- end
45
-
46
- it "escapes special characters" do
47
- obj = CodeObjects::MethodObject.new(:root, :method?)
48
- expect(@serializer.serialized_path(obj)).to eq 'toplevel:method%3F'
49
- end
50
-
51
- it "handles unicode data" do
52
- file = CodeObjects::ExtraFileObject.new("test\u0160", '')
53
- if file.name.encoding == Encoding.find("Windows-1252")
54
- expect(@serializer.serialized_path(file)).to eq 'file/test_8A'
55
- else
56
- expect(@serializer.serialized_path(file)).to eq 'file/test_C5A0'
57
- end
58
- end if defined?(::Encoding)
59
- end
60
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + "/spec_helper"
3
-
4
- RSpec.describe "YARD::Server::RackMiddleware" do
5
- before do
6
- begin; require 'rack'; rescue LoadError; pending "rack required for these tests" end
7
- @superapp = double(:superapp)
8
- @app = YARD::Server::RackMiddleware.new(@superapp, :libraries => {'foo' => [LibraryVersion.new('foo', nil)]})
9
- end
10
-
11
- after(:all) { YARD::Server::Adapter.shutdown }
12
-
13
- it "handles requests" do
14
- expect(@app.call(Rack::MockRequest.env_for('/'))[0]).to eq 200
15
- end
16
-
17
- it "passes up to the next middleware on 404" do
18
- expect(@superapp).to receive(:call).and_return([200, {}, ['OK']])
19
- expect(@app.call(Rack::MockRequest.env_for('/INVALID'))).to eq [200, {}, ['OK']]
20
- end
21
- end
@@ -1,123 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- class MyRouterSpecRouter < Router
5
- def docs_prefix; 'mydocs/foo' end
6
- def list_prefix; 'mylist/foo' end
7
- def search_prefix; 'mysearch/foo' end
8
-
9
- def check_static_cache; nil end
10
- end
11
-
12
- RSpec.describe YARD::Server::Router do
13
- before do
14
- @adapter = mock_adapter
15
- @projects = @adapter.libraries['project']
16
- @request = mock_request
17
- end
18
-
19
- describe "#parse_library_from_path" do
20
- def parse(*args)
21
- @request.path_info = '/' + args.join('/')
22
- @router = MyRouterSpecRouter.new(@adapter)
23
- @router.request = @request
24
- @router.parse_library_from_path(args.flatten)
25
- end
26
-
27
- it "parses library and version name out of path" do
28
- expect(parse('project', '1.0.0')).to eq [@projects[0], []]
29
- expect(@request.version_supplied).to be true
30
- end
31
-
32
- it "parses library and use latest version if version is not supplied" do
33
- expect(parse('project')).to eq [@projects[1], []]
34
- expect(@request.version_supplied).to be false
35
- end
36
-
37
- it "parses library and use latest version if next component is not a version" do
38
- expect(parse('project', 'notaversion')).to eq [@projects[1], ['notaversion']]
39
- expect(@request.version_supplied).to be false
40
- end
41
-
42
- it "returns nil library if no library is found" do
43
- expect(parse('notproject')).to eq [nil, ['notproject']]
44
- end
45
-
46
- it "does not parse library or version if single_library == true" do
47
- allow(@adapter).to receive(:options).and_return(:single_library => true)
48
- expect(parse('notproject')).to eq [@projects[0], ['notproject']]
49
- end
50
- end
51
-
52
- describe "#route" do
53
- def route_to(route, command, script_name = '')
54
- req = mock_request(route, script_name)
55
- router = MyRouterSpecRouter.new(@adapter)
56
- expect(command).to receive(:new) do |*args|
57
- @command = command.allocate
58
- @command.send(:initialize, *args)
59
- class << @command; define_method(:call) {|*| self } end
60
- @command
61
- end
62
- router.call(req)
63
- end
64
-
65
- it "routes /docs/OBJECT to object if single_library = true" do
66
- allow(@adapter).to receive(:options).and_return(:single_library => true)
67
- route_to('/mydocs/foo/FOO', DisplayObjectCommand)
68
- end
69
-
70
- it "routes /docs" do
71
- route_to('/mydocs/foo', LibraryIndexCommand)
72
- end
73
-
74
- it "routes /docs as index for library if single_library == true" do
75
- allow(@adapter).to receive(:options).and_return(:single_library => true)
76
- route_to('/mydocs/foo/', DisplayObjectCommand)
77
- end
78
-
79
- it "routes /docs/name/version" do
80
- route_to('/mydocs/foo/project/1.0.0', DisplayObjectCommand)
81
- expect(@command.library).to eq @projects[0]
82
- end
83
-
84
- it "routes /docs/name/ to latest version of library" do
85
- route_to('/mydocs/foo/project', DisplayObjectCommand)
86
- expect(@command.library).to eq @projects[1]
87
- end
88
-
89
- it "routes /list/name/version/class" do
90
- route_to('/mylist/foo/project/1.0.0/class', ListCommand)
91
- expect(@command.library).to eq @projects[0]
92
- end
93
-
94
- it "routes /list/name/version/methods" do
95
- route_to('/mylist/foo/project/1.0.0/methods', ListCommand)
96
- expect(@command.library).to eq @projects[0]
97
- end
98
-
99
- it "routes /list/name/version/files" do
100
- route_to('/mylist/foo/project/1.0.0/files', ListCommand)
101
- expect(@command.library).to eq @projects[0]
102
- end
103
-
104
- it "routes /list/name to latest version of library" do
105
- route_to('/mylist/foo/project/class', ListCommand)
106
- expect(@command.library).to eq @projects[1]
107
- end
108
-
109
- it "routes /search/name/version" do
110
- route_to('/mysearch/foo/project/1.0.0', SearchCommand)
111
- expect(@command.library).to eq @projects[0]
112
- end
113
-
114
- it "routes /search/name to latest version of library" do
115
- route_to('/mysearch/foo/project', SearchCommand)
116
- expect(@command.library).to eq @projects[1]
117
- end
118
-
119
- it "searches static files for non-existent library" do
120
- route_to('/mydocs/foo/notproject', RootRequestCommand)
121
- end
122
- end
123
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'ostruct'
3
-
4
- include Server
5
- include Commands
6
-
7
- def mock_adapter(opts = {})
8
- opts[:libraries] ||= {'project' => [LibraryVersion.new('project', '1.0.0'), LibraryVersion.new('project', '1.0.1')]}
9
- opts[:document_root] ||= '/public'
10
- opts[:options] ||= {:single_library => false, :caching => false}
11
- opts[:server_options] ||= {}
12
- OpenStruct.new(opts)
13
- end
14
-
15
- class MockRequest < OpenStruct
16
- def path; "#{script_name}#{path_info}" end
17
- end
18
-
19
- def mock_request(path_info = '/', script_name = '', extra_env = {})
20
- opts = {:path_info => path_info, :script_name => script_name}
21
- MockRequest.new(extra_env.merge(opts))
22
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe YARD::Server::StaticCaching do
5
- include StaticCaching
6
-
7
- describe "#check_static_cache" do
8
- def adapter; @adapter ||= mock_adapter end
9
- def request; @request ||= MockRequest.new end
10
-
11
- it "returns nil if document root is not set" do
12
- adapter.document_root = nil
13
- expect(check_static_cache).to be nil
14
- end
15
-
16
- it "reads a file from document root if path matches file on system" do
17
- request.path_info = '/hello/world.html'
18
- expect(File).to receive(:file?).with('/public/hello/world.html').and_return(true)
19
- expect(File).to receive(:open).with('/public/hello/world.html', anything).and_return('body')
20
- s, _, b = *check_static_cache
21
- expect(s).to eq 200
22
- expect(b).to eq ["body"]
23
- end
24
-
25
- it "reads a file if path matches file on system + .html" do
26
- request.path_info = '/hello/world'
27
- expect(File).to receive(:file?).with('/public/hello/world.html').and_return(true)
28
- expect(File).to receive(:open).with('/public/hello/world.html', anything).and_return('body')
29
- s, _, b = *check_static_cache
30
- expect(s).to eq 200
31
- expect(b).to eq ["body"]
32
- end
33
-
34
- it "returns nil if no matching file is found" do
35
- request.path_info = '/hello/foo'
36
- expect(File).to receive(:file?).with('/public/hello/foo.html').and_return(false)
37
- expect(check_static_cache).to eq nil
38
- end
39
-
40
- it "adds mount point to cache location" do
41
- request.path_info = '/hello/world.html'
42
- request.script_name = '/mount/point'
43
- expect(File).to receive(:file?).with('/public/mount/point/hello/world.html').and_return(false)
44
- expect(check_static_cache).to eq nil
45
- end
46
- end
47
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe YARD::Server::WebrickServlet do
5
- describe "#do_GET" do
6
- it "performs a GET" do
7
- resp = OpenStruct.new
8
- class << resp
9
- def []=(name, value) (self.headers ||= {})[name] = value end
10
- end
11
- server = double(:server, :[] => nil)
12
- adapter = mock_adapter
13
- adapter.router = proc { [200, {'Header' => 'foo'}, ['body']] }
14
- WebrickServlet.new(server, adapter).do_GET(mock_request('/foo'), resp)
15
- expect(resp.status).to eq 200
16
- expect(resp.headers).to eq('Header' => 'foo')
17
- expect(resp.body).to eq 'body'
18
- end
19
- end
20
- end
data/spec/server_spec.rb DELETED
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::Server do
4
- describe ".register_static_path" do
5
- it "registers a static path" do
6
- YARD::Server.register_static_path 'foo'
7
- expect(YARD::Server::Commands::StaticFileCommand::STATIC_PATHS.last).to eq "foo"
8
- end
9
-
10
- it "does not duplicate paths" do
11
- paths = YARD::Server::Commands::StaticFileCommand::STATIC_PATHS
12
- count = paths.size
13
- YARD::Server.register_static_path 'foo2'
14
- YARD::Server.register_static_path 'foo2'
15
- expect(paths.size).to eq(count + 1)
16
- expect(paths.last).to eq 'foo2'
17
- end
18
- end
19
- end