spec/rubygems/doc_manager_spec.rb in yard-0.9.16 vs spec/rubygems/doc_manager_spec.rb in yard-0.9.17

- old
+ new

@@ -1,112 +1,112 @@ -# frozen_string_literal: true -require File.join(YARD::ROOT, 'rubygems_plugin') -require 'fileutils' - -RSpec.describe Gem::DocManager do - before do - # Ensure filesystem integrity - allow(FileUtils).to receive(:mkdir_p) - allow(FileUtils).to receive(:rm_rf) - allow(Dir).to receive(:chdir) - - allow(YARD::CLI::Yardoc).to receive(:run) - - @spec_file = File.join(YARD::ROOT, '..', 'yard.gemspec') - @spec = Gem::SourceIndex.load_specification(@spec_file) - @spec.has_yardoc = false # no yardoc docs for now - @yardopts = File.join(@spec.full_gem_path, '.yardopts') - @doc = Gem::DocManager.new(@spec) - allow(@doc).to receive(:install_ri_yard_orig) - allow(@doc).to receive(:install_rdoc_yard_orig) - end - - def runs; expect(YARD::CLI::Yardoc).to receive(:run) end - - describe ".load_yardoc" do - it "properly loads YARD" do - expect(Gem::DocManager).to receive(:require) do |path| - expect(File.expand_path(path)).to eq YARD::ROOT + '/yard' - end - Gem::DocManager.load_yardoc - end - end - - describe "#install_ri_yard" do - def install - msg = "Building YARD (yri) index for #{@spec.full_name}..." - expect(@doc).to receive(:say).with(msg) - @doc.install_ri_yard - end - - it "passes --quiet to all documentation" do - runs.with('-c', '-n', '--quiet', 'lib') - install - end - - it "passes extra_rdoc_files to documentation" do - @spec.extra_rdoc_files = %w(README LICENSE) - runs.with('-c', '-n', '--quiet', 'lib', '-', 'README', 'LICENSE') - install - end - - it "adds --backtrace if Gem.configuration.backtrace" do - Gem.configuration.backtrace = true - runs.with('-c', '-n', '--quiet', '--backtrace', 'lib') - install - Gem.configuration.backtrace = false - end - - it "adds require_paths if there is no .yardopts" do - expect(File).to receive(:file?).with(@yardopts).and_return(true) - runs.with('-c', '-n', '--quiet') - install - end - - it "adds extra_rdoc_files if there is no .yardopts" do - @spec.extra_rdoc_files = %w(README LICENSE) - expect(File).to receive(:file?).with(@yardopts).and_return(true) - runs.with('-c', '-n', '--quiet') - install - end - - it "switches to directory before running command" do - old = Dir.pwd - expect(Dir).to receive(:chdir).with(@spec.full_gem_path) - expect(Dir).to receive(:chdir).with(old) - install - end - - it "ensures that directory is switched back at end of command in failure" do - old = Dir.pwd - expect(Dir).to receive(:chdir).with(@spec.full_gem_path) - expect(Dir).to receive(:chdir).with(old) - expect(@doc.ui.errs).to receive(:puts).with(/ERROR:\s*While generating documentation/) - expect(@doc.ui.errs).to receive(:puts).with(/MESSAGE:\s*foo/) - expect(@doc.ui.errs).to receive(:puts).with(/YARDOC args:\s*-c -n --quiet lib/) - expect(@doc.ui.errs).to receive(:puts).with("(continuing with the rest of the installation)") - expect(YARD::CLI::Yardoc).to receive(:run).and_raise(RuntimeError.new("foo")) - install - end - - it "handles permission errors" do - expect(YARD::CLI::Yardoc).to receive(:run).and_raise(Errno::EACCES.new("- dir")) - expect { install }.to raise_error(Gem::FilePermissionError) - end - end - - describe "#install_rdoc_yard" do - def install - msg = "Installing YARD documentation for #{@spec.full_name}..." - expect(@doc).to receive(:say).with(msg) - @doc.install_rdoc_yard - end - - it "adds -o outdir when generating docs" do - expect(File).to receive(:file?).with(@yardopts).and_return(true) - @spec.has_yardoc = true - doc_dir = File.join(@doc.instance_variable_get("@doc_dir"), 'rdoc') - runs.with('-o', doc_dir, '--quiet') - install - end - end -end if Gem::VERSION < '2.0.0' +# frozen_string_literal: true +require File.join(YARD::ROOT, 'rubygems_plugin') +require 'fileutils' + +RSpec.describe Gem::DocManager do + before do + # Ensure filesystem integrity + allow(FileUtils).to receive(:mkdir_p) + allow(FileUtils).to receive(:rm_rf) + allow(Dir).to receive(:chdir) + + allow(YARD::CLI::Yardoc).to receive(:run) + + @spec_file = File.join(YARD::ROOT, '..', 'yard.gemspec') + @spec = Gem::SourceIndex.load_specification(@spec_file) + @spec.has_yardoc = false # no yardoc docs for now + @yardopts = File.join(@spec.full_gem_path, '.yardopts') + @doc = Gem::DocManager.new(@spec) + allow(@doc).to receive(:install_ri_yard_orig) + allow(@doc).to receive(:install_rdoc_yard_orig) + end + + def runs; expect(YARD::CLI::Yardoc).to receive(:run) end + + describe ".load_yardoc" do + it "properly loads YARD" do + expect(Gem::DocManager).to receive(:require) do |path| + expect(File.expand_path(path)).to eq YARD::ROOT + '/yard' + end + Gem::DocManager.load_yardoc + end + end + + describe "#install_ri_yard" do + def install + msg = "Building YARD (yri) index for #{@spec.full_name}..." + expect(@doc).to receive(:say).with(msg) + @doc.install_ri_yard + end + + it "passes --quiet to all documentation" do + runs.with('-c', '-n', '--quiet', 'lib') + install + end + + it "passes extra_rdoc_files to documentation" do + @spec.extra_rdoc_files = %w(README LICENSE) + runs.with('-c', '-n', '--quiet', 'lib', '-', 'README', 'LICENSE') + install + end + + it "adds --backtrace if Gem.configuration.backtrace" do + Gem.configuration.backtrace = true + runs.with('-c', '-n', '--quiet', '--backtrace', 'lib') + install + Gem.configuration.backtrace = false + end + + it "adds require_paths if there is no .yardopts" do + expect(File).to receive(:file?).with(@yardopts).and_return(true) + runs.with('-c', '-n', '--quiet') + install + end + + it "adds extra_rdoc_files if there is no .yardopts" do + @spec.extra_rdoc_files = %w(README LICENSE) + expect(File).to receive(:file?).with(@yardopts).and_return(true) + runs.with('-c', '-n', '--quiet') + install + end + + it "switches to directory before running command" do + old = Dir.pwd + expect(Dir).to receive(:chdir).with(@spec.full_gem_path) + expect(Dir).to receive(:chdir).with(old) + install + end + + it "ensures that directory is switched back at end of command in failure" do + old = Dir.pwd + expect(Dir).to receive(:chdir).with(@spec.full_gem_path) + expect(Dir).to receive(:chdir).with(old) + expect(@doc.ui.errs).to receive(:puts).with(/ERROR:\s*While generating documentation/) + expect(@doc.ui.errs).to receive(:puts).with(/MESSAGE:\s*foo/) + expect(@doc.ui.errs).to receive(:puts).with(/YARDOC args:\s*-c -n --quiet lib/) + expect(@doc.ui.errs).to receive(:puts).with("(continuing with the rest of the installation)") + expect(YARD::CLI::Yardoc).to receive(:run).and_raise(RuntimeError.new("foo")) + install + end + + it "handles permission errors" do + expect(YARD::CLI::Yardoc).to receive(:run).and_raise(Errno::EACCES.new("- dir")) + expect { install }.to raise_error(Gem::FilePermissionError) + end + end + + describe "#install_rdoc_yard" do + def install + msg = "Installing YARD documentation for #{@spec.full_name}..." + expect(@doc).to receive(:say).with(msg) + @doc.install_rdoc_yard + end + + it "adds -o outdir when generating docs" do + expect(File).to receive(:file?).with(@yardopts).and_return(true) + @spec.has_yardoc = true + doc_dir = File.join(@doc.instance_variable_get("@doc_dir"), 'rdoc') + runs.with('-o', doc_dir, '--quiet') + install + end + end +end if Gem::VERSION < '2.0.0'