yard 0.8.7.6 → 0.9.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 (225) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -1
  3. data/LICENSE +2 -2
  4. data/README.md +2 -2
  5. data/Rakefile +1 -1
  6. data/bin/yard +0 -0
  7. data/bin/yardoc +0 -0
  8. data/bin/yri +0 -0
  9. data/docs/GettingStarted.md +88 -6
  10. data/docs/images/handlers-class-diagram.png +0 -0
  11. data/docs/images/overview-class-diagram.png +0 -0
  12. data/docs/images/parser-class-diagram.png +0 -0
  13. data/docs/templates/default/fulldoc/html/full_list_tag.erb +6 -4
  14. data/lib/yard/autoload.rb +3 -0
  15. data/lib/yard/cli/yardoc.rb +1 -1
  16. data/lib/yard/code_objects/base.rb +4 -1
  17. data/lib/yard/code_objects/extra_file_object.rb +3 -1
  18. data/lib/yard/code_objects/proxy.rb +2 -2
  19. data/lib/yard/docstring.rb +11 -6
  20. data/lib/yard/handlers/base.rb +1 -2
  21. data/lib/yard/handlers/c/base.rb +19 -0
  22. data/lib/yard/handlers/c/handler_methods.rb +42 -8
  23. data/lib/yard/handlers/c/init_handler.rb +1 -1
  24. data/lib/yard/handlers/c/method_handler.rb +3 -3
  25. data/lib/yard/handlers/ruby/decorator_handler_methods.rb +132 -0
  26. data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +1 -1
  27. data/lib/yard/handlers/ruby/private_class_method_handler.rb +6 -39
  28. data/lib/yard/handlers/ruby/private_constant_handler.rb +36 -30
  29. data/lib/yard/handlers/ruby/public_class_method_handler.rb +13 -0
  30. data/lib/yard/handlers/ruby/struct_handler_methods.rb +1 -0
  31. data/lib/yard/handlers/ruby/visibility_handler.rb +5 -8
  32. data/lib/yard/logging.rb +1 -0
  33. data/lib/yard/parser/ruby/ruby_parser.rb +2 -2
  34. data/lib/yard/parser/source_parser.rb +6 -6
  35. data/lib/yard/rake/yardoc_task.rb +2 -2
  36. data/lib/yard/serializers/file_system_serializer.rb +33 -1
  37. data/lib/yard/server/commands/display_file_command.rb +8 -3
  38. data/lib/yard/server/commands/display_object_command.rb +7 -3
  39. data/lib/yard/server/doc_server_helper.rb +2 -8
  40. data/lib/yard/server/doc_server_serializer.rb +2 -4
  41. data/lib/yard/server/router.rb +1 -1
  42. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +57 -8
  43. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +2 -10
  44. data/lib/yard/server/templates/default/layout/html/script_setup.erb +1 -2
  45. data/lib/yard/server/templates/default/method_details/html/permalink.erb +3 -3
  46. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +4 -4
  47. data/lib/yard/tags/directives.rb +1 -0
  48. data/lib/yard/tags/library.rb +9 -7
  49. data/lib/yard/tags/overload_tag.rb +4 -1
  50. data/lib/yard/templates/helpers/html_helper.rb +4 -3
  51. data/lib/yard/templates/template_options.rb +3 -0
  52. data/lib/yard/version.rb +1 -1
  53. data/spec/cli/command_parser_spec.rb +14 -14
  54. data/spec/cli/command_spec.rb +11 -11
  55. data/spec/cli/config_spec.rb +32 -32
  56. data/spec/cli/diff_spec.rb +86 -90
  57. data/spec/cli/display_spec.rb +6 -6
  58. data/spec/cli/gems_spec.rb +28 -28
  59. data/spec/cli/graph_spec.rb +8 -8
  60. data/spec/cli/help_spec.rb +8 -8
  61. data/spec/cli/i18n_spec.rb +33 -37
  62. data/spec/cli/list_spec.rb +2 -2
  63. data/spec/cli/markup_types_spec.rb +3 -3
  64. data/spec/cli/server_spec.rb +74 -88
  65. data/spec/cli/stats_spec.rb +14 -14
  66. data/spec/cli/yardoc_spec.rb +316 -321
  67. data/spec/cli/yri_spec.rb +45 -45
  68. data/spec/code_objects/base_spec.rb +174 -173
  69. data/spec/code_objects/class_object_spec.rb +65 -65
  70. data/spec/code_objects/code_object_list_spec.rb +13 -11
  71. data/spec/code_objects/constants_spec.rb +68 -58
  72. data/spec/code_objects/extra_file_object_spec.rb +71 -59
  73. data/spec/code_objects/macro_object_spec.rb +64 -64
  74. data/spec/code_objects/method_object_spec.rb +80 -72
  75. data/spec/code_objects/module_object_spec.rb +47 -47
  76. data/spec/code_objects/namespace_object_spec.rb +51 -51
  77. data/spec/code_objects/proxy_spec.rb +54 -54
  78. data/spec/config_spec.rb +104 -104
  79. data/spec/core_ext/array_spec.rb +5 -5
  80. data/spec/core_ext/file_spec.rb +33 -33
  81. data/spec/core_ext/hash_spec.rb +5 -5
  82. data/spec/core_ext/insertion_spec.rb +18 -18
  83. data/spec/core_ext/module_spec.rb +6 -6
  84. data/spec/core_ext/string_spec.rb +17 -17
  85. data/spec/core_ext/symbol_hash_spec.rb +42 -39
  86. data/spec/docstring_parser_spec.rb +65 -65
  87. data/spec/docstring_spec.rb +137 -130
  88. data/spec/handlers/alias_handler_spec.rb +39 -39
  89. data/spec/handlers/attribute_handler_spec.rb +35 -35
  90. data/spec/handlers/base_spec.rb +60 -51
  91. data/spec/handlers/c/alias_handler_spec.rb +6 -6
  92. data/spec/handlers/c/attribute_handler_spec.rb +12 -12
  93. data/spec/handlers/c/class_handler_spec.rb +35 -22
  94. data/spec/handlers/c/constant_handler_spec.rb +24 -22
  95. data/spec/handlers/c/init_handler_spec.rb +10 -10
  96. data/spec/handlers/c/method_handler_spec.rb +150 -65
  97. data/spec/handlers/c/mixin_handler_spec.rb +5 -5
  98. data/spec/handlers/c/module_handler_spec.rb +27 -15
  99. data/spec/handlers/c/override_comment_handler_spec.rb +14 -14
  100. data/spec/handlers/c/path_handler_spec.rb +8 -8
  101. data/spec/handlers/c/spec_helper.rb +10 -0
  102. data/spec/handlers/c/struct_handler_spec.rb +3 -3
  103. data/spec/handlers/class_condition_handler_spec.rb +18 -18
  104. data/spec/handlers/class_handler_spec.rb +97 -97
  105. data/spec/handlers/class_method_handler_shared_examples.rb +132 -0
  106. data/spec/handlers/class_variable_handler_spec.rb +3 -3
  107. data/spec/handlers/constant_handler_spec.rb +32 -29
  108. data/spec/handlers/decorator_handler_methods_spec.rb +405 -0
  109. data/spec/handlers/dsl_handler_spec.rb +108 -109
  110. data/spec/handlers/examples/constant_handler_001.rb.txt +4 -1
  111. data/spec/handlers/examples/visibility_handler_001.rb.txt +4 -0
  112. data/spec/handlers/exception_handler_spec.rb +23 -23
  113. data/spec/handlers/extend_handler_spec.rb +9 -9
  114. data/spec/handlers/legacy_base_spec.rb +60 -60
  115. data/spec/handlers/method_condition_handler_spec.rb +5 -5
  116. data/spec/handlers/method_handler_spec.rb +92 -92
  117. data/spec/handlers/mixin_handler_spec.rb +25 -25
  118. data/spec/handlers/module_function_handler_spec.rb +24 -24
  119. data/spec/handlers/module_handler_spec.rb +15 -15
  120. data/spec/handlers/private_class_method_handler_spec.rb +4 -48
  121. data/spec/handlers/private_constant_handler_spec.rb +8 -8
  122. data/spec/handlers/processor_spec.rb +12 -12
  123. data/spec/handlers/public_class_method_handler_spec.rb +10 -0
  124. data/spec/handlers/ruby/base_spec.rb +16 -16
  125. data/spec/handlers/ruby/legacy/base_spec.rb +20 -18
  126. data/spec/handlers/spec_helper.rb +1 -1
  127. data/spec/handlers/visibility_handler_spec.rb +25 -21
  128. data/spec/handlers/yield_handler_spec.rb +28 -28
  129. data/spec/i18n/locale_spec.rb +16 -16
  130. data/spec/i18n/message_spec.rb +8 -8
  131. data/spec/i18n/messages_spec.rb +14 -14
  132. data/spec/i18n/pot_generator_spec.rb +32 -32
  133. data/spec/i18n/text_spec.rb +22 -22
  134. data/spec/logging_spec.rb +12 -12
  135. data/spec/options_spec.rb +56 -56
  136. data/spec/parser/base_spec.rb +9 -9
  137. data/spec/parser/c_parser_spec.rb +50 -50
  138. data/spec/parser/ruby/ast_node_spec.rb +7 -7
  139. data/spec/parser/ruby/legacy/statement_list_spec.rb +106 -106
  140. data/spec/parser/ruby/legacy/token_list_spec.rb +27 -27
  141. data/spec/parser/ruby/ruby_parser_spec.rb +123 -113
  142. data/spec/parser/source_parser_spec.rb +224 -224
  143. data/spec/parser/tag_parsing_spec.rb +6 -7
  144. data/spec/rake/yardoc_task_spec.rb +38 -48
  145. data/spec/registry_spec.rb +143 -143
  146. data/spec/registry_store_spec.rb +165 -165
  147. data/spec/rubygems/doc_manager_spec.rb +38 -38
  148. data/spec/serializers/file_system_serializer_spec.rb +53 -33
  149. data/spec/serializers/yardoc_serializer_spec.rb +15 -15
  150. data/spec/server/adapter_spec.rb +15 -15
  151. data/spec/server/commands/base_spec.rb +29 -29
  152. data/spec/server/commands/library_command_spec.rb +12 -12
  153. data/spec/server/commands/static_file_command_spec.rb +28 -28
  154. data/spec/server/doc_server_helper_spec.rb +8 -8
  155. data/spec/server/doc_server_serializer_spec.rb +23 -18
  156. data/spec/server/rack_adapter_spec.rb +6 -6
  157. data/spec/server/router_spec.rb +39 -39
  158. data/spec/server/static_caching_spec.rb +16 -16
  159. data/spec/server/webrick_servlet_spec.rb +6 -7
  160. data/spec/server_spec.rb +3 -3
  161. data/spec/spec_helper.rb +11 -2
  162. data/spec/tags/default_factory_spec.rb +64 -64
  163. data/spec/tags/default_tag_spec.rb +5 -5
  164. data/spec/tags/directives_spec.rb +121 -121
  165. data/spec/tags/library_spec.rb +14 -14
  166. data/spec/tags/overload_tag_spec.rb +24 -24
  167. data/spec/tags/ref_tag_list_spec.rb +12 -12
  168. data/spec/templates/class_spec.rb +3 -3
  169. data/spec/templates/constant_spec.rb +4 -4
  170. data/spec/templates/engine_spec.rb +47 -48
  171. data/spec/templates/examples/class001.html +129 -101
  172. data/spec/templates/examples/class002.html +31 -27
  173. data/spec/templates/examples/method001.html +54 -47
  174. data/spec/templates/examples/method002.html +33 -28
  175. data/spec/templates/examples/method003.html +70 -64
  176. data/spec/templates/examples/method004.html +13 -9
  177. data/spec/templates/examples/method005.html +38 -32
  178. data/spec/templates/examples/module001.html +343 -339
  179. data/spec/templates/examples/module002.html +147 -124
  180. data/spec/templates/examples/module003.html +94 -81
  181. data/spec/templates/examples/module004.html +40 -33
  182. data/spec/templates/helpers/base_helper_spec.rb +91 -95
  183. data/spec/templates/helpers/html_helper_spec.rb +276 -279
  184. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +16 -15
  185. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +27 -34
  186. data/spec/templates/helpers/markup_helper_spec.rb +57 -57
  187. data/spec/templates/helpers/method_helper_spec.rb +20 -20
  188. data/spec/templates/helpers/shared_signature_examples.rb +33 -31
  189. data/spec/templates/helpers/text_helper_spec.rb +6 -6
  190. data/spec/templates/method_spec.rb +7 -7
  191. data/spec/templates/module_spec.rb +7 -7
  192. data/spec/templates/onefile_spec.rb +7 -7
  193. data/spec/templates/section_spec.rb +66 -69
  194. data/spec/templates/spec_helper.rb +1 -1
  195. data/spec/templates/tag_spec.rb +5 -5
  196. data/spec/templates/template_spec.rb +158 -158
  197. data/spec/verifier_spec.rb +52 -52
  198. data/templates/default/fulldoc/html/css/full_list.css +32 -31
  199. data/templates/default/fulldoc/html/css/style.css +212 -77
  200. data/templates/default/fulldoc/html/frames.erb +6 -15
  201. data/templates/default/fulldoc/html/full_list.erb +14 -21
  202. data/templates/default/fulldoc/html/full_list_class.erb +1 -1
  203. data/templates/default/fulldoc/html/full_list_file.erb +6 -4
  204. data/templates/default/fulldoc/html/full_list_method.erb +8 -6
  205. data/templates/default/fulldoc/html/js/app.js +100 -76
  206. data/templates/default/fulldoc/html/js/full_list.js +170 -135
  207. data/templates/default/fulldoc/html/setup.rb +50 -7
  208. data/templates/default/layout/html/breadcrumb.erb +0 -2
  209. data/templates/default/layout/html/headers.erb +2 -1
  210. data/templates/default/layout/html/layout.erb +16 -10
  211. data/templates/default/layout/html/script_setup.erb +1 -2
  212. data/templates/default/layout/html/search.erb +7 -2
  213. data/templates/default/layout/html/setup.rb +16 -0
  214. data/templates/default/method/html/header.erb +7 -6
  215. data/templates/default/module/html/attribute_summary.erb +1 -1
  216. data/templates/default/module/html/box_info.erb +24 -18
  217. data/templates/default/module/html/constant_summary.erb +9 -11
  218. data/templates/default/module/html/item_summary.erb +1 -1
  219. data/templates/default/module/html/method_summary.erb +1 -1
  220. data/templates/guide/fulldoc/html/setup.rb +1 -1
  221. data/yard.gemspec +1 -2
  222. metadata +10 -7
  223. data/spec/handlers/examples/private_class_method_handler_001.rb.txt +0 -9
  224. data/spec/handlers/examples/private_class_method_handler_002.rb.txt +0 -18
  225. data/spec/handlers/examples/private_class_method_handler_003.rb.txt +0 -11
@@ -17,7 +17,7 @@ describe YARD::Parser::SourceParser do
17
17
  def parse_list(*list)
18
18
  files = list.map do |v|
19
19
  filename, source = *v
20
- File.stub!(:read_binary).with(filename).and_return(source)
20
+ allow(File).to receive(:read_binary).with(filename).and_return(source)
21
21
  filename
22
22
  end
23
23
  Parser::SourceParser.send(:parse_in_order, *files)
@@ -39,225 +39,225 @@ describe YARD::Parser::SourceParser do
39
39
  Parser::SourceParser.after_parse_file(&block)
40
40
  end
41
41
 
42
- describe '.before_parse_list' do
42
+ describe ".before_parse_list" do
43
43
  before do
44
44
  Parser::SourceParser.before_parse_list_callbacks.clear
45
45
  Parser::SourceParser.after_parse_list_callbacks.clear
46
46
  end
47
47
 
48
- it "should handle basic callback support" do
48
+ it "handles basic callback support" do
49
49
  before_list do |files, globals|
50
- files.should == ['foo.rb', 'bar.rb']
51
- globals.should == OpenStruct.new
50
+ expect(files).to eq ['foo.rb', 'bar.rb']
51
+ expect(globals).to eq OpenStruct.new
52
52
  end
53
53
  parse_list ['foo.rb', 'foo!'], ['bar.rb', 'class Foo; end']
54
- Registry.at('Foo').should_not be_nil
54
+ expect(Registry.at('Foo')).not_to be nil
55
55
  end
56
56
 
57
- it "should support multiple callbacks" do
57
+ it "supports multiple callbacks" do
58
58
  checks = []
59
59
  before_list { checks << :one }
60
60
  before_list { checks << :two }
61
61
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
62
- Registry.at('Foo').should_not be_nil
63
- checks.should == [:one, :two]
62
+ expect(Registry.at('Foo')).not_to be nil
63
+ expect(checks).to eq [:one, :two]
64
64
  end
65
65
 
66
- it "should cancel parsing if it returns false" do
66
+ it "cancels parsing if it returns false" do
67
67
  checks = []
68
68
  before_list { checks << :one }
69
69
  before_list { false }
70
70
  before_list { checks << :three }
71
71
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
72
- Registry.at('Foo').should be_nil
73
- checks.should == [:one]
72
+ expect(Registry.at('Foo')).to be nil
73
+ expect(checks).to eq [:one]
74
74
  end
75
75
 
76
- it "should not cancel on nil" do
76
+ it "does not cancel on nil" do
77
77
  checks = []
78
78
  before_list { checks << :one }
79
79
  before_list { nil }
80
80
  before_list { checks << :two }
81
81
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
82
- Registry.at('Foo').should_not be_nil
83
- checks.should == [:one, :two]
82
+ expect(Registry.at('Foo')).not_to be nil
83
+ expect(checks).to eq [:one, :two]
84
84
  end
85
85
 
86
- it "should pass in globals" do
86
+ it "passes in globals" do
87
87
  before_list {|f,g| g.x = 1 }
88
88
  before_list {|f,g| g.x += 1 }
89
89
  before_list {|f,g| g.x += 1 }
90
- after_list {|f,g| g.x.should == 3 }
90
+ after_list {|f,g| expect(g.x).to eq 3 }
91
91
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
92
- Registry.at('Foo').should_not be_nil
92
+ expect(Registry.at('Foo')).not_to be nil
93
93
  end
94
94
  end
95
95
 
96
- describe '.after_parse_list' do
96
+ describe ".after_parse_list" do
97
97
  before do
98
98
  Parser::SourceParser.before_parse_list_callbacks.clear
99
99
  Parser::SourceParser.after_parse_list_callbacks.clear
100
100
  end
101
101
 
102
- it "should handle basic callback support and maintain files/globals" do
102
+ it "handles basic callback support and maintain files/globals" do
103
103
  before_list do |f,g| g.foo = :bar end
104
104
  after_list do |files, globals|
105
- files.should == ['foo.rb', 'bar.rb']
106
- globals.foo.should == :bar
105
+ expect(files).to eq ['foo.rb', 'bar.rb']
106
+ expect(globals.foo).to eq :bar
107
107
  end
108
108
  parse_list ['foo.rb', 'foo!'], ['bar.rb', 'class Foo; end']
109
- Registry.at('Foo').should_not be_nil
109
+ expect(Registry.at('Foo')).not_to be nil
110
110
  end
111
111
 
112
- it "should support multiple callbacks" do
112
+ it "supports multiple callbacks" do
113
113
  checks = []
114
114
  after_list { checks << :one }
115
115
  after_list { checks << :two }
116
116
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
117
- Registry.at('Foo').should_not be_nil
118
- checks.should == [:one, :two]
117
+ expect(Registry.at('Foo')).not_to be nil
118
+ expect(checks).to eq [:one, :two]
119
119
  end
120
120
 
121
- it "should not cancel parsing if it returns false" do
121
+ it "does not cancel parsing if it returns false" do
122
122
  checks = []
123
123
  after_list { checks << :one }
124
124
  after_list { false }
125
125
  after_list { checks << :three }
126
126
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
127
- Registry.at('Foo').should_not be_nil
128
- checks.should == [:one, :three]
127
+ expect(Registry.at('Foo')).not_to be nil
128
+ expect(checks).to eq [:one, :three]
129
129
  end
130
130
  end
131
131
 
132
- describe '.before_parse_file' do
132
+ describe ".before_parse_file" do
133
133
  before do
134
134
  Parser::SourceParser.before_parse_file_callbacks.clear
135
135
  Parser::SourceParser.after_parse_file_callbacks.clear
136
136
  end
137
137
 
138
- it "should handle basic callback support" do
138
+ it "handles basic callback support" do
139
139
  before_file do |parser|
140
- parser.contents.should == 'class Foo; end'
141
- parser.file.should =~ /(foo|bar)\.rb/
140
+ expect(parser.contents).to eq 'class Foo; end'
141
+ expect(parser.file).to match /(foo|bar)\.rb/
142
142
  end
143
143
  parse_list ['foo.rb', 'class Foo; end'], ['bar.rb', 'class Foo; end']
144
- Registry.at('Foo').should_not be_nil
144
+ expect(Registry.at('Foo')).not_to be nil
145
145
  end
146
146
 
147
- it "should support multiple callbacks" do
147
+ it "supports multiple callbacks" do
148
148
  checks = []
149
149
  before_file { checks << :one }
150
150
  before_file { checks << :two }
151
151
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
152
- Registry.at('Foo').should_not be_nil
153
- checks.should == [:one, :two, :one, :two, :one, :two]
152
+ expect(Registry.at('Foo')).not_to be nil
153
+ expect(checks).to eq [:one, :two, :one, :two, :one, :two]
154
154
  end
155
155
 
156
- it "should cancel parsing if it returns false" do
156
+ it "cancels parsing if it returns false" do
157
157
  checks = []
158
158
  before_file { checks << :one }
159
159
  before_file { false }
160
160
  before_file { checks << :three }
161
161
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
162
- Registry.at('Foo').should be_nil
163
- checks.should == [:one, :one, :one]
162
+ expect(Registry.at('Foo')).to be nil
163
+ expect(checks).to eq [:one, :one, :one]
164
164
  end
165
165
 
166
- it "should not cancel on nil" do
166
+ it "does not cancel on nil" do
167
167
  checks = []
168
168
  before_file { checks << :one }
169
169
  before_file { nil }
170
170
  before_file { checks << :two }
171
171
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
172
- Registry.at('Foo').should_not be_nil
173
- checks.should == [:one, :two, :one, :two, :one, :two]
172
+ expect(Registry.at('Foo')).not_to be nil
173
+ expect(checks).to eq [:one, :two, :one, :two, :one, :two]
174
174
  end
175
175
  end
176
176
 
177
- describe '.after_parse_file' do
177
+ describe ".after_parse_file" do
178
178
  before do
179
179
  Parser::SourceParser.before_parse_file_callbacks.clear
180
180
  Parser::SourceParser.after_parse_file_callbacks.clear
181
181
  end
182
182
 
183
- it "should handle basic callback support" do
183
+ it "handles basic callback support" do
184
184
  after_file do |parser|
185
- parser.contents.should == 'class Foo; end'
186
- parser.file.should =~ /(foo|bar)\.rb/
185
+ expect(parser.contents).to eq 'class Foo; end'
186
+ expect(parser.file).to match /(foo|bar)\.rb/
187
187
  end
188
188
  parse_list ['foo.rb', 'class Foo; end'], ['bar.rb', 'class Foo; end']
189
- Registry.at('Foo').should_not be_nil
189
+ expect(Registry.at('Foo')).not_to be nil
190
190
  end
191
191
 
192
- it "should support multiple callbacks" do
192
+ it "supports multiple callbacks" do
193
193
  checks = []
194
194
  after_file { checks << :one }
195
195
  after_file { checks << :two }
196
196
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
197
- Registry.at('Foo').should_not be_nil
198
- checks.should == [:one, :two, :one, :two, :one, :two]
197
+ expect(Registry.at('Foo')).not_to be nil
198
+ expect(checks).to eq [:one, :two, :one, :two, :one, :two]
199
199
  end
200
200
 
201
- it "should not cancel parsing if it returns false" do
201
+ it "does not cancel parsing if it returns false" do
202
202
  checks = []
203
203
  after_file { checks << :one }
204
204
  after_file { false }
205
205
  after_file { checks << :three }
206
206
  parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
207
- Registry.at('Foo').should_not be_nil
208
- checks.should == [:one, :three, :one, :three, :one, :three]
207
+ expect(Registry.at('Foo')).not_to be nil
208
+ expect(checks).to eq [:one, :three, :one, :three, :one, :three]
209
209
  end
210
210
  end
211
211
 
212
- describe '.register_parser_type' do
212
+ describe ".register_parser_type" do
213
213
  it_should_behave_like "parser type registration"
214
214
 
215
- it "should register a subclass of Parser::Base" do
216
- parser = mock(:parser)
217
- parser.should_receive(:parse)
218
- MyParser.should_receive(:new).with('content', '(stdin)').and_return(parser)
215
+ it "registers a subclass of Parser::Base" do
216
+ parser = double(:parser)
217
+ expect(parser).to receive(:parse)
218
+ expect(MyParser).to receive(:new).with('content', '(stdin)').and_return(parser)
219
219
  Parser::SourceParser.register_parser_type(:my_parser, MyParser, 'myparser')
220
220
  Parser::SourceParser.parse_string('content', :my_parser)
221
221
  end
222
222
 
223
- it "should require class to be a subclass of Parser::Base" do
224
- lambda { Parser::SourceParser.register_parser_type(:my_parser, String) }.should raise_error(ArgumentError)
225
- lambda { Parser::SourceParser.register_parser_type(:my_parser, Parser::Base) }.should raise_error(ArgumentError)
223
+ it "requires class to be a subclass of Parser::Base" do
224
+ expect { Parser::SourceParser.register_parser_type(:my_parser, String) }.to raise_error(ArgumentError)
225
+ expect { Parser::SourceParser.register_parser_type(:my_parser, Parser::Base) }.to raise_error(ArgumentError)
226
226
  end
227
227
  end
228
228
 
229
- describe '.parser_type_for_extension' do
229
+ describe ".parser_type_for_extension" do
230
230
  it_should_behave_like "parser type registration"
231
231
 
232
- it "should find an extension in a registered array of extensions" do
232
+ it "finds an extension in a registered array of extensions" do
233
233
  Parser::SourceParser.register_parser_type(:my_parser, MyParser, ['a', 'b', 'd'])
234
- Parser::SourceParser.parser_type_for_extension('a').should == :my_parser
235
- Parser::SourceParser.parser_type_for_extension('b').should == :my_parser
236
- Parser::SourceParser.parser_type_for_extension('d').should == :my_parser
237
- Parser::SourceParser.parser_type_for_extension('c').should_not == :my_parser
234
+ expect(Parser::SourceParser.parser_type_for_extension('a')).to eq :my_parser
235
+ expect(Parser::SourceParser.parser_type_for_extension('b')).to eq :my_parser
236
+ expect(Parser::SourceParser.parser_type_for_extension('d')).to eq :my_parser
237
+ expect(Parser::SourceParser.parser_type_for_extension('c')).not_to eq :my_parser
238
238
  end
239
239
 
240
- it "should find an extension in a Regexp" do
240
+ it "finds an extension in a Regexp" do
241
241
  Parser::SourceParser.register_parser_type(:my_parser, MyParser, /abc$/)
242
- Parser::SourceParser.parser_type_for_extension('dabc').should == :my_parser
243
- Parser::SourceParser.parser_type_for_extension('dabcd').should_not == :my_parser
242
+ expect(Parser::SourceParser.parser_type_for_extension('dabc')).to eq :my_parser
243
+ expect(Parser::SourceParser.parser_type_for_extension('dabcd')).not_to eq :my_parser
244
244
  end
245
245
 
246
- it "should find an extension in a list of Regexps" do
246
+ it "finds an extension in a list of Regexps" do
247
247
  Parser::SourceParser.register_parser_type(:my_parser, MyParser, [/ab$/, /abc$/])
248
- Parser::SourceParser.parser_type_for_extension('dabc').should == :my_parser
249
- Parser::SourceParser.parser_type_for_extension('dabcd').should_not == :my_parser
248
+ expect(Parser::SourceParser.parser_type_for_extension('dabc')).to eq :my_parser
249
+ expect(Parser::SourceParser.parser_type_for_extension('dabcd')).not_to eq :my_parser
250
250
  end
251
251
 
252
- it "should find an extension in a String" do
252
+ it "finds an extension in a String" do
253
253
  Parser::SourceParser.register_parser_type(:my_parser, MyParser, "abc")
254
- Parser::SourceParser.parser_type_for_extension('abc').should == :my_parser
255
- Parser::SourceParser.parser_type_for_extension('abcd').should_not == :my_parser
254
+ expect(Parser::SourceParser.parser_type_for_extension('abc')).to eq :my_parser
255
+ expect(Parser::SourceParser.parser_type_for_extension('abcd')).not_to eq :my_parser
256
256
  end
257
257
  end
258
258
 
259
- describe '#parse_string' do
260
- it "should parse basic Ruby code" do
259
+ describe "#parse_string" do
260
+ it "parses basic Ruby code" do
261
261
  YARD.parse_string(<<-eof)
262
262
  module Hello
263
263
  class Hi
@@ -267,13 +267,13 @@ describe YARD::Parser::SourceParser do
267
267
  end
268
268
  end
269
269
  eof
270
- Registry.at(:Hello).should_not == nil
271
- Registry.at("Hello::Hi#me").should_not == nil
272
- Registry.at("Hello::Hi#me").docstring.should == "Docstring\nDocstring2"
273
- Registry.at("Hello::Hi#me").docstring.line_range.should == (3..4)
270
+ expect(Registry.at(:Hello)).not_to eq nil
271
+ expect(Registry.at("Hello::Hi#me")).not_to eq nil
272
+ expect(Registry.at("Hello::Hi#me").docstring).to eq "Docstring\nDocstring2"
273
+ expect(Registry.at("Hello::Hi#me").docstring.line_range).to eq (3..4)
274
274
  end
275
275
 
276
- it "should parse Ruby code with metaclasses" do
276
+ it "parses Ruby code with metaclasses" do
277
277
  YARD.parse_string(<<-eof)
278
278
  module Hello
279
279
  class Hi
@@ -284,12 +284,12 @@ describe YARD::Parser::SourceParser do
284
284
  end
285
285
  end
286
286
  eof
287
- Registry.at(:Hello).should_not == nil
288
- Registry.at("Hello::Hi.me").should_not == nil
289
- Registry.at("Hello::Hi.me").docstring.should == "Docstring"
287
+ expect(Registry.at(:Hello)).not_to eq nil
288
+ expect(Registry.at("Hello::Hi.me")).not_to eq nil
289
+ expect(Registry.at("Hello::Hi.me").docstring).to eq "Docstring"
290
290
  end
291
291
 
292
- it "should only use prepended comments for an object" do
292
+ it "only uses prepended comments for an object" do
293
293
  YARD.parse_string(<<-eof)
294
294
  # Test
295
295
 
@@ -297,18 +297,18 @@ describe YARD::Parser::SourceParser do
297
297
  module Hello
298
298
  end # FAIL
299
299
  eof
300
- Registry.at(:Hello).docstring.should == "PASS"
300
+ expect(Registry.at(:Hello).docstring).to eq "PASS"
301
301
  end
302
302
 
303
- it "should not add comments appended to last line of block" do
303
+ it "does not add comments appended to last line of block" do
304
304
  YARD.parse_string <<-eof
305
305
  module Hello2
306
306
  end # FAIL
307
307
  eof
308
- Registry.at(:Hello2).docstring.should be_blank
308
+ expect(Registry.at(:Hello2).docstring).to be_blank
309
309
  end
310
310
 
311
- it "should add comments appended to an object's first line" do
311
+ it "adds comments appended to an object's first line" do
312
312
  YARD.parse_string <<-eof
313
313
  module Hello # PASS
314
314
  HELLO
@@ -320,12 +320,12 @@ describe YARD::Parser::SourceParser do
320
320
  end
321
321
  eof
322
322
 
323
- Registry.at(:Hello).docstring.should == "PASS"
324
- Registry.at(:Hello2).docstring.should == "PASS"
325
- Registry.at('Hello2#x').docstring.should == "ANOTHER PASS"
323
+ expect(Registry.at(:Hello).docstring).to eq "PASS"
324
+ expect(Registry.at(:Hello2).docstring).to eq "PASS"
325
+ expect(Registry.at('Hello2#x').docstring).to eq "ANOTHER PASS"
326
326
  end
327
327
 
328
- it "should take preceeding comments only if they exist" do
328
+ it "takes preceeding comments only if they exist" do
329
329
  YARD.parse_string <<-eof
330
330
  # PASS
331
331
  module Hello # FAIL
@@ -333,10 +333,10 @@ describe YARD::Parser::SourceParser do
333
333
  end
334
334
  eof
335
335
 
336
- Registry.at(:Hello).docstring.should == "PASS"
336
+ expect(Registry.at(:Hello).docstring).to eq "PASS"
337
337
  end
338
338
 
339
- it "should strip all hashes prefixed on comment line" do
339
+ it "strips all hashes prefixed on comment line" do
340
340
  YARD.parse_string(<<-eof)
341
341
  ### PASS
342
342
  #### PASS
@@ -344,38 +344,38 @@ describe YARD::Parser::SourceParser do
344
344
  module Hello
345
345
  end
346
346
  eof
347
- Registry.at(:Hello).docstring.should == "PASS\nPASS\nPASS"
347
+ expect(Registry.at(:Hello).docstring).to eq "PASS\nPASS\nPASS"
348
348
  end
349
349
 
350
- it "should handle =begin/=end style comments" do
350
+ it "handles =begin/=end style comments" do
351
351
  YARD.parse_string "=begin\nfoo\nbar\n=end\nclass Foo; end\n"
352
- Registry.at(:Foo).docstring.should == "foo\nbar"
352
+ expect(Registry.at(:Foo).docstring).to eq "foo\nbar"
353
353
 
354
354
  YARD.parse_string "=begin\n\nfoo\nbar\n=end\nclass Foo; end\n"
355
- Registry.at(:Foo).docstring.should == "foo\nbar"
355
+ expect(Registry.at(:Foo).docstring).to eq "foo\nbar"
356
356
 
357
357
  YARD.parse_string "=begin\nfoo\n\nbar\n=end\nclass Foo; end\n"
358
- Registry.at(:Foo).docstring.should == "foo\n\nbar"
358
+ expect(Registry.at(:Foo).docstring).to eq "foo\n\nbar"
359
359
  end
360
360
 
361
- it "should know about docstrings starting with ##" do
361
+ it "knows about docstrings starting with ##" do
362
362
  {'#' => false, '##' => true}.each do |hash, expected|
363
363
  YARD.parse_string "#{hash}\n# Foo bar\nclass Foo; end"
364
- Registry.at(:Foo).docstring.hash_flag.should == expected
364
+ expect(Registry.at(:Foo).docstring.hash_flag).to eq expected
365
365
  end
366
366
  end
367
367
 
368
- it "should remove shebang from initial file comments" do
368
+ it "removes shebang from initial file comments" do
369
369
  YARD.parse_string "#!/bin/ruby\n# this is a comment\nclass Foo; end"
370
- Registry.at(:Foo).docstring.should == "this is a comment"
370
+ expect(Registry.at(:Foo).docstring).to eq "this is a comment"
371
371
  end
372
372
 
373
- it "should remove encoding line from initial file comments" do
373
+ it "removes encoding line from initial file comments" do
374
374
  YARD.parse_string "# encoding: utf-8\n# this is a comment\nclass Foo; end"
375
- Registry.at(:Foo).docstring.should == "this is a comment"
375
+ expect(Registry.at(:Foo).docstring).to eq "this is a comment"
376
376
  end
377
377
 
378
- it "should add macros on any object" do
378
+ it "adds macros on any object" do
379
379
  YARD.parse_string <<-eof
380
380
  # @!macro [new] foo
381
381
  # This is a macro
@@ -387,12 +387,12 @@ describe YARD::Parser::SourceParser do
387
387
  eof
388
388
 
389
389
  macro = CodeObjects::MacroObject.find('foo')
390
- macro.macro_data.should == "This is a macro\n@return [String] the string"
391
- Registry.at('Foo').docstring.to_raw.should == macro.macro_data
392
- Registry.at('Foo#foo').docstring.to_raw.should == macro.macro_data
390
+ expect(macro.macro_data).to eq "This is a macro\n@return [String] the string"
391
+ expect(Registry.at('Foo').docstring.to_raw).to eq macro.macro_data
392
+ expect(Registry.at('Foo#foo').docstring.to_raw).to eq macro.macro_data
393
393
  end
394
394
 
395
- it "should allow directives parsed on lone comments" do
395
+ it "allows directives parsed on lone comments" do
396
396
  YARD.parse_string(<<-eof)
397
397
  class Foo
398
398
  # @!method foo(a = "hello")
@@ -406,15 +406,15 @@ describe YARD::Parser::SourceParser do
406
406
  eof
407
407
  foo = Registry.at('Foo.foo')
408
408
  bar = Registry.at('Foo#bar')
409
- foo.should_not be_nil
410
- foo.visibility.should == :private
411
- foo.tag(:param).name.should == 'a'
412
- foo.tag(:return).types.should == ['Symbol']
413
- bar.should_not be_nil
414
- bar.signature.should == 'def bar(value)'
409
+ expect(foo).not_to be nil
410
+ expect(foo.visibility).to eq :private
411
+ expect(foo.tag(:param).name).to eq 'a'
412
+ expect(foo.tag(:return).types).to eq ['Symbol']
413
+ expect(bar).not_to be nil
414
+ expect(bar.signature).to eq 'def bar(value)'
415
415
  end
416
416
 
417
- it "should parse lone comments at end of blocks" do
417
+ it "parses lone comments at end of blocks" do
418
418
  YARD.parse_string(<<-eof)
419
419
  class Foo
420
420
  none
@@ -423,18 +423,18 @@ describe YARD::Parser::SourceParser do
423
423
  end
424
424
  eof
425
425
  foo = Registry.at('Foo#foo')
426
- foo.should_not be_nil
427
- foo.signature.should == 'def foo(a = "hello")'
426
+ expect(foo).not_to be nil
427
+ expect(foo.signature).to eq 'def foo(a = "hello")'
428
428
  end
429
429
 
430
- it "should handle lone comment with no code" do
430
+ it "handles lone comment with no code" do
431
431
  YARD.parse_string '# @!method foo(a = "hello")'
432
432
  foo = Registry.at('#foo')
433
- foo.should_not be_nil
434
- foo.signature.should == 'def foo(a = "hello")'
433
+ expect(foo).not_to be nil
434
+ expect(foo.signature).to eq 'def foo(a = "hello")'
435
435
  end
436
436
 
437
- it "should handle non-ASCII encoding in heredoc" do
437
+ it "handles non-ASCII encoding in heredoc" do
438
438
  YARD.parse_string <<-eof
439
439
  # encoding: utf-8
440
440
 
@@ -447,77 +447,77 @@ describe YARD::Parser::SourceParser do
447
447
  attr_accessor :foo
448
448
  end
449
449
  eof
450
- Registry.at('Foo').superclass.should == P('Bar')
450
+ expect(Registry.at('Foo').superclass).to eq P('Bar')
451
451
  end
452
452
  end
453
453
 
454
- describe '#parse' do
455
- it "should parse a basic Ruby file" do
454
+ describe "#parse" do
455
+ it "parses a basic Ruby file" do
456
456
  parse_file :example1, __FILE__
457
- Registry.at(:Hello).should_not == nil
458
- Registry.at("Hello::Hi#me").should_not == nil
459
- Registry.at("Hello::Hi#me").docstring.should == "Docstring"
457
+ expect(Registry.at(:Hello)).not_to eq nil
458
+ expect(Registry.at("Hello::Hi#me")).not_to eq nil
459
+ expect(Registry.at("Hello::Hi#me").docstring).to eq "Docstring"
460
460
  end
461
461
 
462
- it "should parse a set of file globs" do
463
- Dir.should_receive(:[]).with('lib/**/*.rb').and_return([])
462
+ it "parses a set of file globs" do
463
+ expect(Dir).to receive(:[]).with('lib/**/*.rb').and_return([])
464
464
  YARD.parse('lib/**/*.rb')
465
465
  end
466
466
 
467
- it "should parse a set of absolute paths" do
468
- Dir.should_not_receive(:[])
469
- File.should_receive(:file?).with('/path/to/file').and_return(true)
470
- File.should_receive(:read_binary).with('/path/to/file').and_return("")
467
+ it "parses a set of absolute paths" do
468
+ expect(Dir).not_to receive(:[])
469
+ expect(File).to receive(:file?).with('/path/to/file').and_return(true)
470
+ expect(File).to receive(:read_binary).with('/path/to/file').and_return("")
471
471
  YARD.parse('/path/to/file')
472
472
  end
473
473
 
474
- it "should clean paths before parsing" do
475
- File.should_receive(:open).and_return("")
474
+ it "cleans paths before parsing" do
475
+ expect(File).to receive(:open).and_return("")
476
476
  parser = Parser::SourceParser.new(:ruby, true)
477
477
  parser.parse('a//b//c')
478
- parser.file.should == 'a/b/c'
478
+ expect(parser.file).to eq 'a/b/c'
479
479
  end
480
480
 
481
- it "should parse files with '*' in them as globs and others as absolute paths" do
482
- Dir.should_receive(:[]).with('*.rb').and_return(['a.rb', 'b.rb'])
483
- File.should_receive(:file?).with('/path/to/file').and_return(true)
484
- File.should_receive(:file?).with('a.rb').and_return(true)
485
- File.should_receive(:file?).with('b.rb').and_return(true)
486
- File.should_receive(:read_binary).with('/path/to/file').and_return("")
487
- File.should_receive(:read_binary).with('a.rb').and_return("")
488
- File.should_receive(:read_binary).with('b.rb').and_return("")
481
+ it "parses files with '*' in them as globs and others as absolute paths" do
482
+ expect(Dir).to receive(:[]).with('*.rb').and_return(['a.rb', 'b.rb'])
483
+ expect(File).to receive(:file?).with('/path/to/file').and_return(true)
484
+ expect(File).to receive(:file?).with('a.rb').and_return(true)
485
+ expect(File).to receive(:file?).with('b.rb').and_return(true)
486
+ expect(File).to receive(:read_binary).with('/path/to/file').and_return("")
487
+ expect(File).to receive(:read_binary).with('a.rb').and_return("")
488
+ expect(File).to receive(:read_binary).with('b.rb').and_return("")
489
489
  YARD.parse ['/path/to/file', '*.rb']
490
490
  end
491
491
 
492
- it "should convert directories into globs" do
493
- Dir.should_receive(:[]).with('foo/**/*.{rb,c}').and_return(['foo/a.rb', 'foo/bar/b.rb'])
494
- File.should_receive(:directory?).with('foo').and_return(true)
495
- File.should_receive(:file?).with('foo/a.rb').and_return(true)
496
- File.should_receive(:file?).with('foo/bar/b.rb').and_return(true)
497
- File.should_receive(:read_binary).with('foo/a.rb').and_return("")
498
- File.should_receive(:read_binary).with('foo/bar/b.rb').and_return("")
492
+ it "converts directories into globs" do
493
+ expect(Dir).to receive(:[]).with('foo/**/*.{rb,c,cc,cxx,cpp}').and_return(['foo/a.rb', 'foo/bar/b.rb'])
494
+ expect(File).to receive(:directory?).with('foo').and_return(true)
495
+ expect(File).to receive(:file?).with('foo/a.rb').and_return(true)
496
+ expect(File).to receive(:file?).with('foo/bar/b.rb').and_return(true)
497
+ expect(File).to receive(:read_binary).with('foo/a.rb').and_return("")
498
+ expect(File).to receive(:read_binary).with('foo/bar/b.rb').and_return("")
499
499
  YARD.parse ['foo']
500
500
  end
501
501
 
502
- it "should use Registry.checksums cache if file is cached" do
502
+ it "uses Registry.checksums cache if file is cached" do
503
503
  data = 'DATA'
504
504
  hash = Registry.checksum_for(data)
505
- cmock = mock(:cmock)
506
- cmock.should_receive(:[]).with('foo/bar').and_return(hash)
507
- Registry.should_receive(:checksums).and_return(cmock)
508
- File.should_receive(:file?).with('foo/bar').and_return(true)
509
- File.should_receive(:read_binary).with('foo/bar').and_return(data)
505
+ cmock = double(:cmock)
506
+ expect(cmock).to receive(:[]).with('foo/bar').and_return(hash)
507
+ expect(Registry).to receive(:checksums).and_return(cmock)
508
+ expect(File).to receive(:file?).with('foo/bar').and_return(true)
509
+ expect(File).to receive(:read_binary).with('foo/bar').and_return(data)
510
510
  YARD.parse('foo/bar')
511
511
  end
512
512
 
513
- it "should support excluded paths" do
514
- File.should_receive(:file?).with('foo/bar').and_return(true)
515
- File.should_receive(:file?).with('foo/baz').and_return(true)
516
- File.should_not_receive(:read_binary)
513
+ it "supports excluded paths" do
514
+ expect(File).to receive(:file?).with('foo/bar').and_return(true)
515
+ expect(File).to receive(:file?).with('foo/baz').and_return(true)
516
+ expect(File).not_to receive(:read_binary)
517
517
  YARD.parse(["foo/bar", "foo/baz"], ["foo", /baz$/])
518
518
  end
519
519
 
520
- it "should convert file contents to proper encoding if coding line is present" do
520
+ it "converts file contents to proper encoding if coding line is present" do
521
521
  valid = []
522
522
  valid << "# encoding: sjis"
523
523
  valid << "# encoding: utf-8"
@@ -540,118 +540,118 @@ describe YARD::Parser::SourceParser do
540
540
  invalid << "#\n# encoding: sjis"
541
541
  invalid << "#!/bin/shebang\n#\n# encoding: sjis"
542
542
  invalid << "# !/bin/shebang\n# encoding: sjis"
543
- {:should => valid, :should_not => invalid}.each do |msg, list|
543
+ {:to => valid, :not_to => invalid}.each do |msg, list|
544
544
  list.each do |src|
545
545
  Registry.clear
546
546
  parser = Parser::SourceParser.new
547
- File.should_receive(:read_binary).with('tmpfile').and_return(src)
547
+ expect(File).to receive(:read_binary).with('tmpfile').and_return(src)
548
548
  result = parser.parse("tmpfile")
549
549
  if HAVE_RIPPER && YARD.ruby19?
550
- if msg == :should_not
550
+ if msg == :not_to
551
551
  default_encoding = 'UTF-8'
552
- result.enumerator[0].source.encoding.to_s.should eq(default_encoding)
552
+ expect(result.enumerator[0].source.encoding.to_s).to eq(default_encoding)
553
553
  else
554
- ['Shift_JIS', 'Windows-31J', 'UTF-8'].send(msg, include(
554
+ expect(['Shift_JIS', 'Windows-31J', 'UTF-8']).send(msg, include(
555
555
  result.enumerator[0].source.encoding.to_s))
556
556
  end
557
557
  end
558
- result.encoding_line.send(msg) == src.split("\n").last
558
+ expect(result.encoding_line).send(msg, eq(src.split("\n").last))
559
559
  end
560
560
  end
561
561
  end
562
562
 
563
- it "should convert C file contents to proper encoding if coding line is present" do
563
+ it "converts C file contents to proper encoding if coding line is present" do
564
564
  valid = []
565
565
  valid << "/* coding: utf-8 */"
566
566
  valid << "/* -*- coding: utf-8; c-file-style: \"ruby\" -*- */"
567
567
  valid << "// coding: utf-8"
568
568
  valid << "// -*- coding: utf-8; c-file-style: \"ruby\" -*-"
569
569
  invalid = []
570
- {:should => valid, :should_not => invalid}.each do |msg, list|
570
+ {:to => valid, :not_to => invalid}.each do |msg, list|
571
571
  list.each do |src|
572
572
  Registry.clear
573
573
  parser = Parser::SourceParser.new
574
- File.should_receive(:read_binary).with('tmpfile.c').and_return(src)
574
+ expect(File).to receive(:read_binary).with('tmpfile.c').and_return(src)
575
575
  result = parser.parse("tmpfile.c")
576
576
  content = result.instance_variable_get("@content")
577
- ['UTF-8'].send(msg, include(content.encoding.to_s))
577
+ expect(['UTF-8']).send(msg, include(content.encoding.to_s))
578
578
  end
579
579
  end
580
580
  end if YARD.ruby19?
581
581
 
582
582
  Parser::SourceParser::ENCODING_BYTE_ORDER_MARKS.each do |encoding, bom|
583
- it "should understand #{encoding.upcase} BOM" do
583
+ it "understands #{encoding.upcase} BOM" do
584
584
  parser = Parser::SourceParser.new
585
585
  src = bom + "class FooBar; end".force_encoding('binary')
586
586
  src.force_encoding('binary')
587
- File.should_receive(:read_binary).with('tmpfile').and_return(src)
587
+ expect(File).to receive(:read_binary).with('tmpfile').and_return(src)
588
588
  result = parser.parse('tmpfile')
589
- Registry.all(:class).first.path.should == "FooBar"
590
- result.enumerator[0].source.encoding.to_s.downcase.should == encoding
589
+ expect(Registry.all(:class).first.path).to eq "FooBar"
590
+ expect(result.enumerator[0].source.encoding.to_s.downcase).to eq encoding
591
591
  end
592
592
  end if HAVE_RIPPER && YARD.ruby19?
593
593
  end
594
594
 
595
- describe '#parse_in_order' do
595
+ describe "#parse_in_order" do
596
596
  def in_order_parse(*files)
597
597
  paths = files.map {|f| File.join(File.dirname(__FILE__), 'examples', f.to_s + '.rb.txt') }
598
598
  YARD::Parser::SourceParser.parse(paths, [], Logger::DEBUG)
599
599
  end
600
600
 
601
- it "should attempt to parse files in order" do
601
+ it "attempts to parse files in order" do
602
602
  log.enter_level(Logger::DEBUG) do
603
603
  msgs = []
604
- log.should_receive(:debug) {|m| msgs << m }.at_least(:once)
605
- log.stub(:<<)
604
+ expect(log).to receive(:debug) {|m| msgs << m }.at_least(:once)
605
+ allow(log).to receive(:<<)
606
606
  in_order_parse 'parse_in_order_001', 'parse_in_order_002'
607
- msgs[1].should =~ /Parsing .+parse_in_order_001.+/
608
- msgs[2].should =~ /Missing object MyModule/
609
- msgs[3].should =~ /Parsing .+parse_in_order_002.+/
610
- msgs[4].should =~ /Re-processing .+parse_in_order_001.+/
607
+ expect(msgs[1]).to match /Parsing .+parse_in_order_001.+/
608
+ expect(msgs[2]).to match /Missing object MyModule/
609
+ expect(msgs[3]).to match /Parsing .+parse_in_order_002.+/
610
+ expect(msgs[4]).to match /Re-processing .+parse_in_order_001.+/
611
611
  end
612
612
  end
613
613
 
614
- it "should attempt to order files by length for globs (process toplevel files first)" do
614
+ it "attempts to order files by length for globs (process toplevel files first)" do
615
615
  files = %w(a a/b a/b/c)
616
616
  files.each do |file|
617
- File.should_receive(:file?).with(file).and_return(true)
618
- File.should_receive(:read_binary).with(file).ordered.and_return('')
617
+ expect(File).to receive(:file?).with(file).and_return(true)
618
+ expect(File).to receive(:read_binary).with(file).ordered.and_return('')
619
619
  end
620
- Dir.should_receive(:[]).with('a/**/*').and_return(files.reverse)
620
+ expect(Dir).to receive(:[]).with('a/**/*').and_return(files.reverse)
621
621
  YARD.parse 'a/**/*'
622
622
  end
623
623
 
624
- it "should allow overriding of length sorting when single file is presented" do
624
+ it "allows overriding of length sorting when single file is presented" do
625
625
  files = %w(a/b/c a a/b)
626
626
  files.each do |file|
627
- File.should_receive(:file?).with(file).at_least(1).times.and_return(true)
628
- File.should_receive(:read_binary).with(file).ordered.and_return('')
627
+ expect(File).to receive(:file?).with(file).at_least(1).times.and_return(true)
628
+ expect(File).to receive(:read_binary).with(file).ordered.and_return('')
629
629
  end
630
- Dir.should_receive(:[]).with('a/**/*').and_return(files.reverse)
630
+ expect(Dir).to receive(:[]).with('a/**/*').and_return(files.reverse)
631
631
  YARD.parse ['a/b/c', 'a/**/*']
632
632
  end
633
633
  end
634
634
 
635
- describe '#parse_statements' do
635
+ describe "#parse_statements" do
636
636
  before do
637
637
  Registry.clear
638
638
  end
639
639
 
640
- it "should display a warning for invalid parser type" do
641
- log.should_receive(:warn).with(/unrecognized file/)
642
- log.should_receive(:backtrace)
640
+ it "displays a warning for invalid parser type" do
641
+ expect(log).to receive(:warn).with(/unrecognized file/)
642
+ expect(log).to receive(:backtrace)
643
643
  YARD::Parser::SourceParser.parse_string("int main() { }", :d)
644
644
  end
645
645
 
646
646
  if HAVE_RIPPER
647
- it "should display a warning for a syntax error (with new parser)" do
648
- log.should_receive(:warn).with(/Syntax error in/)
649
- log.should_receive(:backtrace)
647
+ it "displays a warning for a syntax error (with new parser)" do
648
+ expect(log).to receive(:warn).with(/Syntax error in/)
649
+ expect(log).to receive(:backtrace)
650
650
  YARD::Parser::SourceParser.parse_string("%!!!", :ruby)
651
651
  end
652
652
  end
653
653
 
654
- it "should handle groups" do
654
+ it "handles groups" do
655
655
  YARD.parse_string <<-eof
656
656
  class A
657
657
  # @group Group Name
@@ -667,34 +667,34 @@ describe YARD::Parser::SourceParser do
667
667
  end
668
668
  eof
669
669
 
670
- Registry.at('A').groups.should == ['Group Name', 'Group 2']
671
- Registry.at('A#bar').group.should be_nil
672
- Registry.at('A#foo').group.should == "Group Name"
673
- Registry.at('A#foo2').group.should == "Group Name"
674
- Registry.at('A#baz').group.should == "Group 2"
670
+ expect(Registry.at('A').groups).to eq ['Group Name', 'Group 2']
671
+ expect(Registry.at('A#bar').group).to be nil
672
+ expect(Registry.at('A#foo').group).to eq "Group Name"
673
+ expect(Registry.at('A#foo2').group).to eq "Group Name"
674
+ expect(Registry.at('A#baz').group).to eq "Group 2"
675
675
  end
676
676
 
677
- it 'handles multi-line class/module references' do
677
+ it "handles multi-line class/module references" do
678
678
  YARD.parse_string <<-eof
679
679
  class A::
680
680
  B::C; end
681
681
  eof
682
- Registry.all.should == [P('A::B::C')]
682
+ expect(Registry.all).to eq [P('A::B::C')]
683
683
  end
684
684
 
685
- it 'handles sclass definitions of multi-line class/module references' do
685
+ it "handles sclass definitions of multi-line class/module references" do
686
686
  YARD.parse_string <<-eof
687
687
  class << A::
688
688
  B::C
689
689
  def foo; end
690
690
  end
691
691
  eof
692
- Registry.all.size.should == 2
693
- Registry.at('A::B::C').should_not be_nil
694
- Registry.at('A::B::C.foo').should_not be_nil
692
+ expect(Registry.all.size).to eq 2
693
+ expect(Registry.at('A::B::C')).not_to be nil
694
+ expect(Registry.at('A::B::C.foo')).not_to be nil
695
695
  end
696
696
 
697
- it 'handles lone comment blocks at the end of a namespace' do
697
+ it "handles lone comment blocks at the end of a namespace" do
698
698
  YARD.parse_string <<-eof
699
699
  module A
700
700
  class B
@@ -704,23 +704,23 @@ describe YARD::Parser::SourceParser do
704
704
  end
705
705
  end
706
706
  eof
707
- Registry.at('A#d').should be_nil
708
- Registry.at('A::B#d').should_not be_nil
707
+ expect(Registry.at('A#d')).to be nil
708
+ expect(Registry.at('A::B#d')).not_to be nil
709
709
  end
710
710
 
711
711
  if YARD.ruby2?
712
- it 'supports named arguments with default values' do
712
+ it "supports named arguments with default values" do
713
713
  YARD.parse_string 'def foo(a, b = 1, *c, d, e: 3, **f, &g) end'
714
714
  args = [['a', nil], ['b', '1'], ['*c', nil], ['d', nil], ['e:', '3'], ['**f', nil], ['&g', nil]]
715
- Registry.at('#foo').parameters.should eq(args)
715
+ expect(Registry.at('#foo').parameters).to eq(args)
716
716
  end
717
717
  end
718
718
 
719
719
  if NAMED_OPTIONAL_ARGUMENTS && !LEGACY_PARSER
720
- it 'supports named arguments without default values' do
720
+ it "supports named arguments without default values" do
721
721
  YARD.parse_string 'def foo(a, b = 1, *c, d, e: 3, f:, **g, &h) end'
722
722
  args = [['a', nil], ['b', '1'], ['*c', nil], ['d', nil], ['e:', '3'], ['f:', nil], ['**g', nil], ['&h', nil]]
723
- Registry.at('#foo').parameters.should eq(args)
723
+ expect(Registry.at('#foo').parameters).to eq(args)
724
724
  end
725
725
  end
726
726
  end