Skip to content

Commit 01bdbcd

Browse files
authored
Add attribute :force to RDoc::RubygemsHook just like RDoc::RubyGemsHook (#1244)
Rubygems creates an instance of RDoc::RubygemsHook, sets `doc.force = overwrite`, then calls `doc.generate` the document. RDoc::RubygemsHook needs attribute `:force` just like RDoc::RubyGemsHook.
1 parent c6193bf commit 01bdbcd

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

lib/rdoc/rubygems_hook.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ def setup
271271
module RDoc
272272
class RubygemsHook
273273

274-
attr_accessor :generate_rdoc, :generate_ri
274+
attr_accessor :generate_rdoc, :generate_ri, :force
275275

276276
def self.default_gem?
277277
!File.exist?(File.join(__dir__, "..", "rubygems_plugin.rb"))
@@ -281,14 +281,17 @@ def initialize(spec, generate_rdoc = false, generate_ri = true)
281281
@spec = spec
282282
@generate_rdoc = generate_rdoc
283283
@generate_ri = generate_ri
284+
@force = false
284285
end
285286

286287
def generate
287288
# Do nothing if this is NOT a default gem.
288289
return unless self.class.default_gem?
289290

290291
# Generate document for compatibility if this is a default gem.
291-
RubyGemsHook.new(@spec, @generate_rdoc, @generate_ri).generate
292+
hook = RubyGemsHook.new(@spec, @generate_rdoc, @generate_ri)
293+
hook.force = @force
294+
hook.generate
292295
end
293296

294297
def remove

test/rdoc/test_rdoc_rubygems_hook.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,25 @@ def test_generate_force
200200
assert_path_exist File.join(@a.doc_dir('ri'), 'cache.ri')
201201
end
202202

203+
def test_generate_rubygems_compatible
204+
original_default_gem_method = RDoc::RubygemsHook.method(:default_gem?)
205+
RDoc::RubygemsHook.singleton_class.remove_method(:default_gem?)
206+
RDoc::RubygemsHook.define_singleton_method(:default_gem?) { true }
207+
FileUtils.mkdir_p @a.doc_dir 'ri'
208+
FileUtils.mkdir_p @a.doc_dir 'rdoc'
209+
FileUtils.mkdir_p File.join(@a.gem_dir, 'lib')
210+
211+
# rubygems/lib/rubygems/commands/rdoc_command.rb calls this
212+
hook = RDoc::RubygemsHook.new @a, true, true
213+
hook.force = true
214+
hook.generate
215+
216+
assert_path_exist File.join(@a.doc_dir('rdoc'), 'index.html')
217+
ensure
218+
RDoc::RubygemsHook.singleton_class.remove_method(:default_gem?)
219+
RDoc::RubygemsHook.define_singleton_method(:default_gem?, &original_default_gem_method)
220+
end
221+
203222
def test_generate_no_overwrite
204223
FileUtils.mkdir_p @a.doc_dir 'ri'
205224
FileUtils.mkdir_p @a.doc_dir 'rdoc'

0 commit comments

Comments
 (0)