yard 0.7.5 → 0.8.0

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 (339) hide show
  1. data/.yardopts +10 -2
  2. data/ChangeLog +1263 -38
  3. data/LEGAL +5 -5
  4. data/LICENSE +1 -1
  5. data/README.md +91 -82
  6. data/Rakefile +6 -6
  7. data/benchmarks/builtins_vs_eval.rb +1 -1
  8. data/benchmarks/erb_vs_erubis.rb +4 -4
  9. data/benchmarks/generation.rb +5 -5
  10. data/benchmarks/parsing.rb +2 -2
  11. data/benchmarks/registry_store_types.rb +48 -0
  12. data/bin/yard +9 -1
  13. data/bin/yardoc +9 -1
  14. data/bin/yri +10 -2
  15. data/docs/CodeObjects.md +10 -10
  16. data/docs/GettingStarted.md +85 -83
  17. data/docs/Handlers.md +21 -21
  18. data/docs/Overview.md +7 -7
  19. data/docs/Parser.md +30 -30
  20. data/docs/Tags.md +250 -554
  21. data/docs/TagsArch.md +123 -0
  22. data/docs/Templates.md +58 -80
  23. data/docs/WhatsNew.md +378 -133
  24. data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
  25. data/docs/templates/default/fulldoc/html/setup.rb +6 -0
  26. data/docs/templates/default/layout/html/setup.rb +8 -0
  27. data/docs/templates/default/layout/html/tag_list.erb +11 -0
  28. data/docs/templates/default/yard_tags/html/list.erb +18 -0
  29. data/docs/templates/default/yard_tags/html/setup.rb +27 -0
  30. data/docs/templates/plugin.rb +65 -0
  31. data/lib/yard.rb +1 -10
  32. data/lib/yard/autoload.rb +75 -27
  33. data/lib/yard/cli/command.rb +5 -2
  34. data/lib/yard/cli/command_parser.rb +3 -2
  35. data/lib/yard/cli/diff.rb +1 -1
  36. data/lib/yard/cli/i18n.rb +69 -0
  37. data/lib/yard/cli/list.rb +1 -1
  38. data/lib/yard/cli/server.rb +30 -7
  39. data/lib/yard/cli/stats.rb +5 -6
  40. data/lib/yard/cli/yardoc.rb +95 -45
  41. data/lib/yard/cli/yri.rb +24 -3
  42. data/lib/yard/code_objects/base.rb +35 -4
  43. data/lib/yard/code_objects/extra_file_object.rb +1 -1
  44. data/lib/yard/code_objects/macro_object.rb +56 -99
  45. data/lib/yard/code_objects/method_object.rb +44 -6
  46. data/lib/yard/config.rb +18 -8
  47. data/lib/yard/core_ext/symbol_hash.rb +1 -1
  48. data/lib/yard/docstring.rb +45 -85
  49. data/lib/yard/docstring_parser.rb +269 -0
  50. data/lib/yard/handlers/base.rb +129 -118
  51. data/lib/yard/handlers/c/alias_handler.rb +15 -0
  52. data/lib/yard/handlers/c/attribute_handler.rb +13 -0
  53. data/lib/yard/handlers/c/base.rb +110 -0
  54. data/lib/yard/handlers/c/class_handler.rb +26 -0
  55. data/lib/yard/handlers/c/constant_handler.rb +12 -0
  56. data/lib/yard/handlers/c/handler_methods.rb +165 -0
  57. data/lib/yard/handlers/c/init_handler.rb +16 -0
  58. data/lib/yard/handlers/c/method_handler.rb +35 -0
  59. data/lib/yard/handlers/c/mixin_handler.rb +13 -0
  60. data/lib/yard/handlers/c/module_handler.rb +16 -0
  61. data/lib/yard/handlers/c/override_comment_handler.rb +22 -0
  62. data/lib/yard/handlers/c/path_handler.rb +10 -0
  63. data/lib/yard/handlers/c/struct_handler.rb +12 -0
  64. data/lib/yard/handlers/c/symbol_handler.rb +7 -0
  65. data/lib/yard/handlers/processor.rb +41 -30
  66. data/lib/yard/handlers/ruby/alias_handler.rb +0 -2
  67. data/lib/yard/handlers/ruby/attribute_handler.rb +16 -17
  68. data/lib/yard/handlers/ruby/base.rb +10 -6
  69. data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
  70. data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
  71. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +71 -0
  72. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +0 -3
  73. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +16 -17
  74. data/lib/yard/handlers/ruby/legacy/base.rb +28 -6
  75. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
  76. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
  77. data/lib/yard/handlers/ruby/legacy/method_handler.rb +0 -2
  78. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +1 -1
  79. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
  80. data/lib/yard/handlers/ruby/method_handler.rb +10 -15
  81. data/lib/yard/handlers/ruby/mixin_handler.rb +1 -1
  82. data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
  83. data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -2
  84. data/lib/yard/i18n/pot_generator.rb +281 -0
  85. data/lib/yard/i18n/text.rb +72 -0
  86. data/lib/yard/logging.rb +3 -7
  87. data/lib/yard/options.rb +216 -0
  88. data/lib/yard/parser/c/c_parser.rb +225 -0
  89. data/lib/yard/parser/c/comment_parser.rb +131 -0
  90. data/lib/yard/parser/c/statement.rb +63 -0
  91. data/lib/yard/parser/ruby/ast_node.rb +91 -1
  92. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
  93. data/lib/yard/parser/ruby/legacy/statement.rb +7 -2
  94. data/lib/yard/parser/ruby/legacy/statement_list.rb +13 -22
  95. data/lib/yard/parser/ruby/ruby_parser.rb +87 -26
  96. data/lib/yard/parser/source_parser.rb +89 -88
  97. data/lib/yard/rake/yardoc_task.rb +1 -1
  98. data/lib/yard/registry.rb +21 -10
  99. data/lib/yard/registry_store.rb +48 -0
  100. data/lib/yard/serializers/file_system_serializer.rb +18 -20
  101. data/lib/yard/serializers/yardoc_serializer.rb +1 -0
  102. data/lib/yard/server/adapter.rb +2 -2
  103. data/lib/yard/server/commands/base.rb +1 -1
  104. data/lib/yard/server/commands/display_object_command.rb +13 -6
  105. data/lib/yard/server/commands/frames_command.rb +4 -21
  106. data/lib/yard/server/commands/library_command.rb +57 -11
  107. data/lib/yard/server/commands/list_command.rb +10 -34
  108. data/lib/yard/server/commands/search_command.rb +8 -2
  109. data/lib/yard/server/doc_server_helper.rb +34 -0
  110. data/lib/yard/server/rack_adapter.rb +5 -1
  111. data/lib/yard/server/router.rb +4 -10
  112. data/lib/yard/server/static_caching.rb +2 -2
  113. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +2 -2
  114. data/lib/yard/server/templates/default/fulldoc/html/js/live.js +0 -15
  115. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +3 -3
  116. data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
  117. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
  118. data/lib/yard/server/templates/doc_server/search/html/setup.rb +1 -1
  119. data/lib/yard/tags/default_factory.rb +31 -4
  120. data/lib/yard/tags/directives.rb +593 -0
  121. data/lib/yard/tags/library.rb +437 -35
  122. data/lib/yard/templates/engine.rb +17 -12
  123. data/lib/yard/templates/helpers/base_helper.rb +8 -2
  124. data/lib/yard/templates/helpers/html_helper.rb +57 -14
  125. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +1 -1
  126. data/lib/yard/templates/helpers/markup_helper.rb +9 -9
  127. data/lib/yard/templates/helpers/text_helper.rb +2 -2
  128. data/lib/yard/templates/template.rb +42 -13
  129. data/lib/yard/templates/template_options.rb +81 -0
  130. data/spec/cli/command_parser_spec.rb +4 -4
  131. data/spec/cli/command_spec.rb +3 -3
  132. data/spec/cli/config_spec.rb +13 -13
  133. data/spec/cli/diff_spec.rb +13 -10
  134. data/spec/cli/gems_spec.rb +12 -12
  135. data/spec/cli/help_spec.rb +2 -2
  136. data/spec/cli/i18n_spec.rb +111 -0
  137. data/spec/cli/server_spec.rb +66 -18
  138. data/spec/cli/stats_spec.rb +15 -15
  139. data/spec/cli/yardoc_spec.rb +124 -97
  140. data/spec/cli/yri_spec.rb +14 -12
  141. data/spec/code_objects/base_spec.rb +104 -46
  142. data/spec/code_objects/class_object_spec.rb +33 -33
  143. data/spec/code_objects/code_object_list_spec.rb +5 -5
  144. data/spec/code_objects/constants_spec.rb +4 -3
  145. data/spec/code_objects/extra_file_object_spec.rb +19 -19
  146. data/spec/code_objects/macro_object_spec.rb +31 -37
  147. data/spec/code_objects/method_object_spec.rb +46 -23
  148. data/spec/code_objects/module_object_spec.rb +16 -16
  149. data/spec/code_objects/namespace_object_spec.rb +6 -6
  150. data/spec/code_objects/proxy_spec.rb +19 -19
  151. data/spec/config_spec.rb +33 -24
  152. data/spec/core_ext/array_spec.rb +1 -1
  153. data/spec/core_ext/file_spec.rb +8 -8
  154. data/spec/core_ext/hash_spec.rb +1 -1
  155. data/spec/core_ext/insertion_spec.rb +3 -3
  156. data/spec/core_ext/module_spec.rb +1 -1
  157. data/spec/core_ext/string_spec.rb +6 -6
  158. data/spec/core_ext/symbol_hash_spec.rb +11 -11
  159. data/spec/docstring_parser_spec.rb +207 -0
  160. data/spec/docstring_spec.rb +33 -146
  161. data/spec/handlers/alias_handler_spec.rb +14 -14
  162. data/spec/handlers/attribute_handler_spec.rb +20 -20
  163. data/spec/handlers/base_spec.rb +16 -16
  164. data/spec/handlers/c/alias_handler_spec.rb +33 -0
  165. data/spec/handlers/c/attribute_handler_spec.rb +40 -0
  166. data/spec/handlers/c/class_handler_spec.rb +64 -0
  167. data/spec/handlers/c/constant_handler_spec.rb +68 -0
  168. data/spec/handlers/c/init_handler_spec.rb +36 -0
  169. data/spec/handlers/c/method_handler_spec.rb +228 -0
  170. data/spec/handlers/c/mixin_handler_spec.rb +27 -0
  171. data/spec/handlers/c/module_handler_spec.rb +38 -0
  172. data/spec/handlers/c/override_comment_handler_spec.rb +43 -0
  173. data/spec/handlers/c/path_handler_spec.rb +35 -0
  174. data/spec/handlers/c/spec_helper.rb +11 -0
  175. data/spec/handlers/c/struct_handler_spec.rb +15 -0
  176. data/spec/handlers/class_condition_handler_spec.rb +10 -10
  177. data/spec/handlers/class_handler_spec.rb +38 -38
  178. data/spec/handlers/class_variable_handler_spec.rb +1 -1
  179. data/spec/handlers/constant_handler_spec.rb +7 -7
  180. data/spec/handlers/{macro_handler_spec.rb → dsl_handler_spec.rb} +72 -53
  181. data/spec/handlers/examples/alias_handler_001.rb.txt +5 -5
  182. data/spec/handlers/examples/class_condition_handler_001.rb.txt +9 -9
  183. data/spec/handlers/examples/class_handler_001.rb.txt +1 -1
  184. data/spec/handlers/examples/dsl_handler_001.rb.txt +110 -0
  185. data/spec/handlers/examples/exception_handler_001.rb.txt +14 -14
  186. data/spec/handlers/examples/method_condition_handler_001.rb.txt +2 -2
  187. data/spec/handlers/examples/method_handler_001.rb.txt +16 -16
  188. data/spec/handlers/examples/mixin_handler_001.rb.txt +8 -4
  189. data/spec/handlers/examples/private_constant_handler_001.rb.txt +1 -1
  190. data/spec/handlers/examples/visibility_handler_001.rb.txt +3 -3
  191. data/spec/handlers/examples/yield_handler_001.rb.txt +13 -14
  192. data/spec/handlers/exception_handler_spec.rb +9 -9
  193. data/spec/handlers/extend_handler_spec.rb +2 -2
  194. data/spec/handlers/legacy_base_spec.rb +34 -34
  195. data/spec/handlers/method_condition_handler_spec.rb +2 -2
  196. data/spec/handlers/method_handler_spec.rb +33 -33
  197. data/spec/handlers/mixin_handler_spec.rb +13 -9
  198. data/spec/handlers/module_function_handler_spec.rb +82 -0
  199. data/spec/handlers/module_handler_spec.rb +6 -6
  200. data/spec/handlers/private_constant_handler_spec.rb +3 -3
  201. data/spec/handlers/processor_spec.rb +5 -5
  202. data/spec/handlers/ruby/base_spec.rb +10 -6
  203. data/spec/handlers/ruby/legacy/base_spec.rb +11 -7
  204. data/spec/handlers/spec_helper.rb +2 -3
  205. data/spec/handlers/visibility_handler_spec.rb +6 -6
  206. data/spec/handlers/yield_handler_spec.rb +8 -8
  207. data/spec/i18n/pot_generator_spec.rb +244 -0
  208. data/spec/i18n/text_spec.rb +69 -0
  209. data/spec/options_spec.rb +160 -0
  210. data/spec/parser/base_spec.rb +3 -3
  211. data/spec/parser/c_parser_spec.rb +31 -257
  212. data/spec/parser/examples/array.c.txt +187 -187
  213. data/spec/parser/examples/extrafile.c.txt +1 -1
  214. data/spec/parser/examples/override.c.txt +1 -1
  215. data/spec/parser/ruby/ast_node_spec.rb +1 -1
  216. data/spec/parser/ruby/legacy/statement_list_spec.rb +24 -24
  217. data/spec/parser/ruby/legacy/token_list_spec.rb +7 -7
  218. data/spec/parser/ruby/ruby_parser_spec.rb +56 -34
  219. data/spec/parser/source_parser_spec.rb +125 -65
  220. data/spec/parser/tag_parsing_spec.rb +4 -4
  221. data/spec/rake/yardoc_task_spec.rb +10 -8
  222. data/spec/registry_spec.rb +65 -36
  223. data/spec/registry_store_spec.rb +90 -40
  224. data/spec/serializers/file_system_serializer_spec.rb +12 -12
  225. data/spec/serializers/yardoc_serializer_spec.rb +2 -2
  226. data/spec/server/adapter_spec.rb +3 -3
  227. data/spec/server/commands/base_spec.rb +8 -8
  228. data/spec/server/commands/library_command_spec.rb +3 -3
  229. data/spec/server/commands/static_file_command_spec.rb +7 -7
  230. data/spec/server/doc_server_helper_spec.rb +1 -1
  231. data/spec/server/doc_server_serializer_spec.rb +6 -6
  232. data/spec/server/rack_adapter_spec.rb +3 -3
  233. data/spec/server/router_spec.rb +19 -19
  234. data/spec/server/static_caching_spec.rb +4 -4
  235. data/spec/spec_helper.rb +7 -7
  236. data/spec/tags/default_factory_spec.rb +24 -16
  237. data/spec/tags/directives_spec.rb +422 -0
  238. data/spec/tags/library_spec.rb +15 -4
  239. data/spec/tags/overload_tag_spec.rb +6 -6
  240. data/spec/tags/ref_tag_list_spec.rb +8 -8
  241. data/spec/templates/class_spec.rb +7 -7
  242. data/spec/templates/constant_spec.rb +7 -7
  243. data/spec/templates/engine_spec.rb +28 -36
  244. data/spec/templates/examples/class001.html +108 -108
  245. data/spec/templates/examples/class002.html +17 -17
  246. data/spec/templates/examples/constant001.txt +1 -1
  247. data/spec/templates/examples/method001.html +45 -45
  248. data/spec/templates/examples/method002.html +25 -25
  249. data/spec/templates/examples/method003.html +60 -60
  250. data/spec/templates/examples/method004.html +7 -7
  251. data/spec/templates/examples/method005.html +28 -28
  252. data/spec/templates/examples/module001.html +321 -321
  253. data/spec/templates/examples/module001.txt +1 -1
  254. data/spec/templates/examples/module002.html +130 -130
  255. data/spec/templates/examples/module003.html +74 -74
  256. data/spec/templates/examples/module004.html +388 -0
  257. data/spec/templates/helpers/base_helper_spec.rb +32 -32
  258. data/spec/templates/helpers/html_helper_spec.rb +87 -68
  259. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +9 -9
  260. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +16 -16
  261. data/spec/templates/helpers/markup_helper_spec.rb +31 -28
  262. data/spec/templates/helpers/method_helper_spec.rb +7 -7
  263. data/spec/templates/helpers/shared_signature_examples.rb +9 -7
  264. data/spec/templates/helpers/text_helper_spec.rb +3 -3
  265. data/spec/templates/method_spec.rb +13 -13
  266. data/spec/templates/module_spec.rb +70 -24
  267. data/spec/templates/onefile_spec.rb +32 -15
  268. data/spec/templates/section_spec.rb +23 -23
  269. data/spec/templates/spec_helper.rb +31 -1
  270. data/spec/templates/tag_spec.rb +5 -5
  271. data/spec/templates/template_spec.rb +54 -46
  272. data/spec/verifier_spec.rb +5 -5
  273. data/templates/default/class/setup.rb +2 -2
  274. data/templates/default/docstring/html/abstract.erb +1 -1
  275. data/templates/default/docstring/html/note.erb +1 -1
  276. data/templates/default/docstring/html/private.erb +1 -1
  277. data/templates/default/docstring/html/todo.erb +1 -1
  278. data/templates/default/docstring/setup.rb +2 -2
  279. data/templates/default/fulldoc/html/css/full_list.css +4 -2
  280. data/templates/default/fulldoc/html/css/style.css +50 -44
  281. data/templates/default/fulldoc/html/frames.erb +21 -6
  282. data/templates/default/fulldoc/html/full_list.erb +5 -3
  283. data/templates/default/fulldoc/html/{full_list_files.erb → full_list_file.erb} +0 -0
  284. data/templates/default/fulldoc/html/js/app.js +29 -26
  285. data/templates/default/fulldoc/html/js/full_list.js +9 -9
  286. data/templates/default/fulldoc/html/js/jquery.js +4 -16
  287. data/templates/default/fulldoc/html/setup.rb +42 -38
  288. data/templates/default/layout/dot/header.erb +1 -1
  289. data/templates/default/layout/html/breadcrumb.erb +6 -6
  290. data/templates/default/layout/html/files.erb +1 -1
  291. data/templates/default/layout/html/footer.erb +1 -1
  292. data/templates/default/layout/html/headers.erb +3 -6
  293. data/templates/default/layout/html/index.erb +1 -1
  294. data/templates/default/layout/html/layout.erb +3 -7
  295. data/templates/default/layout/html/objects.erb +1 -1
  296. data/templates/default/layout/html/script_setup.erb +5 -0
  297. data/templates/default/layout/html/search.erb +4 -1
  298. data/templates/default/layout/html/setup.rb +8 -8
  299. data/templates/default/method_details/html/method_signature.erb +10 -3
  300. data/templates/default/method_details/setup.rb +1 -0
  301. data/templates/default/module/dot/info.erb +1 -1
  302. data/templates/default/module/dot/setup.rb +2 -2
  303. data/templates/default/module/html/attribute_details.erb +1 -1
  304. data/templates/default/module/html/children.erb +1 -1
  305. data/templates/default/module/html/defines.erb +1 -1
  306. data/templates/default/module/html/inherited_methods.erb +5 -4
  307. data/templates/default/module/html/item_summary.erb +15 -5
  308. data/templates/default/module/html/method_details_list.erb +2 -2
  309. data/templates/default/module/setup.rb +25 -12
  310. data/templates/default/module/text/setup.rb +1 -1
  311. data/templates/default/onefile/html/layout.erb +1 -1
  312. data/templates/default/onefile/html/setup.rb +2 -2
  313. data/templates/default/tags/html/example.erb +4 -2
  314. data/templates/default/tags/html/option.erb +1 -1
  315. data/templates/default/tags/html/overload.erb +1 -1
  316. data/templates/default/tags/html/see.erb +1 -1
  317. data/templates/default/tags/html/tag.erb +1 -1
  318. data/templates/default/tags/setup.rb +4 -3
  319. data/templates/guide/fulldoc/html/css/style.css +8 -8
  320. data/templates/guide/fulldoc/html/js/app.js +6 -6
  321. data/templates/guide/fulldoc/html/setup.rb +12 -12
  322. data/templates/guide/layout/html/layout.erb +11 -11
  323. data/templates/guide/layout/html/setup.rb +9 -9
  324. data/templates/guide/method/html/header.erb +2 -2
  325. data/templates/guide/method/html/setup.rb +1 -1
  326. metadata +68 -18
  327. data/bin/yard-graph +0 -4
  328. data/bin/yard-server +0 -4
  329. data/docs/Glossary.md +0 -12
  330. data/lib/yard/handlers/ruby/legacy/macro_handler.rb +0 -39
  331. data/lib/yard/handlers/ruby/macro_handler.rb +0 -40
  332. data/lib/yard/handlers/ruby/macro_handler_methods.rb +0 -131
  333. data/lib/yard/parser/c_parser.rb +0 -497
  334. data/lib/yard/server/templates/default/layout/html/headers.erb +0 -16
  335. data/lib/yard/server/templates/doc_server/frames/html/frames.erb +0 -13
  336. data/lib/yard/server/templates/doc_server/frames/html/setup.rb +0 -3
  337. data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +0 -34
  338. data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +0 -20
  339. data/spec/handlers/examples/macro_handler_001.rb.txt +0 -83
@@ -2,17 +2,17 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
2
 
3
3
  describe YARD::Parser, "tag handling" do
4
4
  before { parse_file :tag_handler_001, __FILE__ }
5
-
5
+
6
6
  it "should know the list of all available tags" do
7
7
  P("Foo#foo").tags.should include(P("Foo#foo").tag(:api))
8
8
  end
9
-
9
+
10
10
  it "should know the text of tags on a method" do
11
11
  P("Foo#foo").tag(:api).text.should == "public"
12
12
  end
13
-
13
+
14
14
  it "should return true when asked whether a tag exists" do
15
15
  P("Foo#foo").has_tag?(:api).should == true
16
16
  end
17
-
17
+
18
18
  end
@@ -10,21 +10,23 @@ describe YARD::Rake::YardocTask do
10
10
  Templates::Engine.stub!(:render)
11
11
  Templates::Engine.stub!(:generate)
12
12
  YARD.stub!(:parse)
13
+ Registry.stub!(:load)
14
+ Registry.stub!(:save)
13
15
  YARD::CLI::Yardoc.stub!(:new).and_return(@yardoc)
14
16
  ::Rake.application.clear
15
17
  end
16
-
18
+
17
19
  def run
18
20
  ::Rake.application.tasks[0].invoke
19
21
  end
20
-
22
+
21
23
  describe '#initialize' do
22
24
  it "should allow separate rake task name to be set" do
23
25
  YARD::Rake::YardocTask.new(:notyardoc)
24
26
  ::Rake.application.tasks[0].name.should == "notyardoc"
25
27
  end
26
28
  end
27
-
29
+
28
30
  describe '#files' do
29
31
  it "should allow files to be set" do
30
32
  YARD::Rake::YardocTask.new do |t|
@@ -34,7 +36,7 @@ describe YARD::Rake::YardocTask do
34
36
  @yardoc.files.should == %w(a b c)
35
37
  end
36
38
  end
37
-
39
+
38
40
  describe '#options' do
39
41
  it "should allow extra options to be set" do
40
42
  YARD::Rake::YardocTask.new do |t|
@@ -44,7 +46,7 @@ describe YARD::Rake::YardocTask do
44
46
  @yardoc.visibilities.should == [:public, :private, :protected]
45
47
  end
46
48
  end
47
-
49
+
48
50
  describe '#before' do
49
51
  it "should allow before callback" do
50
52
  proc = lambda { }
@@ -54,7 +56,7 @@ describe YARD::Rake::YardocTask do
54
56
  run
55
57
  end
56
58
  end
57
-
59
+
58
60
  describe '#after' do
59
61
  it "should allow after callback" do
60
62
  proc = lambda { }
@@ -63,7 +65,7 @@ describe YARD::Rake::YardocTask do
63
65
  YARD::Rake::YardocTask.new {|t| t.after = proc }
64
66
  run
65
67
  end
66
-
68
+
67
69
  describe '#verifier' do
68
70
  it "should allow a verifier proc to be set" do
69
71
  verifier = Verifier.new
@@ -79,7 +81,7 @@ describe YARD::Rake::YardocTask do
79
81
  @yardoc.should_receive(:run) do
80
82
  @yardoc.options[:verifier].should == verifier
81
83
  end
82
- YARD::Rake::YardocTask.new do |t|
84
+ YARD::Rake::YardocTask.new do |t|
83
85
  t.options += ['--query', '@return']
84
86
  t.verifier = verifier
85
87
  end
@@ -5,7 +5,7 @@ require "thread"
5
5
 
6
6
  describe YARD::Registry do
7
7
  before { Registry.clear }
8
-
8
+
9
9
  describe '.yardoc_file_for_gem' do
10
10
  before do
11
11
  @gem = mock('gem')
@@ -13,37 +13,37 @@ describe YARD::Registry do
13
13
  @gem.stub!(:full_name).and_return('foo-1.0')
14
14
  @gem.stub!(:full_gem_path).and_return('/path/to/foo')
15
15
  end
16
-
16
+
17
17
  it "should return nil if gem isn't found" do
18
18
  Gem.source_index.should_receive(:find_name).with('foo', '>= 0').and_return([])
19
19
  Registry.yardoc_file_for_gem('foo').should == nil
20
20
  end
21
-
21
+
22
22
  it "should allow version to be specified" do
23
23
  Gem.source_index.should_receive(:find_name).with('foo', '= 2').and_return([])
24
24
  Registry.yardoc_file_for_gem('foo', '= 2').should == nil
25
25
  end
26
-
26
+
27
27
  it "should return existing .yardoc path for gem when for_writing=false" do
28
28
  File.should_receive(:exist?).and_return(false)
29
29
  File.should_receive(:exist?).with('/path/to/foo/.yardoc').and_return(true)
30
30
  Gem.source_index.should_receive(:find_name).with('foo', '>= 0').and_return([@gem])
31
31
  Registry.yardoc_file_for_gem('foo').should == '/path/to/foo/.yardoc'
32
32
  end
33
-
33
+
34
34
  it "should return nil if no .yardoc path exists in gem when for_writing=false" do
35
35
  File.should_receive(:exist?).and_return(false)
36
36
  File.should_receive(:exist?).with('/path/to/foo/.yardoc').and_return(false)
37
37
  Gem.source_index.should_receive(:find_name).with('foo', '>= 0').and_return([@gem])
38
38
  Registry.yardoc_file_for_gem('foo').should == nil
39
39
  end
40
-
40
+
41
41
  it "should search local gem path first if for_writing=false" do
42
42
  File.should_receive(:exist?).and_return(true)
43
43
  Gem.source_index.should_receive(:find_name).with('foo', '>= 0').and_return([@gem])
44
44
  Registry.yardoc_file_for_gem('foo').should =~ %r{/.yard/gem_index/foo-1.0.yardoc$}
45
45
  end
46
-
46
+
47
47
  it "should return global .yardoc path for gem if for_writing=true and dir is writable" do
48
48
  File.should_receive(:writable?).with(@gem.full_gem_path).and_return(true)
49
49
  Gem.source_index.should_receive(:find_name).with('foo', '>= 0').and_return([@gem])
@@ -55,7 +55,7 @@ describe YARD::Registry do
55
55
  Gem.source_index.should_receive(:find_name).with('foo', '>= 0').and_return([@gem])
56
56
  Registry.yardoc_file_for_gem('foo', '>= 0', true).should =~ %r{/.yard/gem_index/foo-1.0.yardoc$}
57
57
  end
58
-
58
+
59
59
  it "should return gem path if gem starts with yard-doc- and for_writing=false" do
60
60
  @gem.stub!(:name).and_return('yard-doc-core')
61
61
  @gem.stub!(:full_name).and_return('yard-doc-core-1.0')
@@ -64,7 +64,7 @@ describe YARD::Registry do
64
64
  File.should_receive(:exist?).with('/path/to/yard-doc-core/.yardoc').and_return(true)
65
65
  Registry.yardoc_file_for_gem('yard-doc-core').should == '/path/to/yard-doc-core/.yardoc'
66
66
  end
67
-
67
+
68
68
  it "should return nil if gem starts with yard-doc- and for_writing=true" do
69
69
  @gem.stub!(:name).and_return('yard-doc-core')
70
70
  @gem.stub!(:full_name).and_return('yard-doc-core-1.0')
@@ -74,13 +74,13 @@ describe YARD::Registry do
74
74
  Registry.yardoc_file_for_gem('yard-doc-core', '>= 0', true).should == nil
75
75
  end
76
76
  end
77
-
77
+
78
78
  describe '.root' do
79
79
  it "should have an empty path for root" do
80
80
  Registry.root.path.should == ""
81
81
  end
82
82
  end
83
-
83
+
84
84
  describe '.resolve' do
85
85
  it "should resolve any existing namespace" do
86
86
  o1 = ModuleObject.new(:root, :A)
@@ -89,16 +89,16 @@ describe YARD::Registry do
89
89
  Registry.resolve(o1, "B::C").should == o3
90
90
  Registry.resolve(:root, "A::B::C")
91
91
  end
92
-
92
+
93
93
  it "should resolve an object in the root namespace when prefixed with ::" do
94
94
  o1 = ModuleObject.new(:root, :A)
95
95
  o2 = ModuleObject.new(o1, :B)
96
96
  o3 = ModuleObject.new(o2, :C)
97
97
  Registry.resolve(o3, "::A").should == o1
98
-
98
+
99
99
  Registry.resolve(o3, "::String", false, true).should == P(:String)
100
100
  end
101
-
101
+
102
102
  it "should resolve instance methods with # prefix" do
103
103
  o1 = ModuleObject.new(:root, :A)
104
104
  o2 = ModuleObject.new(o1, :B)
@@ -108,12 +108,12 @@ describe YARD::Registry do
108
108
  Registry.resolve(o2, "C#methname").should == o4
109
109
  Registry.resolve(o3, "#methname").should == o4
110
110
  end
111
-
111
+
112
112
  it "should resolve instance methods in the root without # prefix" do
113
113
  o = MethodObject.new(:root, :methname)
114
114
  Registry.resolve(:root, 'methname').should == o
115
115
  end
116
-
116
+
117
117
  it "should resolve superclass methods when inheritance = true" do
118
118
  superyard = ClassObject.new(:root, :SuperYard)
119
119
  yard = ClassObject.new(:root, :YARD)
@@ -139,19 +139,48 @@ describe YARD::Registry do
139
139
  Registry.resolve(yard, "class_hello", false).should be_nil
140
140
  Registry.resolve(yard, "class_hello", true).should == cmeth
141
141
  end
142
-
142
+
143
+ it "should resolve methods in Object when inheritance = true" do
144
+ YARD.parse_string <<-eof
145
+ class Object; def foo; end end
146
+ class A; end
147
+ class MyObject < A; end
148
+ eof
149
+
150
+ Registry.resolve(P('MyObject'), '#foo', true).should == P('Object#foo')
151
+ end
152
+
153
+ it "should resolve methods in BasicObject when inheritance = true" do
154
+ YARD.parse_string <<-eof
155
+ class BasicObject; def foo; end end
156
+ class A; end
157
+ class MyObject < A; end
158
+ eof
159
+
160
+ Registry.resolve(P('MyObject'), '#foo', true).should == P('BasicObject#foo')
161
+ end
162
+
163
+ it "should not resolve methods in Object if inheriting BasicObject when inheritance = true" do
164
+ YARD.parse_string <<-eof
165
+ class Object; def foo; end end
166
+ class MyObject < BasicObject; end
167
+ eof
168
+
169
+ Registry.resolve(P('MyObject'), '#foo', true).should be_nil
170
+ end
171
+
143
172
  it "should only check 'Path' in lookup on root namespace" do
144
173
  Registry.should_receive(:at).once.with('Test').and_return(true)
145
174
  Registry.resolve(Registry.root, "Test")
146
175
  end
147
-
176
+
148
177
  it "should not perform lookup by joining namespace and name without separator" do
149
178
  yard = ClassObject.new(:root, :YARD)
150
179
  Registry.should_not_receive(:at).with('YARDB')
151
180
  Registry.resolve(yard, 'B')
152
181
  end
153
182
  end
154
-
183
+
155
184
  describe '.all' do
156
185
  it "should return objects of types specified by arguments" do
157
186
  ModuleObject.new(:root, :A)
@@ -160,15 +189,15 @@ describe YARD::Registry do
160
189
  r = Registry.all(:method, :class)
161
190
  r.should include(o1, o2)
162
191
  end
163
-
192
+
164
193
  it "should return code objects" do
165
194
  o1 = ModuleObject.new(:root, :A)
166
195
  o2 = ClassObject.new(:root, :B)
167
196
  MethodObject.new(:root, :testing)
168
- r = Registry.all(CodeObjects::NamespaceObject)
197
+ r = Registry.all.select {|t| NamespaceObject === t }
169
198
  r.should include(o1, o2)
170
199
  end
171
-
200
+
172
201
  it "should allow .all to omit list" do
173
202
  o1 = ModuleObject.new(:root, :A)
174
203
  o2 = ClassObject.new(:root, :B)
@@ -176,7 +205,7 @@ describe YARD::Registry do
176
205
  r.should include(o1, o2)
177
206
  end
178
207
  end
179
-
208
+
180
209
  describe '.paths' do
181
210
  it "should return all object paths" do
182
211
  o1 = ModuleObject.new(:root, :A)
@@ -184,7 +213,7 @@ describe YARD::Registry do
184
213
  Registry.paths.should include('A', 'B')
185
214
  end
186
215
  end
187
-
216
+
188
217
  describe '.load_yardoc' do
189
218
  it "should delegate load to RegistryStore" do
190
219
  store = RegistryStore.new
@@ -193,11 +222,11 @@ describe YARD::Registry do
193
222
  Registry.yardoc_file = 'foo'
194
223
  Registry.load_yardoc
195
224
  end
196
-
225
+
197
226
  it "should return itself" do
198
227
  Registry.load_yardoc.should == Registry
199
228
  end
200
-
229
+
201
230
  it "should maintain hash key equality on loaded objects" do
202
231
  Registry.clear
203
232
  Registry.load!(File.dirname(__FILE__) + '/serializers/data/serialized_yardoc')
@@ -206,7 +235,7 @@ describe YARD::Registry do
206
235
  Registry.at('Foo').aliases.has_key?(baz).should == true
207
236
  end
208
237
  end
209
-
238
+
210
239
  ['load', 'load_all', 'load!'].each do |meth|
211
240
  describe('.' + meth) do
212
241
  it "should return itself" do
@@ -214,38 +243,38 @@ describe YARD::Registry do
214
243
  end
215
244
  end
216
245
  end
217
-
246
+
218
247
  describe '.each' do
219
- before do
248
+ before do
220
249
  YARD.parse_string "def a; end; def b; end; def c; end"
221
250
  end
222
-
251
+
223
252
  after { Registry.clear }
224
-
253
+
225
254
  it "should iterate over .all" do
226
255
  items = []
227
256
  Registry.each {|x| items << x.path }
228
257
  items.sort.should == ['#a', '#b', '#c']
229
258
  end
230
-
259
+
231
260
  it "should include Enumerable and allow for find, select" do
232
261
  Registry.find {|x| x.path == "#a" }.should be_a(CodeObjects::MethodObject)
233
262
  end
234
263
  end
235
-
264
+
236
265
  describe '.instance' do
237
266
  it "should return itself" do
238
267
  Registry.instance.should == Registry
239
268
  end
240
269
  end
241
-
270
+
242
271
  describe '.single_object_db' do
243
272
  it "should default to nil" do
244
273
  Registry.single_object_db.should == nil
245
274
  Thread.new { Registry.single_object_db.should == nil }.join
246
275
  end
247
276
  end
248
-
277
+
249
278
  describe 'Thread local' do
250
279
  it "should maintain two Registries in separate threads" do
251
280
  barrier = 0
@@ -296,7 +325,7 @@ describe YARD::Registry do
296
325
  threads.each {|t| t.join }
297
326
  Registry.yardoc_file = Registry::DEFAULT_YARDOC_FILE
298
327
  end
299
-
328
+
300
329
  it "should automatically clear in new threads" do
301
330
  Thread.new { Registry.all.should be_empty }.join
302
331
  end
@@ -5,20 +5,23 @@ describe YARD::RegistryStore do
5
5
  FileUtils.rm_rf("foo")
6
6
  @store = RegistryStore.new
7
7
  @serializer = Serializers::YardocSerializer.new('foo')
8
+ @foo = CodeObjects::MethodObject.new(nil, :foo)
9
+ @bar = CodeObjects::ClassObject.new(nil, :Bar)
8
10
  Serializers::YardocSerializer.stub!(:new).and_return(@serializer)
9
11
  end
10
-
12
+
11
13
  describe '#load' do
12
14
  it "should load root.dat as full object list if it is a Hash" do
13
15
  File.should_receive(:directory?).with('foo').and_return(true)
14
16
  File.should_receive(:file?).with('foo/checksums').and_return(false)
15
17
  File.should_receive(:file?).with('foo/proxy_types').and_return(false)
16
- @serializer.should_receive(:deserialize).with('root').and_return({:root => 'foo', :A => 'bar'})
18
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
19
+ @serializer.should_receive(:deserialize).with('root').and_return({:root => @foo, :A => @bar})
17
20
  @store.load('foo').should == true
18
- @store.root.should == 'foo'
19
- @store.get('A').should == 'bar'
21
+ @store.root.should == @foo
22
+ @store.get('A').should == @bar
20
23
  end
21
-
24
+
22
25
  it "should load old yardoc format if .yardoc is a file" do
23
26
  File.should_receive(:directory?).with('foo').and_return(false)
24
27
  File.should_receive(:file?).with('foo').and_return(true)
@@ -27,16 +30,17 @@ describe YARD::RegistryStore do
27
30
 
28
31
  @store.load('foo')
29
32
  end
30
-
33
+
31
34
  it "should load new yardoc format if .yardoc is a directory" do
32
35
  File.should_receive(:directory?).with('foo').and_return(true)
33
36
  File.should_receive(:file?).with('foo/checksums').and_return(false)
34
37
  File.should_receive(:file?).with('foo/proxy_types').and_return(false)
38
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
35
39
  File.should_receive(:file?).with('foo/objects/root.dat').and_return(false)
36
40
 
37
41
  @store.load('foo').should == true
38
42
  end
39
-
43
+
40
44
  it "should return true if .yardoc is loaded (file)" do
41
45
  File.should_receive(:directory?).with('myyardoc').and_return(false)
42
46
  File.should_receive(:file?).with('myyardoc').and_return(true)
@@ -48,6 +52,7 @@ describe YARD::RegistryStore do
48
52
  File.should_receive(:directory?).with('foo').and_return(true)
49
53
  File.should_receive(:file?).with('foo/checksums').and_return(false)
50
54
  File.should_receive(:file?).with('foo/proxy_types').and_return(false)
55
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
51
56
  File.should_receive(:file?).with('foo/objects/root.dat').and_return(false)
52
57
  @store.load('foo').should == true
53
58
  end
@@ -55,27 +60,29 @@ describe YARD::RegistryStore do
55
60
  it "should return false if .yardoc does not exist" do
56
61
  @store.load('NONEXIST').should == false
57
62
  end
58
-
63
+
59
64
  it "should return false if there is no file to load" do
60
65
  @store.load(nil).should == false
61
66
  end
62
-
67
+
63
68
  it "should load checksums if they exist" do
64
69
  File.should_receive(:directory?).with('foo').and_return(true)
65
70
  File.should_receive(:file?).with('foo/checksums').and_return(true)
66
71
  File.should_receive(:file?).with('foo/proxy_types').and_return(false)
67
72
  File.should_receive(:file?).with('foo/objects/root.dat').and_return(false)
73
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
68
74
  File.should_receive(:readlines).with('foo/checksums').and_return([
69
75
  'file1 CHECKSUM1', ' file2 CHECKSUM2 '
70
76
  ])
71
77
  @store.load('foo').should == true
72
78
  @store.checksums.should == {'file1' => 'CHECKSUM1', 'file2' => 'CHECKSUM2'}
73
79
  end
74
-
80
+
75
81
  it "should load proxy_types if they exist" do
76
82
  File.should_receive(:directory?).with('foo').and_return(true)
77
83
  File.should_receive(:file?).with('foo/checksums').and_return(false)
78
84
  File.should_receive(:file?).with('foo/proxy_types').and_return(true)
85
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
79
86
  File.should_receive(:file?).with('foo/objects/root.dat').and_return(false)
80
87
  File.should_receive(:read_binary).with('foo/proxy_types').and_return(Marshal.dump({'a' => 'b'}))
81
88
  @store.load('foo').should == true
@@ -86,52 +93,53 @@ describe YARD::RegistryStore do
86
93
  File.should_receive(:directory?).with('foo').and_return(true)
87
94
  File.should_receive(:file?).with('foo/checksums').and_return(false)
88
95
  File.should_receive(:file?).with('foo/proxy_types').and_return(false)
96
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
89
97
  File.should_receive(:file?).with('foo/objects/root.dat').and_return(true)
90
- File.should_receive(:read_binary).with('foo/objects/root.dat').and_return(Marshal.dump('foo'))
98
+ File.should_receive(:read_binary).with('foo/objects/root.dat').and_return(Marshal.dump(@foo))
91
99
  @store.load('foo').should == true
92
- @store.root.should == 'foo'
100
+ @store.root.should == @foo
93
101
  end
94
102
  end
95
-
103
+
96
104
  describe '#save' do
97
105
  before do
98
106
  @store.stub!(:write_proxy_types)
99
107
  @store.stub!(:write_checksums)
100
108
  @store.stub!(:destroy)
101
109
  end
102
-
110
+
103
111
  after do
104
112
  Registry.single_object_db = nil
105
113
  end
106
-
114
+
107
115
  def saves_to_singledb
108
116
  @serializer.should_receive(:serialize).once.with(instance_of(Hash))
109
117
  @store.save(true, 'foo')
110
118
  end
111
-
119
+
112
120
  def add_items(n)
113
- n.times {|i| @store[i.to_s] = 'foo' }
121
+ n.times {|i| @store[i.to_s] = @foo }
114
122
  end
115
-
123
+
116
124
  def saves_to_multidb
117
125
  times = @store.keys.size
118
126
  @serializer.should_receive(:serialize).exactly(times).times
119
127
  @store.save(true, 'foo')
120
128
  @last = times
121
129
  end
122
-
130
+
123
131
  it "should save as single object db if single_object_db is nil and there are less than 3000 objects" do
124
132
  Registry.single_object_db = nil
125
133
  add_items(100)
126
134
  saves_to_singledb
127
135
  end
128
-
136
+
129
137
  it "should save as single object db if single_object_db is nil and there are more than 3000 objects" do
130
138
  Registry.single_object_db = nil
131
139
  add_items(5000)
132
140
  saves_to_singledb
133
141
  end
134
-
142
+
135
143
  it "should save as single object db if single_object_db is true (and any amount of objects)" do
136
144
  Registry.single_object_db = true
137
145
  add_items(100)
@@ -139,7 +147,7 @@ describe YARD::RegistryStore do
139
147
  add_items(5000)
140
148
  saves_to_singledb
141
149
  end
142
-
150
+
143
151
  it "should never save as single object db if single_object_db is false" do
144
152
  Registry.single_object_db = false
145
153
  add_items(100)
@@ -148,38 +156,38 @@ describe YARD::RegistryStore do
148
156
  saves_to_multidb
149
157
  end
150
158
  end
151
-
159
+
152
160
  describe '#put' do
153
161
  it "should assign values" do
154
- @store.put(:YARD, true)
155
- @store.get(:YARD).should == true
162
+ @store.put(:YARD, @foo)
163
+ @store.get(:YARD).should == @foo
156
164
  end
157
-
165
+
158
166
  it "should treat '' as root" do
159
- @store.put('', 'value')
160
- @store.get(:root).should == 'value'
167
+ @store.put('', @foo)
168
+ @store.get(:root).should == @foo
161
169
  end
162
170
  end
163
-
171
+
164
172
  describe '#get' do
165
173
  it "should hit cache if object exists" do
166
- @store.put(:YARD, true)
167
- @store.get(:YARD).should == true
174
+ @store.put(:YARD, @foo)
175
+ @store.get(:YARD).should == @foo
168
176
  end
169
-
177
+
170
178
  it "should hit backstore on cache miss and cache is not fully loaded" do
171
179
  serializer = mock(:serializer)
172
- serializer.should_receive(:deserialize).once.with(:YARD).and_return('foo')
180
+ serializer.should_receive(:deserialize).once.with(:YARD).and_return(@foo)
173
181
  @store.load('foo')
174
182
  @store.instance_variable_set("@loaded_objects", 0)
175
183
  @store.instance_variable_set("@available_objects", 100)
176
184
  @store.instance_variable_set("@serializer", serializer)
177
- @store.get(:YARD).should == 'foo'
178
- @store.get(:YARD).should == 'foo'
185
+ @store.get(:YARD).should == @foo
186
+ @store.get(:YARD).should == @foo
179
187
  @store.instance_variable_get("@loaded_objects").should == 1
180
188
  end
181
189
  end
182
-
190
+
183
191
  [:keys, :values].each do |item|
184
192
  describe "##{item}" do
185
193
  it "should load entire database if reload=true" do
@@ -188,7 +196,7 @@ describe YARD::RegistryStore do
188
196
  @store.should_receive(:load_all)
189
197
  @store.send(item, true)
190
198
  end
191
-
199
+
192
200
  it "should not load entire database if reload=false" do
193
201
  File.should_receive(:directory?).with('foo').and_return(true)
194
202
  @store.load('foo')
@@ -197,15 +205,57 @@ describe YARD::RegistryStore do
197
205
  end
198
206
  end
199
207
  end
200
-
208
+
209
+ describe '#paths_for_type' do
210
+ after { Registry.clear }
211
+
212
+ it "should set all object types if not set by object_types" do
213
+ File.should_receive(:directory?).with('foo').and_return(true)
214
+ File.should_receive(:file?).with('foo/checksums').and_return(false)
215
+ File.should_receive(:file?).with('foo/proxy_types').and_return(false)
216
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
217
+ @serializer.should_receive(:deserialize).with('root').and_return({:'A#foo' => @foo, :A => @bar})
218
+ @store.load('foo')
219
+ @store.paths_for_type(:method).should == ['#foo']
220
+ @store.paths_for_type(:class).should == ['Bar']
221
+ end
222
+
223
+ it "should keep track of types when assigning values" do
224
+ @store.put(:abc, @foo)
225
+ @store.paths_for_type(@foo.type).should == ['abc']
226
+ end
227
+
228
+ it "should reassign path if type changes" do
229
+ foo = CodeObjects::ClassObject.new(:root, :Foo)
230
+ @store.put('Foo', foo)
231
+ @store.get('Foo').type.should == :class
232
+ @store.paths_for_type(:class).should == ["Foo"]
233
+ foo = CodeObjects::ModuleObject.new(:root, :Foo)
234
+ @store.put('Foo', foo)
235
+ @store.get('Foo').type.should == :module
236
+ @store.paths_for_type(:class).should == []
237
+ @store.paths_for_type(:module).should == ["Foo"]
238
+ end
239
+ end
240
+
241
+ describe '#values_for_type' do
242
+ it "should return all objects with type" do
243
+ @store.put(:abc, @foo)
244
+ @store.values_for_type(@foo.type).should == [@foo]
245
+ end
246
+ end
247
+
201
248
  describe '#load_all' do
202
249
  it "should load the entire database" do
203
250
  foomock = mock(:Foo)
204
251
  barmock = mock(:Bar)
252
+ foomock.stub!(:type).and_return(:class)
253
+ barmock.stub!(:type).and_return(:class)
205
254
  foomock.should_receive(:path).and_return('Foo')
206
255
  barmock.should_receive(:path).and_return('Bar')
207
256
  File.should_receive(:directory?).with('foo').and_return(true)
208
257
  File.should_receive(:file?).with('foo/proxy_types').and_return(false)
258
+ File.should_receive(:file?).with('foo/object_types').and_return(false)
209
259
  File.should_receive(:file?).with('foo/checksums').and_return(false)
210
260
  File.should_receive(:file?).with('foo/objects/root.dat').and_return(false)
211
261
  @store.should_receive(:all_disk_objects).at_least(1).times.and_return(['foo/objects/foo', 'foo/objects/bar'])
@@ -220,7 +270,7 @@ describe YARD::RegistryStore do
220
270
  @store[:Bar].should == barmock
221
271
  end
222
272
  end
223
-
273
+
224
274
  describe '#destroy' do
225
275
  it "should destroy file ending in .yardoc when force=false" do
226
276
  File.should_receive(:file?).with('foo.yardoc').and_return(true)
@@ -244,7 +294,7 @@ describe YARD::RegistryStore do
244
294
  @store.instance_variable_set("@file", 'foo')
245
295
  @store.destroy.should == false
246
296
  end
247
-
297
+
248
298
  it "should destroy any file/dir when force=true" do
249
299
  File.should_receive(:file?).with('foo').and_return(true)
250
300
  File.should_receive(:unlink).with('foo')