mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
Add unit tests for PluginInstaller
This commit is contained in:
parent
e6ddd93ece
commit
856628d8ef
1 changed files with 98 additions and 0 deletions
98
spec/lib/capistrano/configuration/plugin_installer_spec.rb
Normal file
98
spec/lib/capistrano/configuration/plugin_installer_spec.rb
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
require "spec_helper"
|
||||||
|
require "capistrano/plugin"
|
||||||
|
require "capistrano/scm/plugin"
|
||||||
|
|
||||||
|
module Capistrano
|
||||||
|
class Configuration
|
||||||
|
class ExamplePlugin < Capistrano::Plugin
|
||||||
|
def set_defaults
|
||||||
|
set_if_empty :example_variable, "foo"
|
||||||
|
end
|
||||||
|
|
||||||
|
def define_tasks
|
||||||
|
task :example
|
||||||
|
task :example_prerequisite
|
||||||
|
end
|
||||||
|
|
||||||
|
def register_hooks
|
||||||
|
before :example, :example_prerequisite
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class ExampleSCMPlugin < Capistrano::SCM::Plugin
|
||||||
|
end
|
||||||
|
|
||||||
|
describe PluginInstaller do
|
||||||
|
include Capistrano::DSL
|
||||||
|
|
||||||
|
let(:installer) { PluginInstaller.new }
|
||||||
|
let(:options) { {} }
|
||||||
|
let(:plugin) { ExamplePlugin.new }
|
||||||
|
|
||||||
|
before do
|
||||||
|
installer.install(plugin, **options)
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
Rake::Task.clear
|
||||||
|
Capistrano::Configuration.reset!
|
||||||
|
end
|
||||||
|
|
||||||
|
context "installing plugin" do
|
||||||
|
it "defines tasks" do
|
||||||
|
expect(Rake::Task[:example]).to_not be_nil
|
||||||
|
expect(Rake::Task[:example_prerequisite]).to_not be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "registers hooks" do
|
||||||
|
task = Rake::Task[:example]
|
||||||
|
expect(task.prerequisites).to eq([:example_prerequisite])
|
||||||
|
end
|
||||||
|
|
||||||
|
it "sets defaults when load:defaults is invoked" do
|
||||||
|
expect(fetch(:example_variable)).to be_nil
|
||||||
|
invoke "load:defaults"
|
||||||
|
expect(fetch(:example_variable)).to eq("foo")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't say an SCM is installed" do
|
||||||
|
expect(installer.scm_installed?).to be_falsey
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "installing plugin class" do
|
||||||
|
let(:plugin) { ExamplePlugin }
|
||||||
|
|
||||||
|
it "defines tasks" do
|
||||||
|
expect(Rake::Task[:example]).to_not be_nil
|
||||||
|
expect(Rake::Task[:example_prerequisite]).to_not be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "installing plugin without hooks" do
|
||||||
|
let(:options) { { load_hooks: false } }
|
||||||
|
|
||||||
|
it "doesn't register hooks" do
|
||||||
|
task = Rake::Task[:example]
|
||||||
|
expect(task.prerequisites).to be_empty
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "installing plugin and loading immediately" do
|
||||||
|
let(:options) { { load_immediately: true } }
|
||||||
|
|
||||||
|
it "sets defaults immediately" do
|
||||||
|
expect(fetch(:example_variable)).to eq("foo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "installing an SCM plugin" do
|
||||||
|
let(:plugin) { ExampleSCMPlugin }
|
||||||
|
|
||||||
|
it "says an SCM is installed" do
|
||||||
|
expect(installer.scm_installed?).to be_truthy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue