rdoc 4.2.1 → 6.3.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rdoc might be problematic. Click here for more details.

Files changed (277) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +8 -7
  3. data/Gemfile +12 -0
  4. data/History.rdoc +48 -4
  5. data/LEGAL.rdoc +2 -2
  6. data/README.rdoc +5 -5
  7. data/Rakefile +73 -155
  8. data/bin/console +7 -0
  9. data/bin/setup +6 -0
  10. data/{bin → exe}/rdoc +0 -0
  11. data/{bin → exe}/ri +0 -0
  12. data/lib/rdoc/alias.rb +1 -0
  13. data/lib/rdoc/anon_class.rb +1 -0
  14. data/lib/rdoc/any_method.rb +59 -14
  15. data/lib/rdoc/attr.rb +1 -0
  16. data/lib/rdoc/class_module.rb +5 -2
  17. data/lib/rdoc/code_object.rb +3 -11
  18. data/lib/rdoc/code_objects.rb +1 -0
  19. data/lib/rdoc/comment.rb +32 -11
  20. data/lib/rdoc/constant.rb +3 -2
  21. data/lib/rdoc/context/section.rb +7 -13
  22. data/lib/rdoc/context.rb +78 -23
  23. data/lib/rdoc/cross_reference.rb +33 -14
  24. data/lib/rdoc/encoding.rb +92 -55
  25. data/lib/rdoc/erb_partial.rb +2 -1
  26. data/lib/rdoc/erbio.rb +8 -3
  27. data/lib/rdoc/extend.rb +1 -0
  28. data/lib/rdoc/generator/darkfish.rb +62 -32
  29. data/lib/rdoc/generator/json_index.rb +8 -5
  30. data/lib/rdoc/generator/markup.rb +3 -12
  31. data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  32. data/lib/rdoc/generator/pot/po.rb +84 -0
  33. data/lib/rdoc/generator/pot/po_entry.rb +141 -0
  34. data/lib/rdoc/generator/pot.rb +4 -3
  35. data/lib/rdoc/generator/ri.rb +1 -0
  36. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
  37. data/lib/rdoc/generator/template/darkfish/_head.rhtml +11 -8
  38. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
  39. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
  40. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  41. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
  49. data/lib/rdoc/generator/template/darkfish/class.rhtml +45 -47
  50. data/lib/rdoc/generator/template/darkfish/css/fonts.css +6 -6
  51. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +55 -6
  52. data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
  53. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +23 -100
  54. data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
  55. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
  56. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
  57. data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -41
  58. data/lib/rdoc/generator/template/json_index/js/searcher.js +7 -6
  59. data/lib/rdoc/generator.rb +1 -1
  60. data/lib/rdoc/ghost_method.rb +1 -0
  61. data/lib/rdoc/i18n/locale.rb +2 -1
  62. data/lib/rdoc/i18n/text.rb +5 -4
  63. data/lib/rdoc/i18n.rb +3 -2
  64. data/lib/rdoc/include.rb +1 -0
  65. data/lib/rdoc/known_classes.rb +1 -0
  66. data/lib/rdoc/markdown/entities.rb +1 -0
  67. data/lib/rdoc/markdown/{literals_1_9.kpeg → literals.kpeg} +1 -0
  68. data/lib/rdoc/markdown/{literals_1_9.rb → literals.rb} +1 -4
  69. data/lib/rdoc/markdown.kpeg +94 -51
  70. data/lib/rdoc/markdown.rb +1171 -619
  71. data/lib/rdoc/markup/attr_changer.rb +1 -0
  72. data/lib/rdoc/markup/attr_span.rb +9 -2
  73. data/lib/rdoc/markup/attribute_manager.rb +115 -49
  74. data/lib/rdoc/markup/attributes.rb +7 -6
  75. data/lib/rdoc/markup/blank_line.rb +1 -0
  76. data/lib/rdoc/markup/block_quote.rb +1 -0
  77. data/lib/rdoc/markup/document.rb +1 -0
  78. data/lib/rdoc/markup/formatter.rb +25 -23
  79. data/lib/rdoc/markup/hard_break.rb +1 -0
  80. data/lib/rdoc/markup/heading.rb +4 -3
  81. data/lib/rdoc/markup/include.rb +1 -0
  82. data/lib/rdoc/markup/indented_paragraph.rb +1 -0
  83. data/lib/rdoc/markup/list.rb +1 -0
  84. data/lib/rdoc/markup/list_item.rb +1 -0
  85. data/lib/rdoc/markup/paragraph.rb +1 -0
  86. data/lib/rdoc/markup/parser.rb +78 -61
  87. data/lib/rdoc/markup/pre_process.rb +12 -9
  88. data/lib/rdoc/markup/raw.rb +1 -0
  89. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  90. data/lib/rdoc/markup/rule.rb +1 -0
  91. data/lib/rdoc/markup/to_ansi.rb +1 -0
  92. data/lib/rdoc/markup/to_bs.rb +4 -5
  93. data/lib/rdoc/markup/to_html.rb +71 -25
  94. data/lib/rdoc/markup/to_html_crossref.rb +41 -25
  95. data/lib/rdoc/markup/to_html_snippet.rb +10 -9
  96. data/lib/rdoc/markup/to_joined_paragraph.rb +7 -31
  97. data/lib/rdoc/markup/to_label.rb +10 -9
  98. data/lib/rdoc/markup/to_markdown.rb +9 -8
  99. data/lib/rdoc/markup/to_rdoc.rb +35 -6
  100. data/lib/rdoc/markup/to_table_of_contents.rb +2 -0
  101. data/lib/rdoc/markup/to_test.rb +1 -0
  102. data/lib/rdoc/markup/to_tt_only.rb +3 -2
  103. data/lib/rdoc/markup/verbatim.rb +1 -0
  104. data/lib/rdoc/markup.rb +14 -16
  105. data/lib/rdoc/meta_method.rb +1 -0
  106. data/lib/rdoc/method_attr.rb +2 -1
  107. data/lib/rdoc/mixin.rb +1 -0
  108. data/lib/rdoc/normal_class.rb +3 -2
  109. data/lib/rdoc/normal_module.rb +1 -0
  110. data/lib/rdoc/options.rb +92 -58
  111. data/lib/rdoc/parser/c.rb +219 -223
  112. data/lib/rdoc/parser/changelog.rb +155 -18
  113. data/lib/rdoc/parser/markdown.rb +1 -0
  114. data/lib/rdoc/parser/rd.rb +1 -0
  115. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  116. data/lib/rdoc/parser/ruby.rb +635 -468
  117. data/lib/rdoc/parser/ruby_tools.rb +33 -33
  118. data/lib/rdoc/parser/simple.rb +3 -3
  119. data/lib/rdoc/parser/text.rb +1 -0
  120. data/lib/rdoc/parser.rb +17 -50
  121. data/lib/rdoc/rd/block_parser.rb +66 -65
  122. data/lib/rdoc/rd/block_parser.ry +3 -3
  123. data/lib/rdoc/rd/inline.rb +5 -4
  124. data/lib/rdoc/rd/inline_parser.rb +52 -51
  125. data/lib/rdoc/rd/inline_parser.ry +1 -1
  126. data/lib/rdoc/rd.rb +1 -0
  127. data/lib/rdoc/rdoc.rb +68 -63
  128. data/lib/rdoc/require.rb +1 -0
  129. data/lib/rdoc/ri/driver.rb +133 -58
  130. data/lib/rdoc/ri/formatter.rb +1 -0
  131. data/lib/rdoc/ri/paths.rb +4 -20
  132. data/lib/rdoc/ri/store.rb +1 -0
  133. data/lib/rdoc/ri/task.rb +71 -0
  134. data/lib/rdoc/ri.rb +1 -0
  135. data/lib/rdoc/rubygems_hook.rb +5 -12
  136. data/lib/rdoc/servlet.rb +24 -14
  137. data/lib/rdoc/single_class.rb +1 -0
  138. data/lib/rdoc/stats/normal.rb +20 -21
  139. data/lib/rdoc/stats/quiet.rb +1 -0
  140. data/lib/rdoc/stats/verbose.rb +1 -0
  141. data/lib/rdoc/stats.rb +1 -0
  142. data/lib/rdoc/store.rb +41 -41
  143. data/lib/rdoc/task.rb +2 -3
  144. data/lib/rdoc/text.rb +19 -38
  145. data/lib/rdoc/token_stream.rb +56 -32
  146. data/lib/rdoc/tom_doc.rb +17 -11
  147. data/lib/rdoc/top_level.rb +9 -2
  148. data/lib/rdoc/version.rb +8 -0
  149. data/lib/rdoc.rb +24 -10
  150. data/man/ri.1 +247 -0
  151. data/rdoc.gemspec +248 -0
  152. metadata +43 -236
  153. data/.autotest +0 -24
  154. data/.document +0 -5
  155. data/Manifest.txt +0 -306
  156. data/lib/gauntlet_rdoc.rb +0 -84
  157. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
  158. data/lib/rdoc/markdown/literals_1_8.kpeg +0 -18
  159. data/lib/rdoc/markdown/literals_1_8.rb +0 -416
  160. data/lib/rdoc/markup/formatter_test_case.rb +0 -767
  161. data/lib/rdoc/markup/inline.rb +0 -1
  162. data/lib/rdoc/markup/special.rb +0 -40
  163. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -114
  164. data/lib/rdoc/ruby_lex.rb +0 -1377
  165. data/lib/rdoc/ruby_token.rb +0 -460
  166. data/lib/rdoc/test_case.rb +0 -217
  167. data/test/MarkdownTest_1.0.3/Amps and angle encoding.text +0 -21
  168. data/test/MarkdownTest_1.0.3/Auto links.text +0 -13
  169. data/test/MarkdownTest_1.0.3/Backslash escapes.text +0 -120
  170. data/test/MarkdownTest_1.0.3/Blockquotes with code blocks.text +0 -11
  171. data/test/MarkdownTest_1.0.3/Code Blocks.text +0 -14
  172. data/test/MarkdownTest_1.0.3/Code Spans.text +0 -6
  173. data/test/MarkdownTest_1.0.3/Hard-wrapped paragraphs with list-like lines.text +0 -8
  174. data/test/MarkdownTest_1.0.3/Horizontal rules.text +0 -67
  175. data/test/MarkdownTest_1.0.3/Inline HTML (Advanced).text +0 -15
  176. data/test/MarkdownTest_1.0.3/Inline HTML (Simple).text +0 -69
  177. data/test/MarkdownTest_1.0.3/Inline HTML comments.text +0 -13
  178. data/test/MarkdownTest_1.0.3/Links, inline style.text +0 -12
  179. data/test/MarkdownTest_1.0.3/Links, reference style.text +0 -71
  180. data/test/MarkdownTest_1.0.3/Links, shortcut references.text +0 -20
  181. data/test/MarkdownTest_1.0.3/Literal quotes in titles.text +0 -7
  182. data/test/MarkdownTest_1.0.3/Markdown Documentation - Basics.text +0 -306
  183. data/test/MarkdownTest_1.0.3/Markdown Documentation - Syntax.text +0 -888
  184. data/test/MarkdownTest_1.0.3/Nested blockquotes.text +0 -5
  185. data/test/MarkdownTest_1.0.3/Ordered and unordered lists.text +0 -131
  186. data/test/MarkdownTest_1.0.3/Strong and em together.text +0 -7
  187. data/test/MarkdownTest_1.0.3/Tabs.text +0 -21
  188. data/test/MarkdownTest_1.0.3/Tidyness.text +0 -5
  189. data/test/README +0 -1
  190. data/test/binary.dat +0 -0
  191. data/test/hidden.zip.txt +0 -1
  192. data/test/test.ja.largedoc +0 -3
  193. data/test/test.ja.rdoc +0 -10
  194. data/test/test.ja.txt +0 -8
  195. data/test/test.txt +0 -1
  196. data/test/test_rdoc_alias.rb +0 -13
  197. data/test/test_rdoc_any_method.rb +0 -460
  198. data/test/test_rdoc_attr.rb +0 -190
  199. data/test/test_rdoc_class_module.rb +0 -1492
  200. data/test/test_rdoc_code_object.rb +0 -450
  201. data/test/test_rdoc_comment.rb +0 -504
  202. data/test/test_rdoc_constant.rb +0 -181
  203. data/test/test_rdoc_context.rb +0 -901
  204. data/test/test_rdoc_context_section.rb +0 -130
  205. data/test/test_rdoc_cross_reference.rb +0 -192
  206. data/test/test_rdoc_encoding.rb +0 -227
  207. data/test/test_rdoc_extend.rb +0 -94
  208. data/test/test_rdoc_generator_darkfish.rb +0 -229
  209. data/test/test_rdoc_generator_json_index.rb +0 -324
  210. data/test/test_rdoc_generator_markup.rb +0 -59
  211. data/test/test_rdoc_generator_pot.rb +0 -91
  212. data/test/test_rdoc_generator_pot_po.rb +0 -51
  213. data/test/test_rdoc_generator_pot_po_entry.rb +0 -139
  214. data/test/test_rdoc_generator_ri.rb +0 -78
  215. data/test/test_rdoc_i18n_locale.rb +0 -73
  216. data/test/test_rdoc_i18n_text.rb +0 -123
  217. data/test/test_rdoc_include.rb +0 -108
  218. data/test/test_rdoc_markdown.rb +0 -980
  219. data/test/test_rdoc_markdown_test.rb +0 -1884
  220. data/test/test_rdoc_markup.rb +0 -95
  221. data/test/test_rdoc_markup_attribute_manager.rb +0 -364
  222. data/test/test_rdoc_markup_attributes.rb +0 -39
  223. data/test/test_rdoc_markup_document.rb +0 -207
  224. data/test/test_rdoc_markup_formatter.rb +0 -175
  225. data/test/test_rdoc_markup_hard_break.rb +0 -31
  226. data/test/test_rdoc_markup_heading.rb +0 -29
  227. data/test/test_rdoc_markup_include.rb +0 -19
  228. data/test/test_rdoc_markup_indented_paragraph.rb +0 -53
  229. data/test/test_rdoc_markup_paragraph.rb +0 -32
  230. data/test/test_rdoc_markup_parser.rb +0 -1680
  231. data/test/test_rdoc_markup_pre_process.rb +0 -473
  232. data/test/test_rdoc_markup_raw.rb +0 -22
  233. data/test/test_rdoc_markup_to_ansi.rb +0 -369
  234. data/test/test_rdoc_markup_to_bs.rb +0 -366
  235. data/test/test_rdoc_markup_to_html.rb +0 -662
  236. data/test/test_rdoc_markup_to_html_crossref.rb +0 -225
  237. data/test/test_rdoc_markup_to_html_snippet.rb +0 -711
  238. data/test/test_rdoc_markup_to_joined_paragraph.rb +0 -32
  239. data/test/test_rdoc_markup_to_label.rb +0 -112
  240. data/test/test_rdoc_markup_to_markdown.rb +0 -389
  241. data/test/test_rdoc_markup_to_rdoc.rb +0 -377
  242. data/test/test_rdoc_markup_to_table_of_contents.rb +0 -126
  243. data/test/test_rdoc_markup_to_tt_only.rb +0 -246
  244. data/test/test_rdoc_markup_verbatim.rb +0 -29
  245. data/test/test_rdoc_method_attr.rb +0 -193
  246. data/test/test_rdoc_normal_class.rb +0 -47
  247. data/test/test_rdoc_normal_module.rb +0 -42
  248. data/test/test_rdoc_options.rb +0 -766
  249. data/test/test_rdoc_parser.rb +0 -327
  250. data/test/test_rdoc_parser_c.rb +0 -1896
  251. data/test/test_rdoc_parser_changelog.rb +0 -315
  252. data/test/test_rdoc_parser_markdown.rb +0 -61
  253. data/test/test_rdoc_parser_rd.rb +0 -55
  254. data/test/test_rdoc_parser_ruby.rb +0 -3322
  255. data/test/test_rdoc_parser_simple.rb +0 -115
  256. data/test/test_rdoc_rd.rb +0 -30
  257. data/test/test_rdoc_rd_block_parser.rb +0 -535
  258. data/test/test_rdoc_rd_inline.rb +0 -63
  259. data/test/test_rdoc_rd_inline_parser.rb +0 -177
  260. data/test/test_rdoc_rdoc.rb +0 -455
  261. data/test/test_rdoc_require.rb +0 -25
  262. data/test/test_rdoc_ri_driver.rb +0 -1436
  263. data/test/test_rdoc_ri_paths.rb +0 -155
  264. data/test/test_rdoc_ruby_lex.rb +0 -421
  265. data/test/test_rdoc_ruby_token.rb +0 -19
  266. data/test/test_rdoc_rubygems_hook.rb +0 -251
  267. data/test/test_rdoc_servlet.rb +0 -534
  268. data/test/test_rdoc_single_class.rb +0 -20
  269. data/test/test_rdoc_stats.rb +0 -722
  270. data/test/test_rdoc_store.rb +0 -993
  271. data/test/test_rdoc_task.rb +0 -173
  272. data/test/test_rdoc_text.rb +0 -557
  273. data/test/test_rdoc_token_stream.rb +0 -42
  274. data/test/test_rdoc_tom_doc.rb +0 -520
  275. data/test/test_rdoc_top_level.rb +0 -287
  276. data/test/xref_data.rb +0 -76
  277. data/test/xref_test_case.rb +0 -67
@@ -1,993 +0,0 @@
1
- require File.expand_path '../xref_test_case', __FILE__
2
-
3
- class TestRDocStore < XrefTestCase
4
-
5
- OBJECT_ANCESTORS = defined?(::BasicObject) ? %w[BasicObject] : []
6
-
7
- def setup
8
- super
9
-
10
- @tmpdir = File.join Dir.tmpdir, "test_rdoc_ri_store_#{$$}"
11
- @s = RDoc::RI::Store.new @tmpdir
12
- @s.rdoc = @rdoc
13
-
14
- @top_level = @s.add_file 'file.rb'
15
-
16
- @page = @s.add_file 'README.txt'
17
- @page.parser = RDoc::Parser::Simple
18
- @page.comment = RDoc::Comment.new 'This is a page', @page
19
-
20
- @klass = @top_level.add_class RDoc::NormalClass, 'Object'
21
- @klass.add_comment 'original', @top_level
22
- @klass.record_location @top_level
23
-
24
- @cmeth = RDoc::AnyMethod.new nil, 'cmethod'
25
- @cmeth.singleton = true
26
- @cmeth.record_location @top_level
27
-
28
- @meth_comment = RDoc::Comment.new 'method comment'
29
- @meth_comment.location = @top_level
30
-
31
- @meth = RDoc::AnyMethod.new nil, 'method'
32
- @meth.record_location @top_level
33
- @meth.comment = @meth_comment
34
-
35
- @meth_bang = RDoc::AnyMethod.new nil, 'method!'
36
- @meth_bang.record_location @top_level
37
-
38
- @meth_bang_alias = RDoc::Alias.new nil, 'method!', 'method_bang', ''
39
- @meth_bang_alias.record_location @top_level
40
-
41
- @meth_bang.add_alias @meth_bang_alias, @klass
42
-
43
- @attr_comment = RDoc::Comment.new 'attribute comment'
44
- @attr_comment.location = @top_level
45
-
46
- @attr = RDoc::Attr.new nil, 'attr', 'RW', ''
47
- @attr.record_location @top_level
48
- @attr.comment = @attr_comment
49
-
50
- @klass.add_method @cmeth
51
- @klass.add_method @meth
52
- @klass.add_method @meth_bang
53
- @klass.add_attribute @attr
54
-
55
- @nest_klass = @klass.add_class RDoc::NormalClass, 'SubClass'
56
- @nest_meth = RDoc::AnyMethod.new nil, 'method'
57
- @nest_meth.record_location @top_level
58
-
59
- @nest_incl = RDoc::Include.new 'Incl', ''
60
- @nest_incl.record_location @top_level
61
-
62
- @nest_klass.add_method @nest_meth
63
- @nest_klass.add_include @nest_incl
64
-
65
- @mod = @top_level.add_module RDoc::NormalModule, 'Mod'
66
- @mod.record_location @top_level
67
- end
68
-
69
- def teardown
70
- super
71
-
72
- FileUtils.rm_rf @tmpdir
73
- end
74
-
75
- def assert_cache imethods, cmethods, attrs, modules,
76
- ancestors = {}, pages = [], main = nil, title = nil
77
- imethods ||= { 'Object' => %w[method method! method_bang] }
78
- cmethods ||= { 'Object' => %w[cmethod] }
79
- attrs ||= { 'Object' => ['attr_accessor attr'] }
80
-
81
- # this is sort-of a hack
82
- @s.clean_cache_collection ancestors
83
-
84
- expected = {
85
- :ancestors => ancestors,
86
- :attributes => attrs,
87
- :class_methods => cmethods,
88
- :c_class_variables => {},
89
- :c_singleton_class_variables => {},
90
- :encoding => nil,
91
- :instance_methods => imethods,
92
- :modules => modules,
93
- :pages => pages,
94
- :main => main,
95
- :title => title,
96
- }
97
-
98
- @s.save_cache
99
-
100
- assert_equal expected, @s.cache
101
- end
102
-
103
- def test_add_c_enclosure
104
- @s.add_c_enclosure 'cC1', @c1
105
-
106
- expected = { 'cC1' => @c1 }
107
-
108
- assert_equal expected, @s.c_enclosure_classes
109
- end
110
-
111
- def test_add_c_variables
112
- options = RDoc::Options.new
113
-
114
- c_file = @s.add_file 'ext.c'
115
-
116
- some_ext = c_file.add_class RDoc::NormalClass, 'SomeExt'
117
- c_file.add_class RDoc::SingleClass, 'SomeExtSingle'
118
-
119
- c_parser = RDoc::Parser::C.new c_file, 'ext.c', '', options, nil
120
-
121
- c_parser.classes['cSomeExt'] = some_ext
122
- c_parser.singleton_classes['s_cSomeExt'] = 'SomeExtSingle'
123
-
124
- @s.add_c_variables c_parser
125
-
126
- expected = { 'ext.c' => { 'cSomeExt' => 'SomeExt' } }
127
-
128
- assert_equal expected, @s.c_class_variables
129
-
130
- expected = { 'ext.c' => { 's_cSomeExt' => 'SomeExtSingle' } }
131
-
132
- assert_equal expected, @s.c_singleton_class_variables
133
- end
134
-
135
- def test_add_file
136
- top_level = @store.add_file 'file.rb'
137
-
138
- assert_kind_of RDoc::TopLevel, top_level
139
- assert_equal @store, top_level.store
140
- assert_equal 'file.rb', top_level.name
141
- assert_includes @store.all_files, top_level
142
-
143
- assert_same top_level, @store.add_file('file.rb')
144
- refute_same top_level, @store.add_file('other.rb')
145
- end
146
-
147
- def test_add_file_relative
148
- top_level = @store.add_file 'path/file.rb', 'file.rb'
149
-
150
- assert_kind_of RDoc::TopLevel, top_level
151
- assert_equal @store, top_level.store
152
-
153
- assert_equal 'path/file.rb', top_level.absolute_name
154
- assert_equal 'file.rb', top_level.relative_name
155
-
156
- assert_includes @store.all_files, top_level
157
-
158
- assert_same top_level, @store.add_file('file.rb')
159
- refute_same top_level, @store.add_file('other.rb')
160
- end
161
-
162
- def test_all_classes_and_modules
163
- expected = %w[
164
- C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1
165
- Child
166
- M1 M1::M2
167
- Parent
168
- ]
169
-
170
- assert_equal expected,
171
- @store.all_classes_and_modules.map { |m| m.full_name }.sort
172
- end
173
-
174
- def test_all_files
175
- assert_equal %w[xref_data.rb],
176
- @store.all_files.map { |m| m.full_name }.sort
177
- end
178
-
179
- def test_all_modules
180
- assert_equal %w[M1 M1::M2],
181
- @store.all_modules.map { |m| m.full_name }.sort
182
- end
183
-
184
- def test_attributes
185
- @s.cache[:attributes]['Object'] = %w[attr]
186
-
187
- expected = { 'Object' => %w[attr] }
188
-
189
- assert_equal expected, @s.attributes
190
- end
191
-
192
- def test_class_file
193
- assert_equal File.join(@tmpdir, 'Object', 'cdesc-Object.ri'),
194
- @s.class_file('Object')
195
- assert_equal File.join(@tmpdir, 'Object', 'SubClass', 'cdesc-SubClass.ri'),
196
- @s.class_file('Object::SubClass')
197
- end
198
-
199
- def test_class_methods
200
- @s.cache[:class_methods]['Object'] = %w[method]
201
-
202
- expected = { 'Object' => %w[method] }
203
-
204
- assert_equal expected, @s.class_methods
205
- end
206
-
207
- def test_class_path
208
- assert_equal File.join(@tmpdir, 'Object'), @s.class_path('Object')
209
- assert_equal File.join(@tmpdir, 'Object', 'SubClass'),
210
- @s.class_path('Object::SubClass')
211
- end
212
-
213
- def test_classes
214
- expected = %w[
215
- C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1
216
- Child
217
- Parent
218
- ]
219
-
220
- assert_equal expected, @store.all_classes.map { |m| m.full_name }.sort
221
- end
222
-
223
- def test_complete
224
- @c2.add_module_alias @c2_c3, 'A1', @top_level
225
-
226
- @store.complete :public
227
-
228
- a1 = @xref_data.find_class_or_module 'C2::A1'
229
-
230
- assert_equal 'C2::A1', a1.full_name
231
- refute_empty a1.aliases
232
- end
233
-
234
- def test_complete_nodoc
235
- c_nodoc = @top_level.add_class RDoc::NormalClass, 'Nodoc'
236
- c_nodoc.record_location @top_level
237
- c_nodoc.document_self = nil
238
-
239
- @s.complete :nodoc
240
-
241
- assert_includes @s.classes_hash.keys, 'Nodoc'
242
- end
243
-
244
- def test_find_c_enclosure
245
- assert_nil @s.find_c_enclosure 'cC1'
246
-
247
- @s.add_c_enclosure 'cC1', @c1
248
-
249
- assert_equal @c1, @s.find_c_enclosure('cC1')
250
- end
251
-
252
- def test_find_c_enclosure_from_cache
253
- @s.save_class @klass
254
- @s.classes_hash.clear
255
-
256
- assert_nil @s.find_c_enclosure 'cObject'
257
-
258
- @s.c_enclosure_names['cObject'] = 'Object'
259
-
260
- klass = @s.find_c_enclosure('cObject')
261
- assert_equal @klass, klass
262
-
263
- assert_empty klass.comment_location
264
- assert_equal @top_level, klass.parent
265
-
266
- assert_includes @s.c_enclosure_classes, 'cObject'
267
- end
268
-
269
- def test_find_c_enclosure_from_cache_legacy
270
- @klass.in_files.clear
271
- @s.save_class @klass
272
- @s.classes_hash.clear
273
-
274
- assert_nil @s.find_c_enclosure 'cObject'
275
-
276
- @s.c_enclosure_names['cObject'] = 'Object'
277
-
278
- assert_nil @s.find_c_enclosure('cObject')
279
- end
280
-
281
- def test_find_class_named
282
- assert_equal @c1, @store.find_class_named('C1')
283
-
284
- assert_equal @c2_c3, @store.find_class_named('C2::C3')
285
- end
286
-
287
- def test_find_class_named_from
288
- assert_equal @c5_c1, @store.find_class_named_from('C1', 'C5')
289
-
290
- assert_equal @c1, @store.find_class_named_from('C1', 'C4')
291
- end
292
-
293
- def test_find_class_or_module
294
- assert_equal @m1, @store.find_class_or_module('M1')
295
- assert_equal @c1, @store.find_class_or_module('C1')
296
-
297
- assert_equal @m1, @store.find_class_or_module('::M1')
298
- assert_equal @c1, @store.find_class_or_module('::C1')
299
- end
300
-
301
- def test_find_file_named
302
- assert_equal @xref_data, @store.find_file_named(@file_name)
303
- end
304
-
305
- def test_find_module_named
306
- assert_equal @m1, @store.find_module_named('M1')
307
- assert_equal @m1_m2, @store.find_module_named('M1::M2')
308
- end
309
-
310
- def test_find_text_page
311
- page = @store.add_file 'PAGE.txt'
312
- page.parser = RDoc::Parser::Simple
313
-
314
- assert_nil @store.find_text_page 'no such page'
315
-
316
- assert_equal page, @store.find_text_page('PAGE.txt')
317
- end
318
-
319
- def test_friendly_path
320
- @s.path = @tmpdir
321
- @s.type = nil
322
- assert_equal @s.path, @s.friendly_path
323
-
324
- @s.type = :extra
325
- assert_equal @s.path, @s.friendly_path
326
-
327
- @s.type = :system
328
- assert_equal "ruby core", @s.friendly_path
329
-
330
- @s.type = :site
331
- assert_equal "ruby site", @s.friendly_path
332
-
333
- @s.type = :home
334
- assert_equal "~/.rdoc", @s.friendly_path
335
-
336
- @s.type = :gem
337
- @s.path = "#{@tmpdir}/gem_repository/doc/gem_name-1.0/ri"
338
- assert_equal "gem gem_name-1.0", @s.friendly_path
339
- end
340
-
341
- def test_dry_run
342
- refute @s.dry_run
343
-
344
- @s.dry_run = true
345
-
346
- assert @s.dry_run
347
- end
348
-
349
- def test_instance_methods
350
- @s.cache[:instance_methods]['Object'] = %w[method]
351
-
352
- expected = { 'Object' => %w[method] }
353
-
354
- assert_equal expected, @s.instance_methods
355
- end
356
-
357
- def test_load_all
358
- FileUtils.mkdir_p @tmpdir
359
-
360
- @s.save
361
-
362
- s = RDoc::Store.new @tmpdir
363
-
364
- s.load_all
365
-
366
- assert_equal [@klass, @nest_klass], s.all_classes.sort
367
- assert_equal [@mod], s.all_modules.sort
368
- assert_equal [@page, @top_level], s.all_files.sort
369
-
370
- methods = s.all_classes_and_modules.map do |mod|
371
- mod.method_list
372
- end.flatten.sort
373
-
374
- _meth_bang_alias = RDoc::AnyMethod.new nil, 'method_bang'
375
- _meth_bang_alias.parent = @klass
376
-
377
- assert_equal [@meth, @meth_bang, _meth_bang_alias, @nest_meth, @cmeth],
378
- methods.sort_by { |m| m.full_name }
379
-
380
- method = methods.find { |m| m == @meth }
381
- assert_equal @meth_comment.parse, method.comment
382
-
383
- assert_equal @klass, methods.last.parent
384
-
385
- attributes = s.all_classes_and_modules.map do |mod|
386
- mod.attributes
387
- end.flatten.sort
388
-
389
- assert_equal [@attr], attributes
390
-
391
- assert_equal @attr_comment.parse, attributes.first.comment
392
- end
393
-
394
- def test_load_cache
395
- cache = {
396
- :c_class_variables =>
397
- { 'file.c' => { 'cKlass' => 'Klass' } },
398
- :c_singleton_class_variables =>
399
- { 'file.c' => { 'sKlass' => 'KlassSingle' } },
400
- :encoding => :encoding_value,
401
- :methods => { "Object" => %w[Object#method] },
402
- :main => @page.full_name,
403
- :modules => %w[Object],
404
- :pages => [],
405
- }
406
-
407
- Dir.mkdir @tmpdir
408
-
409
- open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
410
- Marshal.dump cache, io
411
- end
412
-
413
- @s.load_cache
414
-
415
- assert_equal cache, @s.cache
416
-
417
- assert_equal :encoding_value, @s.encoding
418
- assert_equal 'README.txt', @s.main
419
-
420
- expected = { 'file.c' => { 'cKlass' => 'Klass' } }
421
- assert_equal expected, @s.cache[:c_class_variables]
422
-
423
- expected = { 'file.c' => { 'sKlass' => 'KlassSingle' } }
424
- assert_equal expected, @s.cache[:c_singleton_class_variables]
425
-
426
- expected = { 'cKlass' => 'Klass' }
427
- assert_equal expected, @s.c_enclosure_names
428
- end
429
-
430
- def test_load_cache_encoding_differs
431
- skip "Encoding not implemented" unless Object.const_defined? :Encoding
432
-
433
- cache = {
434
- :c_class_variables => {},
435
- :c_singleton_class_variables => {},
436
- :encoding => Encoding::ISO_8859_1,
437
- :main => nil,
438
- :methods => { "Object" => %w[Object#method] },
439
- :modules => %w[Object],
440
- :pages => [],
441
- }
442
-
443
- Dir.mkdir @tmpdir
444
-
445
- open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
446
- Marshal.dump cache, io
447
- end
448
-
449
- @s.encoding = Encoding::UTF_8
450
-
451
- @s.load_cache
452
-
453
- assert_equal cache, @s.cache
454
-
455
- assert_equal Encoding::UTF_8, @s.encoding
456
- end
457
-
458
- def test_load_cache_no_cache
459
- cache = {
460
- :ancestors => {},
461
- :attributes => {},
462
- :class_methods => {},
463
- :c_class_variables => {},
464
- :c_singleton_class_variables => {},
465
- :encoding => nil,
466
- :instance_methods => {},
467
- :main => nil,
468
- :modules => [],
469
- :pages => [],
470
- :title => nil,
471
- }
472
-
473
- @s.load_cache
474
-
475
- assert_equal cache, @s.cache
476
- end
477
-
478
- def test_load_cache_legacy
479
- cache = {
480
- :ancestors => {},
481
- :attributes => {},
482
- :class_methods => {},
483
- :encoding => :encoding_value,
484
- :instance_methods => { "Object" => %w[Object#method] },
485
- :modules => %w[Object],
486
- # no :pages
487
- # no :main
488
- # no :c_class_variables
489
- # no :c_singleton_class_variables
490
- }
491
-
492
- Dir.mkdir @tmpdir
493
-
494
- open File.join(@tmpdir, 'cache.ri'), 'wb' do |io|
495
- Marshal.dump cache, io
496
- end
497
-
498
- @s.load_cache
499
-
500
- expected = {
501
- :ancestors => {},
502
- :attributes => {},
503
- :class_methods => {},
504
- :c_class_variables => {},
505
- :c_singleton_class_variables => {},
506
- :encoding => :encoding_value,
507
- :instance_methods => { "Object" => %w[Object#method] },
508
- :main => nil,
509
- :modules => %w[Object],
510
- :pages => [],
511
- }
512
-
513
- assert_equal expected, @s.cache
514
-
515
- assert_equal :encoding_value, @s.encoding
516
- assert_nil @s.main
517
- end
518
-
519
- def test_load_class
520
- @s.save_class @klass
521
- @s.classes_hash.clear
522
-
523
- assert_equal @klass, @s.load_class('Object')
524
-
525
- assert_includes @s.classes_hash, 'Object'
526
- end
527
-
528
- def test_load_method
529
- @s.save_method @klass, @meth_bang
530
-
531
- meth = @s.load_method('Object', '#method!')
532
- assert_equal @meth_bang, meth
533
- assert_equal @klass, meth.parent
534
- assert_equal @s, meth.store
535
- end
536
-
537
- def test_load_method_legacy
538
- @s.save_method @klass, @meth
539
-
540
- file = @s.method_file @klass.full_name, @meth.full_name
541
-
542
- open file, 'wb' do |io|
543
- io.write "\x04\bU:\x14RDoc::AnyMethod[\x0Fi\x00I" +
544
- "\"\vmethod\x06:\x06EF\"\x11Klass#method0:\vpublic" +
545
- "o:\eRDoc::Markup::Document\x06:\v@parts[\x06" +
546
- "o:\x1CRDoc::Markup::Paragraph\x06;\t[\x06I" +
547
- "\"\x16this is a comment\x06;\x06FI" +
548
- "\"\rcall_seq\x06;\x06FI\"\x0Fsome_block\x06;\x06F" +
549
- "[\x06[\aI\"\faliased\x06;\x06Fo;\b\x06;\t[\x06" +
550
- "o;\n\x06;\t[\x06I\"\x12alias comment\x06;\x06FI" +
551
- "\"\nparam\x06;\x06F"
552
- end
553
-
554
- meth = @s.load_method('Object', '#method')
555
- assert_equal 'Klass#method', meth.full_name
556
- assert_equal @klass, meth.parent
557
- assert_equal @s, meth.store
558
- end
559
-
560
- def test_load_page
561
- @s.save_page @page
562
-
563
- assert_equal @page, @s.load_page('README.txt')
564
- end
565
-
566
- def test_main
567
- assert_equal nil, @s.main
568
-
569
- @s.main = 'README.txt'
570
-
571
- assert_equal 'README.txt', @s.main
572
- end
573
-
574
- def test_method_file
575
- assert_equal File.join(@tmpdir, 'Object', 'method-i.ri'),
576
- @s.method_file('Object', 'Object#method')
577
-
578
- assert_equal File.join(@tmpdir, 'Object', 'method%21-i.ri'),
579
- @s.method_file('Object', 'Object#method!')
580
-
581
- assert_equal File.join(@tmpdir, 'Object', 'SubClass', 'method%21-i.ri'),
582
- @s.method_file('Object::SubClass', 'Object::SubClass#method!')
583
-
584
- assert_equal File.join(@tmpdir, 'Object', 'method-c.ri'),
585
- @s.method_file('Object', 'Object::method')
586
- end
587
-
588
- def test_module_names
589
- @s.save_class @klass
590
-
591
- assert_equal %w[Object], @s.module_names
592
- end
593
-
594
- def test_page
595
- page = @store.add_file 'PAGE.txt'
596
- page.parser = RDoc::Parser::Simple
597
-
598
- assert_nil @store.page 'no such page'
599
-
600
- assert_equal page, @store.page('PAGE')
601
- end
602
-
603
- def test_save
604
- FileUtils.mkdir_p @tmpdir
605
-
606
- @s.save
607
-
608
- assert_directory File.join(@tmpdir, 'Object')
609
-
610
- assert_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri')
611
- assert_file File.join(@tmpdir, 'Object', 'method-i.ri')
612
- assert_file File.join(@tmpdir, 'page-README_txt.ri')
613
-
614
- assert_file File.join(@tmpdir, 'cache.ri')
615
-
616
- expected = {
617
- :ancestors => {
618
- 'Object::SubClass' => %w[Incl Object],
619
- },
620
- :attributes => { 'Object' => ['attr_accessor attr'] },
621
- :class_methods => { 'Object' => %w[cmethod] },
622
- :c_class_variables => {},
623
- :c_singleton_class_variables => {},
624
- :instance_methods => {
625
- 'Object' => %w[attr method method! method_bang],
626
- 'Object::SubClass' => %w[method],
627
- },
628
- :main => nil,
629
- :modules => %w[Mod Object Object::SubClass],
630
- :encoding => nil,
631
- :pages => %w[README.txt],
632
- :title => nil,
633
- }
634
-
635
- expected[:ancestors]['Object'] = %w[BasicObject] if defined?(::BasicObject)
636
-
637
- open File.join(@tmpdir, 'cache.ri'), 'rb' do |io|
638
- cache = Marshal.load io.read
639
-
640
- assert_equal expected, cache
641
- end
642
- end
643
-
644
- def test_save_cache
645
- @s.save_class @klass
646
- @s.save_method @klass, @meth
647
- @s.save_method @klass, @cmeth
648
- @s.save_class @nest_klass
649
- @s.save_page @page
650
- @s.encoding = :encoding_value
651
- @s.main = @page.full_name
652
- @s.title = 'title'
653
-
654
- options = RDoc::Options.new
655
-
656
- c_file = @s.add_file 'ext.c'
657
-
658
- some_ext = c_file.add_class RDoc::NormalClass, 'SomeExt'
659
- c_file.add_class RDoc::SingleClass, 'SomeExtSingle'
660
-
661
- c_parser = RDoc::Parser::C.new c_file, 'ext.c', '', options, nil
662
-
663
- c_parser.classes['cSomeExt'] = some_ext
664
- c_parser.singleton_classes['s_cSomeExt'] = 'SomeExtSingle'
665
-
666
- @s.add_c_variables c_parser
667
-
668
- @s.save_cache
669
-
670
- assert_file File.join(@tmpdir, 'cache.ri')
671
-
672
- c_class_variables = {
673
- 'ext.c' => {
674
- 'cSomeExt' => 'SomeExt'
675
- }
676
- }
677
-
678
- c_singleton_class_variables = {
679
- 'ext.c' => {
680
- 's_cSomeExt' => 'SomeExtSingle'
681
- }
682
- }
683
-
684
- expected = {
685
- :ancestors => {
686
- 'Object::SubClass' => %w[Incl Object],
687
- },
688
- :attributes => { 'Object' => ['attr_accessor attr'] },
689
- :class_methods => { 'Object' => %w[cmethod] },
690
- :c_class_variables => c_class_variables,
691
- :c_singleton_class_variables => c_singleton_class_variables,
692
- :instance_methods => {
693
- 'Object' => %w[method method! method_bang],
694
- 'Object::SubClass' => %w[method],
695
- },
696
- :main => @page.full_name,
697
- :modules => %w[Object Object::SubClass],
698
- :encoding => :encoding_value,
699
- :pages => %w[README.txt],
700
- :title => 'title',
701
- }
702
-
703
- expected[:ancestors]['Object'] = %w[BasicObject] if defined?(::BasicObject)
704
-
705
- open File.join(@tmpdir, 'cache.ri'), 'rb' do |io|
706
- cache = Marshal.load io.read
707
-
708
- assert_equal expected, cache
709
- end
710
- end
711
-
712
- def test_save_cache_dry_run
713
- @s.dry_run = true
714
-
715
- @s.save_class @klass
716
- @s.save_method @klass, @meth
717
- @s.save_method @klass, @cmeth
718
- @s.save_class @nest_klass
719
-
720
- @s.save_cache
721
-
722
- refute_file File.join(@tmpdir, 'cache.ri')
723
- end
724
-
725
- def test_save_cache_duplicate_methods
726
- @s.save_method @klass, @meth
727
- @s.save_method @klass, @meth
728
-
729
- @s.save_cache
730
-
731
- assert_cache({ 'Object' => %w[method] }, {}, {}, [])
732
- end
733
-
734
- def test_save_cache_duplicate_pages
735
- @s.save_page @page
736
- @s.save_page @page
737
-
738
- @s.save_cache
739
-
740
- assert_cache({}, {}, {}, [], {}, %w[README.txt])
741
- end
742
-
743
- def test_save_class
744
- @s.save_class @klass
745
-
746
- assert_directory File.join(@tmpdir, 'Object')
747
- assert_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri')
748
-
749
- assert_cache nil, nil, nil, %w[Object], 'Object' => OBJECT_ANCESTORS
750
-
751
- assert_equal @klass, @s.load_class('Object')
752
- end
753
-
754
- def test_save_class_basic_object
755
- @klass.instance_variable_set :@superclass, nil
756
-
757
- @s.save_class @klass
758
-
759
- assert_directory File.join(@tmpdir, 'Object')
760
- assert_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri')
761
-
762
- assert_cache(nil, nil, nil, %w[Object])
763
-
764
- assert_equal @klass, @s.load_class('Object')
765
- end
766
-
767
- def test_save_class_delete
768
- # save original
769
- @s.save_class @klass
770
- @s.save_method @klass, @meth
771
- @s.save_method @klass, @meth_bang
772
- @s.save_method @klass, @cmeth
773
- @s.save_method @klass, @attr
774
- @s.save_cache
775
-
776
- klass = RDoc::NormalClass.new 'Object'
777
-
778
- meth = klass.add_method RDoc::AnyMethod.new(nil, 'replace')
779
- meth.record_location @top_level
780
-
781
- # load original, save newly updated class
782
- @s = RDoc::RI::Store.new @tmpdir
783
- @s.load_cache
784
- @s.save_class klass
785
- @s.save_cache
786
-
787
- # load from disk again
788
- @s = RDoc::RI::Store.new @tmpdir
789
- @s.load_cache
790
-
791
- @s.load_class 'Object'
792
-
793
- assert_cache({ 'Object' => %w[replace] }, {},
794
- { 'Object' => %w[attr_accessor\ attr] }, %w[Object],
795
- 'Object' => OBJECT_ANCESTORS)
796
-
797
- # assert these files were deleted
798
- refute_file @s.method_file(@klass.full_name, @meth.full_name)
799
- refute_file @s.method_file(@klass.full_name, @meth_bang.full_name)
800
- refute_file @s.method_file(@klass.full_name, @cmeth.full_name)
801
-
802
- # assert these files were not deleted
803
- assert_file @s.method_file(@klass.full_name, @attr.full_name)
804
- end
805
-
806
- def test_save_class_dry_run
807
- @s.dry_run = true
808
-
809
- @s.save_class @klass
810
-
811
- refute_file File.join(@tmpdir, 'Object')
812
- refute_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri')
813
- end
814
-
815
- def test_save_class_loaded
816
- @s.save
817
-
818
- assert_directory File.join(@tmpdir, 'Object')
819
- assert_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri')
820
-
821
- assert_file @s.method_file(@klass.full_name, @attr.full_name)
822
- assert_file @s.method_file(@klass.full_name, @cmeth.full_name)
823
- assert_file @s.method_file(@klass.full_name, @meth.full_name)
824
- assert_file @s.method_file(@klass.full_name, @meth_bang.full_name)
825
-
826
- s = RDoc::Store.new @s.path
827
- s.load_cache
828
-
829
- loaded = s.load_class 'Object'
830
-
831
- assert_equal @klass, loaded
832
-
833
- s.save_class loaded
834
-
835
- s = RDoc::Store.new @s.path
836
- s.load_cache
837
-
838
- reloaded = s.load_class 'Object'
839
-
840
- assert_equal @klass, reloaded
841
-
842
- # assert these files were not deleted. Bug #171
843
- assert_file s.method_file(@klass.full_name, @attr.full_name)
844
- assert_file s.method_file(@klass.full_name, @cmeth.full_name)
845
- assert_file s.method_file(@klass.full_name, @meth.full_name)
846
- assert_file s.method_file(@klass.full_name, @meth_bang.full_name)
847
- end
848
-
849
- def test_save_class_merge
850
- @s.save_class @klass
851
-
852
- klass = RDoc::NormalClass.new 'Object'
853
- klass.add_comment 'new comment', @top_level
854
-
855
- s = RDoc::RI::Store.new @tmpdir
856
- s.save_class klass
857
-
858
- s = RDoc::RI::Store.new @tmpdir
859
-
860
- inner = @RM::Document.new @RM::Paragraph.new 'new comment'
861
- inner.file = @top_level
862
-
863
- document = @RM::Document.new inner
864
-
865
- assert_equal document, s.load_class('Object').comment_location
866
- end
867
-
868
- # This is a functional test
869
- def test_save_class_merge_constant
870
- store = RDoc::Store.new
871
- tl = store.add_file 'file.rb'
872
-
873
- klass = tl.add_class RDoc::NormalClass, 'C'
874
- klass.add_comment 'comment', tl
875
-
876
- const = klass.add_constant RDoc::Constant.new('CONST', nil, nil)
877
- const.record_location tl
878
-
879
- @s.save_class klass
880
-
881
- # separate parse run, independent store
882
- store = RDoc::Store.new
883
- tl = store.add_file 'file.rb'
884
- klass2 = tl.add_class RDoc::NormalClass, 'C'
885
- klass2.record_location tl
886
-
887
- s = RDoc::RI::Store.new @tmpdir
888
- s.save_class klass2
889
-
890
- # separate `ri` run, independent store
891
- s = RDoc::RI::Store.new @tmpdir
892
-
893
- result = s.load_class 'C'
894
-
895
- assert_empty result.constants
896
- end
897
-
898
- def test_save_class_methods
899
- @s.save_class @klass
900
-
901
- assert_directory File.join(@tmpdir, 'Object')
902
- assert_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri')
903
-
904
- assert_cache nil, nil, nil, %w[Object], 'Object' => OBJECT_ANCESTORS
905
-
906
- assert_equal @klass, @s.load_class('Object')
907
- end
908
-
909
- def test_save_class_nested
910
- @s.save_class @nest_klass
911
-
912
- assert_directory File.join(@tmpdir, 'Object', 'SubClass')
913
- assert_file File.join(@tmpdir, 'Object', 'SubClass', 'cdesc-SubClass.ri')
914
-
915
- assert_cache({ 'Object::SubClass' => %w[method] }, {}, {},
916
- %w[Object::SubClass], 'Object::SubClass' => %w[Incl Object])
917
- end
918
-
919
- def test_save_method
920
- @s.save_method @klass, @meth
921
-
922
- assert_directory File.join(@tmpdir, 'Object')
923
- assert_file File.join(@tmpdir, 'Object', 'method-i.ri')
924
-
925
- assert_cache({ 'Object' => %w[method] }, {}, {}, [])
926
-
927
- assert_equal @meth, @s.load_method('Object', '#method')
928
- end
929
-
930
- def test_save_method_dry_run
931
- @s.dry_run = true
932
-
933
- @s.save_method @klass, @meth
934
-
935
- refute_file File.join(@tmpdir, 'Object')
936
- refute_file File.join(@tmpdir, 'Object', 'method-i.ri')
937
- end
938
-
939
- def test_save_method_nested
940
- @s.save_method @nest_klass, @nest_meth
941
-
942
- assert_directory File.join(@tmpdir, 'Object', 'SubClass')
943
- assert_file File.join(@tmpdir, 'Object', 'SubClass', 'method-i.ri')
944
-
945
- assert_cache({ 'Object::SubClass' => %w[method] }, {}, {}, [])
946
- end
947
-
948
- def test_save_page
949
- @s.save_page @page
950
-
951
- assert_file File.join(@tmpdir, 'page-README_txt.ri')
952
-
953
- assert_cache({}, {}, {}, [], {}, %w[README.txt])
954
- end
955
-
956
- def test_save_page_file
957
- @s.save_page @top_level
958
-
959
- refute_file File.join(@tmpdir, 'page-file_rb.ri')
960
- end
961
-
962
- def test_source
963
- @s.path = @tmpdir
964
- @s.type = nil
965
- assert_equal @s.path, @s.source
966
-
967
- @s.type = :extra
968
- assert_equal @s.path, @s.source
969
-
970
- @s.type = :system
971
- assert_equal "ruby", @s.source
972
-
973
- @s.type = :site
974
- assert_equal "site", @s.source
975
-
976
- @s.type = :home
977
- assert_equal "home", @s.source
978
-
979
- @s.type = :gem
980
- @s.path = "#{@tmpdir}/gem_repository/doc/gem_name-1.0/ri"
981
- assert_equal "gem_name-1.0", @s.source
982
- end
983
-
984
- def test_title
985
- assert_equal nil, @s.title
986
-
987
- @s.title = 'rdoc'
988
-
989
- assert_equal 'rdoc', @s.title
990
- end
991
-
992
- end
993
-