Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion lib/rdoc/rubygems_hook.rb
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,9 @@ def document generator, options, destination
options.exclude ||= [] # TODO maybe move to RDoc::Options#finish
options.setup_generator generator
options.op_dir = destination
options.finish
Dir.chdir @spec.full_gem_path do
options.finish
end

generator = options.generator.new @rdoc.store, options

Expand Down
52 changes: 29 additions & 23 deletions test/rdoc/test_rdoc_rubygems_hook.rb
Original file line number Diff line number Diff line change
@@ -1,40 +1,46 @@
# frozen_string_literal: true
require 'rubygems/test_case'
require "rubygems"
require "fileutils"
require "tmpdir"
require 'rdoc/rubygems_hook'
require "test/unit"

class TestRDocRubygemsHook < Gem::TestCase
unless method_defined?(:assert_path_exist)
alias assert_path_exist assert_path_exists
end
unless method_defined?(:assert_path_not_exist)
alias assert_path_not_exist refute_path_exists
end
unless method_defined?(:assert_raise)
alias assert_raise assert_raises
end

class TestRDocRubygemsHook < Test::Unit::TestCase
def setup
super
FileUtils.mkdir_p File.expand_path("tmp")

@a = util_spec 'a', 2 do |s|
@a = Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.name = "a"
s.version = 2
s.rdoc_options = %w[--main MyTitle]
s.extra_rdoc_files = %w[README]
end
@tempdir = Dir.mktmpdir("test_rubygems_", File.expand_path("tmp"))

write_file File.join(@tempdir, 'lib', 'a.rb')
write_file File.join(@tempdir, 'README')
@a.instance_variable_set(:@doc_dir, File.join(@tempdir, "doc"))
@a.instance_variable_set(:@gem_dir, File.join(@tempdir, "a-2"))
@a.instance_variable_set(:@full_gem_path, File.join(@tempdir, "a-2"))
@a.loaded_from = File.join(@tempdir, 'a-2', 'a-2.gemspec')

install_gem @a
FileUtils.mkdir_p File.join(@tempdir, 'a-2', 'lib')
FileUtils.touch File.join(@tempdir, 'a-2', 'lib', 'a.rb')
FileUtils.touch File.join(@tempdir, 'a-2', 'README')

@hook = RDoc::RubygemsHook.new @a

begin
RDoc::RubygemsHook.load_rdoc
rescue Gem::DocumentError => e
skip e.message
pend e.message
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an interesting change, would pend be interchangeable with omit here?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I was late to the conversation, sorry about that.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what differences pend and omit.

@kou Do you have any opinion about them?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

omit is suitable for this case.
omit for omitting the test because the test isn't needed to be ran.
pend for omitting the test temporary. The test should be fixed later.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally, pend is used with a block.

If the given block is failed, it's expected for pend. The test is marked as "pending".

If the given block is not failed, it's unexpected for pend. The test is marked as "failed".

require "test-unit"

class T < Test::Unit::TestCase
  test "pend: pass" do
    pend "XXX" do
      assert_equal("AAA", "AAA")
    end
  end

  test "pend: failure" do
    pend "XXX" do
      assert_equal("AAA", "BBB")
    end
  end
end

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kou Thanks! I understood them.

end
@old_ui = Gem::DefaultUserInteraction.ui
Gem::DefaultUserInteraction.ui = Gem::SilentUI.new
end

Gem.configuration[:rdoc] = nil
def teardown
Gem::DefaultUserInteraction.ui = @old_ui
FileUtils.rm_rf File.expand_path("tmp")
end

def test_initialize
Expand Down Expand Up @@ -214,8 +220,8 @@ def test_remove
end

def test_remove_unwritable
skip 'chmod not supported' if Gem.win_platform?
skip "assumes that euid is not root" if Process.euid == 0
pend 'chmod not supported' if Gem.win_platform?
pend "assumes that euid is not root" if Process.euid == 0

FileUtils.mkdir_p @a.base_dir
FileUtils.chmod 0, @a.base_dir
Expand Down Expand Up @@ -244,8 +250,8 @@ def test_setup
end

def test_setup_unwritable
skip 'chmod not supported' if Gem.win_platform?
skip "assumes that euid is not root" if Process.euid == 0
pend 'chmod not supported' if Gem.win_platform?
pend "assumes that euid is not root" if Process.euid == 0

FileUtils.mkdir_p @a.doc_dir
FileUtils.chmod 0, @a.doc_dir
Expand Down