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.
- data/.yardopts +10 -2
- data/ChangeLog +1263 -38
- data/LEGAL +5 -5
- data/LICENSE +1 -1
- data/README.md +91 -82
- data/Rakefile +6 -6
- data/benchmarks/builtins_vs_eval.rb +1 -1
- data/benchmarks/erb_vs_erubis.rb +4 -4
- data/benchmarks/generation.rb +5 -5
- data/benchmarks/parsing.rb +2 -2
- data/benchmarks/registry_store_types.rb +48 -0
- data/bin/yard +9 -1
- data/bin/yardoc +9 -1
- data/bin/yri +10 -2
- data/docs/CodeObjects.md +10 -10
- data/docs/GettingStarted.md +85 -83
- data/docs/Handlers.md +21 -21
- data/docs/Overview.md +7 -7
- data/docs/Parser.md +30 -30
- data/docs/Tags.md +250 -554
- data/docs/TagsArch.md +123 -0
- data/docs/Templates.md +58 -80
- data/docs/WhatsNew.md +378 -133
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
- data/docs/templates/default/fulldoc/html/setup.rb +6 -0
- data/docs/templates/default/layout/html/setup.rb +8 -0
- data/docs/templates/default/layout/html/tag_list.erb +11 -0
- data/docs/templates/default/yard_tags/html/list.erb +18 -0
- data/docs/templates/default/yard_tags/html/setup.rb +27 -0
- data/docs/templates/plugin.rb +65 -0
- data/lib/yard.rb +1 -10
- data/lib/yard/autoload.rb +75 -27
- data/lib/yard/cli/command.rb +5 -2
- data/lib/yard/cli/command_parser.rb +3 -2
- data/lib/yard/cli/diff.rb +1 -1
- data/lib/yard/cli/i18n.rb +69 -0
- data/lib/yard/cli/list.rb +1 -1
- data/lib/yard/cli/server.rb +30 -7
- data/lib/yard/cli/stats.rb +5 -6
- data/lib/yard/cli/yardoc.rb +95 -45
- data/lib/yard/cli/yri.rb +24 -3
- data/lib/yard/code_objects/base.rb +35 -4
- data/lib/yard/code_objects/extra_file_object.rb +1 -1
- data/lib/yard/code_objects/macro_object.rb +56 -99
- data/lib/yard/code_objects/method_object.rb +44 -6
- data/lib/yard/config.rb +18 -8
- data/lib/yard/core_ext/symbol_hash.rb +1 -1
- data/lib/yard/docstring.rb +45 -85
- data/lib/yard/docstring_parser.rb +269 -0
- data/lib/yard/handlers/base.rb +129 -118
- data/lib/yard/handlers/c/alias_handler.rb +15 -0
- data/lib/yard/handlers/c/attribute_handler.rb +13 -0
- data/lib/yard/handlers/c/base.rb +110 -0
- data/lib/yard/handlers/c/class_handler.rb +26 -0
- data/lib/yard/handlers/c/constant_handler.rb +12 -0
- data/lib/yard/handlers/c/handler_methods.rb +165 -0
- data/lib/yard/handlers/c/init_handler.rb +16 -0
- data/lib/yard/handlers/c/method_handler.rb +35 -0
- data/lib/yard/handlers/c/mixin_handler.rb +13 -0
- data/lib/yard/handlers/c/module_handler.rb +16 -0
- data/lib/yard/handlers/c/override_comment_handler.rb +22 -0
- data/lib/yard/handlers/c/path_handler.rb +10 -0
- data/lib/yard/handlers/c/struct_handler.rb +12 -0
- data/lib/yard/handlers/c/symbol_handler.rb +7 -0
- data/lib/yard/handlers/processor.rb +41 -30
- data/lib/yard/handlers/ruby/alias_handler.rb +0 -2
- data/lib/yard/handlers/ruby/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/base.rb +10 -6
- data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +71 -0
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +0 -3
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/legacy/base.rb +28 -6
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +0 -2
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
- data/lib/yard/handlers/ruby/method_handler.rb +10 -15
- data/lib/yard/handlers/ruby/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -2
- data/lib/yard/i18n/pot_generator.rb +281 -0
- data/lib/yard/i18n/text.rb +72 -0
- data/lib/yard/logging.rb +3 -7
- data/lib/yard/options.rb +216 -0
- data/lib/yard/parser/c/c_parser.rb +225 -0
- data/lib/yard/parser/c/comment_parser.rb +131 -0
- data/lib/yard/parser/c/statement.rb +63 -0
- data/lib/yard/parser/ruby/ast_node.rb +91 -1
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
- data/lib/yard/parser/ruby/legacy/statement.rb +7 -2
- data/lib/yard/parser/ruby/legacy/statement_list.rb +13 -22
- data/lib/yard/parser/ruby/ruby_parser.rb +87 -26
- data/lib/yard/parser/source_parser.rb +89 -88
- data/lib/yard/rake/yardoc_task.rb +1 -1
- data/lib/yard/registry.rb +21 -10
- data/lib/yard/registry_store.rb +48 -0
- data/lib/yard/serializers/file_system_serializer.rb +18 -20
- data/lib/yard/serializers/yardoc_serializer.rb +1 -0
- data/lib/yard/server/adapter.rb +2 -2
- data/lib/yard/server/commands/base.rb +1 -1
- data/lib/yard/server/commands/display_object_command.rb +13 -6
- data/lib/yard/server/commands/frames_command.rb +4 -21
- data/lib/yard/server/commands/library_command.rb +57 -11
- data/lib/yard/server/commands/list_command.rb +10 -34
- data/lib/yard/server/commands/search_command.rb +8 -2
- data/lib/yard/server/doc_server_helper.rb +34 -0
- data/lib/yard/server/rack_adapter.rb +5 -1
- data/lib/yard/server/router.rb +4 -10
- data/lib/yard/server/static_caching.rb +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/js/live.js +0 -15
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +3 -3
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +1 -1
- data/lib/yard/tags/default_factory.rb +31 -4
- data/lib/yard/tags/directives.rb +593 -0
- data/lib/yard/tags/library.rb +437 -35
- data/lib/yard/templates/engine.rb +17 -12
- data/lib/yard/templates/helpers/base_helper.rb +8 -2
- data/lib/yard/templates/helpers/html_helper.rb +57 -14
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +1 -1
- data/lib/yard/templates/helpers/markup_helper.rb +9 -9
- data/lib/yard/templates/helpers/text_helper.rb +2 -2
- data/lib/yard/templates/template.rb +42 -13
- data/lib/yard/templates/template_options.rb +81 -0
- data/spec/cli/command_parser_spec.rb +4 -4
- data/spec/cli/command_spec.rb +3 -3
- data/spec/cli/config_spec.rb +13 -13
- data/spec/cli/diff_spec.rb +13 -10
- data/spec/cli/gems_spec.rb +12 -12
- data/spec/cli/help_spec.rb +2 -2
- data/spec/cli/i18n_spec.rb +111 -0
- data/spec/cli/server_spec.rb +66 -18
- data/spec/cli/stats_spec.rb +15 -15
- data/spec/cli/yardoc_spec.rb +124 -97
- data/spec/cli/yri_spec.rb +14 -12
- data/spec/code_objects/base_spec.rb +104 -46
- data/spec/code_objects/class_object_spec.rb +33 -33
- data/spec/code_objects/code_object_list_spec.rb +5 -5
- data/spec/code_objects/constants_spec.rb +4 -3
- data/spec/code_objects/extra_file_object_spec.rb +19 -19
- data/spec/code_objects/macro_object_spec.rb +31 -37
- data/spec/code_objects/method_object_spec.rb +46 -23
- data/spec/code_objects/module_object_spec.rb +16 -16
- data/spec/code_objects/namespace_object_spec.rb +6 -6
- data/spec/code_objects/proxy_spec.rb +19 -19
- data/spec/config_spec.rb +33 -24
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/file_spec.rb +8 -8
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/insertion_spec.rb +3 -3
- data/spec/core_ext/module_spec.rb +1 -1
- data/spec/core_ext/string_spec.rb +6 -6
- data/spec/core_ext/symbol_hash_spec.rb +11 -11
- data/spec/docstring_parser_spec.rb +207 -0
- data/spec/docstring_spec.rb +33 -146
- data/spec/handlers/alias_handler_spec.rb +14 -14
- data/spec/handlers/attribute_handler_spec.rb +20 -20
- data/spec/handlers/base_spec.rb +16 -16
- data/spec/handlers/c/alias_handler_spec.rb +33 -0
- data/spec/handlers/c/attribute_handler_spec.rb +40 -0
- data/spec/handlers/c/class_handler_spec.rb +64 -0
- data/spec/handlers/c/constant_handler_spec.rb +68 -0
- data/spec/handlers/c/init_handler_spec.rb +36 -0
- data/spec/handlers/c/method_handler_spec.rb +228 -0
- data/spec/handlers/c/mixin_handler_spec.rb +27 -0
- data/spec/handlers/c/module_handler_spec.rb +38 -0
- data/spec/handlers/c/override_comment_handler_spec.rb +43 -0
- data/spec/handlers/c/path_handler_spec.rb +35 -0
- data/spec/handlers/c/spec_helper.rb +11 -0
- data/spec/handlers/c/struct_handler_spec.rb +15 -0
- data/spec/handlers/class_condition_handler_spec.rb +10 -10
- data/spec/handlers/class_handler_spec.rb +38 -38
- data/spec/handlers/class_variable_handler_spec.rb +1 -1
- data/spec/handlers/constant_handler_spec.rb +7 -7
- data/spec/handlers/{macro_handler_spec.rb → dsl_handler_spec.rb} +72 -53
- data/spec/handlers/examples/alias_handler_001.rb.txt +5 -5
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/class_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/dsl_handler_001.rb.txt +110 -0
- data/spec/handlers/examples/exception_handler_001.rb.txt +14 -14
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +2 -2
- data/spec/handlers/examples/method_handler_001.rb.txt +16 -16
- data/spec/handlers/examples/mixin_handler_001.rb.txt +8 -4
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/visibility_handler_001.rb.txt +3 -3
- data/spec/handlers/examples/yield_handler_001.rb.txt +13 -14
- data/spec/handlers/exception_handler_spec.rb +9 -9
- data/spec/handlers/extend_handler_spec.rb +2 -2
- data/spec/handlers/legacy_base_spec.rb +34 -34
- data/spec/handlers/method_condition_handler_spec.rb +2 -2
- data/spec/handlers/method_handler_spec.rb +33 -33
- data/spec/handlers/mixin_handler_spec.rb +13 -9
- data/spec/handlers/module_function_handler_spec.rb +82 -0
- data/spec/handlers/module_handler_spec.rb +6 -6
- data/spec/handlers/private_constant_handler_spec.rb +3 -3
- data/spec/handlers/processor_spec.rb +5 -5
- data/spec/handlers/ruby/base_spec.rb +10 -6
- data/spec/handlers/ruby/legacy/base_spec.rb +11 -7
- data/spec/handlers/spec_helper.rb +2 -3
- data/spec/handlers/visibility_handler_spec.rb +6 -6
- data/spec/handlers/yield_handler_spec.rb +8 -8
- data/spec/i18n/pot_generator_spec.rb +244 -0
- data/spec/i18n/text_spec.rb +69 -0
- data/spec/options_spec.rb +160 -0
- data/spec/parser/base_spec.rb +3 -3
- data/spec/parser/c_parser_spec.rb +31 -257
- data/spec/parser/examples/array.c.txt +187 -187
- data/spec/parser/examples/extrafile.c.txt +1 -1
- data/spec/parser/examples/override.c.txt +1 -1
- data/spec/parser/ruby/ast_node_spec.rb +1 -1
- data/spec/parser/ruby/legacy/statement_list_spec.rb +24 -24
- data/spec/parser/ruby/legacy/token_list_spec.rb +7 -7
- data/spec/parser/ruby/ruby_parser_spec.rb +56 -34
- data/spec/parser/source_parser_spec.rb +125 -65
- data/spec/parser/tag_parsing_spec.rb +4 -4
- data/spec/rake/yardoc_task_spec.rb +10 -8
- data/spec/registry_spec.rb +65 -36
- data/spec/registry_store_spec.rb +90 -40
- data/spec/serializers/file_system_serializer_spec.rb +12 -12
- data/spec/serializers/yardoc_serializer_spec.rb +2 -2
- data/spec/server/adapter_spec.rb +3 -3
- data/spec/server/commands/base_spec.rb +8 -8
- data/spec/server/commands/library_command_spec.rb +3 -3
- data/spec/server/commands/static_file_command_spec.rb +7 -7
- data/spec/server/doc_server_helper_spec.rb +1 -1
- data/spec/server/doc_server_serializer_spec.rb +6 -6
- data/spec/server/rack_adapter_spec.rb +3 -3
- data/spec/server/router_spec.rb +19 -19
- data/spec/server/static_caching_spec.rb +4 -4
- data/spec/spec_helper.rb +7 -7
- data/spec/tags/default_factory_spec.rb +24 -16
- data/spec/tags/directives_spec.rb +422 -0
- data/spec/tags/library_spec.rb +15 -4
- data/spec/tags/overload_tag_spec.rb +6 -6
- data/spec/tags/ref_tag_list_spec.rb +8 -8
- data/spec/templates/class_spec.rb +7 -7
- data/spec/templates/constant_spec.rb +7 -7
- data/spec/templates/engine_spec.rb +28 -36
- data/spec/templates/examples/class001.html +108 -108
- data/spec/templates/examples/class002.html +17 -17
- data/spec/templates/examples/constant001.txt +1 -1
- data/spec/templates/examples/method001.html +45 -45
- data/spec/templates/examples/method002.html +25 -25
- data/spec/templates/examples/method003.html +60 -60
- data/spec/templates/examples/method004.html +7 -7
- data/spec/templates/examples/method005.html +28 -28
- data/spec/templates/examples/module001.html +321 -321
- data/spec/templates/examples/module001.txt +1 -1
- data/spec/templates/examples/module002.html +130 -130
- data/spec/templates/examples/module003.html +74 -74
- data/spec/templates/examples/module004.html +388 -0
- data/spec/templates/helpers/base_helper_spec.rb +32 -32
- data/spec/templates/helpers/html_helper_spec.rb +87 -68
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +9 -9
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +16 -16
- data/spec/templates/helpers/markup_helper_spec.rb +31 -28
- data/spec/templates/helpers/method_helper_spec.rb +7 -7
- data/spec/templates/helpers/shared_signature_examples.rb +9 -7
- data/spec/templates/helpers/text_helper_spec.rb +3 -3
- data/spec/templates/method_spec.rb +13 -13
- data/spec/templates/module_spec.rb +70 -24
- data/spec/templates/onefile_spec.rb +32 -15
- data/spec/templates/section_spec.rb +23 -23
- data/spec/templates/spec_helper.rb +31 -1
- data/spec/templates/tag_spec.rb +5 -5
- data/spec/templates/template_spec.rb +54 -46
- data/spec/verifier_spec.rb +5 -5
- data/templates/default/class/setup.rb +2 -2
- data/templates/default/docstring/html/abstract.erb +1 -1
- data/templates/default/docstring/html/note.erb +1 -1
- data/templates/default/docstring/html/private.erb +1 -1
- data/templates/default/docstring/html/todo.erb +1 -1
- data/templates/default/docstring/setup.rb +2 -2
- data/templates/default/fulldoc/html/css/full_list.css +4 -2
- data/templates/default/fulldoc/html/css/style.css +50 -44
- data/templates/default/fulldoc/html/frames.erb +21 -6
- data/templates/default/fulldoc/html/full_list.erb +5 -3
- data/templates/default/fulldoc/html/{full_list_files.erb → full_list_file.erb} +0 -0
- data/templates/default/fulldoc/html/js/app.js +29 -26
- data/templates/default/fulldoc/html/js/full_list.js +9 -9
- data/templates/default/fulldoc/html/js/jquery.js +4 -16
- data/templates/default/fulldoc/html/setup.rb +42 -38
- data/templates/default/layout/dot/header.erb +1 -1
- data/templates/default/layout/html/breadcrumb.erb +6 -6
- data/templates/default/layout/html/files.erb +1 -1
- data/templates/default/layout/html/footer.erb +1 -1
- data/templates/default/layout/html/headers.erb +3 -6
- data/templates/default/layout/html/index.erb +1 -1
- data/templates/default/layout/html/layout.erb +3 -7
- data/templates/default/layout/html/objects.erb +1 -1
- data/templates/default/layout/html/script_setup.erb +5 -0
- data/templates/default/layout/html/search.erb +4 -1
- data/templates/default/layout/html/setup.rb +8 -8
- data/templates/default/method_details/html/method_signature.erb +10 -3
- data/templates/default/method_details/setup.rb +1 -0
- data/templates/default/module/dot/info.erb +1 -1
- data/templates/default/module/dot/setup.rb +2 -2
- data/templates/default/module/html/attribute_details.erb +1 -1
- data/templates/default/module/html/children.erb +1 -1
- data/templates/default/module/html/defines.erb +1 -1
- data/templates/default/module/html/inherited_methods.erb +5 -4
- data/templates/default/module/html/item_summary.erb +15 -5
- data/templates/default/module/html/method_details_list.erb +2 -2
- data/templates/default/module/setup.rb +25 -12
- data/templates/default/module/text/setup.rb +1 -1
- data/templates/default/onefile/html/layout.erb +1 -1
- data/templates/default/onefile/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +4 -2
- data/templates/default/tags/html/option.erb +1 -1
- data/templates/default/tags/html/overload.erb +1 -1
- data/templates/default/tags/html/see.erb +1 -1
- data/templates/default/tags/html/tag.erb +1 -1
- data/templates/default/tags/setup.rb +4 -3
- data/templates/guide/fulldoc/html/css/style.css +8 -8
- data/templates/guide/fulldoc/html/js/app.js +6 -6
- data/templates/guide/fulldoc/html/setup.rb +12 -12
- data/templates/guide/layout/html/layout.erb +11 -11
- data/templates/guide/layout/html/setup.rb +9 -9
- data/templates/guide/method/html/header.erb +2 -2
- data/templates/guide/method/html/setup.rb +1 -1
- metadata +68 -18
- data/bin/yard-graph +0 -4
- data/bin/yard-server +0 -4
- data/docs/Glossary.md +0 -12
- data/lib/yard/handlers/ruby/legacy/macro_handler.rb +0 -39
- data/lib/yard/handlers/ruby/macro_handler.rb +0 -40
- data/lib/yard/handlers/ruby/macro_handler_methods.rb +0 -131
- data/lib/yard/parser/c_parser.rb +0 -497
- data/lib/yard/server/templates/default/layout/html/headers.erb +0 -16
- data/lib/yard/server/templates/doc_server/frames/html/frames.erb +0 -13
- data/lib/yard/server/templates/doc_server/frames/html/setup.rb +0 -3
- data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +0 -34
- data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +0 -20
- 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
|
data/spec/registry_spec.rb
CHANGED
@@ -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
|
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
|
data/spec/registry_store_spec.rb
CHANGED
@@ -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
|
-
|
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 ==
|
19
|
-
@store.get('A').should ==
|
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(
|
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 ==
|
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] =
|
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,
|
155
|
-
@store.get(:YARD).should ==
|
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('',
|
160
|
-
@store.get(:root).should ==
|
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,
|
167
|
-
@store.get(:YARD).should ==
|
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(
|
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 ==
|
178
|
-
@store.get(:YARD).should ==
|
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')
|