justsee-sprinkle 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CREDITS +22 -0
- data/History.txt +4 -0
- data/MIT-LICENSE +20 -0
- data/Manifest.txt +100 -0
- data/README.txt +241 -0
- data/Rakefile +4 -0
- data/bin/sprinkle +86 -0
- data/config/hoe.rb +70 -0
- data/config/requirements.rb +17 -0
- data/examples/packages/build_essential.rb +9 -0
- data/examples/packages/databases/mysql.rb +13 -0
- data/examples/packages/databases/sqlite3.rb +16 -0
- data/examples/packages/phusion.rb +55 -0
- data/examples/packages/ruby/rails.rb +9 -0
- data/examples/packages/ruby/ruby.rb +17 -0
- data/examples/packages/ruby/rubygems.rb +17 -0
- data/examples/packages/scm/git.rb +11 -0
- data/examples/packages/scm/subversion.rb +4 -0
- data/examples/packages/servers/apache.rb +15 -0
- data/examples/rails/README +15 -0
- data/examples/rails/deploy.rb +2 -0
- data/examples/rails/packages/database.rb +9 -0
- data/examples/rails/packages/essential.rb +9 -0
- data/examples/rails/packages/rails.rb +28 -0
- data/examples/rails/packages/scm.rb +11 -0
- data/examples/rails/packages/search.rb +11 -0
- data/examples/rails/packages/server.rb +28 -0
- data/examples/rails/rails.rb +73 -0
- data/examples/sprinkle/sprinkle.rb +38 -0
- data/lib/sprinkle.rb +32 -0
- data/lib/sprinkle/actors/actors.rb +17 -0
- data/lib/sprinkle/actors/capistrano.rb +124 -0
- data/lib/sprinkle/actors/local.rb +30 -0
- data/lib/sprinkle/actors/ssh.rb +81 -0
- data/lib/sprinkle/actors/vlad.rb +65 -0
- data/lib/sprinkle/configurable.rb +31 -0
- data/lib/sprinkle/deployment.rb +73 -0
- data/lib/sprinkle/extensions/arbitrary_options.rb +10 -0
- data/lib/sprinkle/extensions/array.rb +5 -0
- data/lib/sprinkle/extensions/blank_slate.rb +5 -0
- data/lib/sprinkle/extensions/dsl_accessor.rb +15 -0
- data/lib/sprinkle/extensions/string.rb +10 -0
- data/lib/sprinkle/extensions/symbol.rb +7 -0
- data/lib/sprinkle/installers/apt.rb +52 -0
- data/lib/sprinkle/installers/bsd_port.rb +33 -0
- data/lib/sprinkle/installers/deb.rb +38 -0
- data/lib/sprinkle/installers/freebsd_pkg.rb +37 -0
- data/lib/sprinkle/installers/gem.rb +63 -0
- data/lib/sprinkle/installers/installer.rb +120 -0
- data/lib/sprinkle/installers/mac_port.rb +38 -0
- data/lib/sprinkle/installers/openbsd_pkg.rb +47 -0
- data/lib/sprinkle/installers/opensolaris_pkg.rb +43 -0
- data/lib/sprinkle/installers/push_text.rb +45 -0
- data/lib/sprinkle/installers/rake.rb +37 -0
- data/lib/sprinkle/installers/rpm.rb +37 -0
- data/lib/sprinkle/installers/source.rb +179 -0
- data/lib/sprinkle/installers/yum.rb +37 -0
- data/lib/sprinkle/package.rb +275 -0
- data/lib/sprinkle/policy.rb +125 -0
- data/lib/sprinkle/script.rb +23 -0
- data/lib/sprinkle/verifiers/directory.rb +16 -0
- data/lib/sprinkle/verifiers/executable.rb +36 -0
- data/lib/sprinkle/verifiers/file.rb +26 -0
- data/lib/sprinkle/verifiers/process.rb +21 -0
- data/lib/sprinkle/verifiers/ruby.rb +25 -0
- data/lib/sprinkle/verifiers/symlink.rb +30 -0
- data/lib/sprinkle/verify.rb +114 -0
- data/lib/sprinkle/version.rb +9 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/sprinkle/actors/capistrano_spec.rb +170 -0
- data/spec/sprinkle/actors/local_spec.rb +29 -0
- data/spec/sprinkle/configurable_spec.rb +46 -0
- data/spec/sprinkle/deployment_spec.rb +80 -0
- data/spec/sprinkle/extensions/array_spec.rb +19 -0
- data/spec/sprinkle/extensions/string_spec.rb +21 -0
- data/spec/sprinkle/installers/apt_spec.rb +70 -0
- data/spec/sprinkle/installers/bsd_port_spec.rb +42 -0
- data/spec/sprinkle/installers/freebsd_pkg_spec.rb +49 -0
- data/spec/sprinkle/installers/gem_spec.rb +91 -0
- data/spec/sprinkle/installers/installer_spec.rb +151 -0
- data/spec/sprinkle/installers/mac_port_spec.rb +42 -0
- data/spec/sprinkle/installers/openbsd_pkg_spec.rb +49 -0
- data/spec/sprinkle/installers/opensolaris_pkg_spec.rb +49 -0
- data/spec/sprinkle/installers/push_text_spec.rb +55 -0
- data/spec/sprinkle/installers/rake_spec.rb +29 -0
- data/spec/sprinkle/installers/rpm_spec.rb +50 -0
- data/spec/sprinkle/installers/source_spec.rb +331 -0
- data/spec/sprinkle/installers/yum_spec.rb +49 -0
- data/spec/sprinkle/policy_spec.rb +126 -0
- data/spec/sprinkle/script_spec.rb +51 -0
- data/spec/sprinkle/sprinkle_spec.rb +25 -0
- data/spec/sprinkle/verify_spec.rb +167 -0
- data/sprinkle.gemspec +73 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/rspec.rake +21 -0
- metadata +195 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Sprinkle::Installers::Yum do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
@package = mock(Sprinkle::Package, :name => 'package')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def create_rpm(rpms, &block)
|
|
10
|
+
Sprinkle::Installers::Yum.new(@package, rpms, &block)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe 'when created' do
|
|
14
|
+
|
|
15
|
+
it 'should accept a single package to install' do
|
|
16
|
+
@installer = create_rpm 'ruby'
|
|
17
|
+
@installer.packages.should == [ 'ruby' ]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'should accept an array of packages to install' do
|
|
21
|
+
@installer = create_rpm %w( gcc gdb g++ )
|
|
22
|
+
@installer.packages.should == ['gcc', 'gdb', 'g++']
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe 'during installation' do
|
|
28
|
+
|
|
29
|
+
before do
|
|
30
|
+
@installer = create_rpm 'ruby' do
|
|
31
|
+
pre :install, 'op1'
|
|
32
|
+
post :install, 'op2'
|
|
33
|
+
end
|
|
34
|
+
@install_commands = @installer.send :install_commands
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'should invoke the rpm installer for all specified packages' do
|
|
38
|
+
@install_commands.should =~ /yum install ruby -y/
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'should automatically insert pre/post commands for the specified package' do
|
|
42
|
+
@installer.send(:install_sequence).should == [ 'op1', 'yum install ruby -y', 'op2' ]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'should install a specific version if defined'
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Sprinkle::Policy do
|
|
4
|
+
include Sprinkle::Policy
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
@name = 'a policy'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe 'when created' do
|
|
11
|
+
|
|
12
|
+
it 'should be invalid without a name' do
|
|
13
|
+
lambda { policy nil }.should raise_error
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should be invalid without role definitions' do
|
|
17
|
+
lambda { policy @name do; end }.should raise_error
|
|
18
|
+
lambda { policy @name, :roles => :app do; end }.should_not raise_error
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'should optionally accept package dependencies' do
|
|
22
|
+
p = policy @name, :roles => :app do; end
|
|
23
|
+
p.should respond_to(:requires)
|
|
24
|
+
p.requires :appserver
|
|
25
|
+
p.packages.should == [ :appserver ]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'should optionally accept package dependencies with versions' do
|
|
29
|
+
p = policy @name, :roles => :app do; end
|
|
30
|
+
p.requires :appserver, :version => 2
|
|
31
|
+
p.packages.should == [ :appserver ]
|
|
32
|
+
pending 'requires version checking implementation'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'should add itself to the global policy list' do
|
|
36
|
+
sz = Sprinkle::Policy::POLICIES.size
|
|
37
|
+
p = policy @name, :roles => :app do; end
|
|
38
|
+
Sprinkle::Policy::POLICIES.size.should == sz + 1
|
|
39
|
+
Sprinkle::Policy::POLICIES.last.should == p
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe 'with packages' do
|
|
45
|
+
include Sprinkle::Package
|
|
46
|
+
|
|
47
|
+
before do
|
|
48
|
+
@deployment = mock(Sprinkle::Deployment)
|
|
49
|
+
Sprinkle::Package::PACKAGES.clear # reset full package list before each spec is run
|
|
50
|
+
|
|
51
|
+
@a = package :a do; requires :b; requires :c; end
|
|
52
|
+
@b = package :b, :provides => :xyz do; end
|
|
53
|
+
@c = package :c, :provides => :abc do; end
|
|
54
|
+
@d = package :d, :provides => :abc do; end
|
|
55
|
+
|
|
56
|
+
@policy = policy :test, :roles => :app do; requires :a; end
|
|
57
|
+
$terminal.stub!(:choose).and_return(:c) # stub out highline asking questions
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe 'when applying' do
|
|
61
|
+
include Sprinkle::Package
|
|
62
|
+
|
|
63
|
+
it 'should determine the packages to install via the hierarchy dependency tree of each package in the policy' do
|
|
64
|
+
@a.should_receive(:process).and_return
|
|
65
|
+
@b.should_receive(:process).and_return
|
|
66
|
+
@c.should_receive(:process).and_return
|
|
67
|
+
@d.should_not_receive(:process)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it 'should normalize (ie remove duplicates from) the installation order of all packages including dependencies' do
|
|
71
|
+
@e = package :e do; requires :b; end
|
|
72
|
+
@policy.requires :e
|
|
73
|
+
|
|
74
|
+
@a.should_receive(:process).once.and_return
|
|
75
|
+
@b.should_receive(:process).once.and_return
|
|
76
|
+
@c.should_receive(:process).once.and_return
|
|
77
|
+
@d.should_not_receive(:process)
|
|
78
|
+
@e.should_receive(:process).once.and_return
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe 'containing package dependencies with versions' do
|
|
83
|
+
|
|
84
|
+
it 'should be invalid if the specified package does not exist'
|
|
85
|
+
it 'should ignore any packages of the same name that have other versions'
|
|
86
|
+
it 'should select the correct package version when applying'
|
|
87
|
+
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe 'containing virtual packages' do
|
|
91
|
+
|
|
92
|
+
it 'should automatically select a concrete package implementation for a virtual one when there exists only one possible selection' do
|
|
93
|
+
@policy = policy :virtual, :roles => :app do; requires :xyz; end
|
|
94
|
+
Sprinkle::Package::PACKAGES[:xyz].should == [ @b ]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'should ask the user for the concrete package implementation to use for a virtual one when more than one possible choice exists' do
|
|
98
|
+
@policy = policy :virtual, :roles => :app do; requires :abc; end
|
|
99
|
+
Sprinkle::Package::PACKAGES[:abc].should include(@c)
|
|
100
|
+
Sprinkle::Package::PACKAGES[:abc].should include(@d)
|
|
101
|
+
$terminal.should_receive(:choose).and_return(:c)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
after do
|
|
107
|
+
@policy.process(@deployment)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
describe Sprinkle::Policy, 'with missing packages' do
|
|
113
|
+
|
|
114
|
+
before do
|
|
115
|
+
@deployment = mock(Sprinkle::Deployment)
|
|
116
|
+
Sprinkle::Package::PACKAGES.clear # reset full package list before each spec is run
|
|
117
|
+
|
|
118
|
+
@policy = policy :test, :roles => :app do; requires :z; end
|
|
119
|
+
$terminal.stub!(:choose).and_return(:c) # stub out highline asking questions
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it 'should raise an error if a package is missing' do
|
|
123
|
+
lambda { @policy.process(@deployment) }.should raise_error
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Sprinkle::Script, 'class' do
|
|
4
|
+
|
|
5
|
+
it 'should define a entry point into the system' do
|
|
6
|
+
Sprinkle::Script.should respond_to(:sprinkle)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe Sprinkle::Script, 'when given a script' do
|
|
12
|
+
|
|
13
|
+
before do
|
|
14
|
+
@script = 'script'
|
|
15
|
+
@filename = 'filename'
|
|
16
|
+
|
|
17
|
+
@sprinkle = Sprinkle::Script.new
|
|
18
|
+
Sprinkle::Script.stub!(:new).and_return(@sprinkle)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'should create a new sprinkle instance' do
|
|
22
|
+
Sprinkle::Script.should_receive(:new).and_return(@sprinkle)
|
|
23
|
+
Sprinkle::Script.sprinkle @script
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'should evaulate the sprinkle script against the instance' do
|
|
27
|
+
@sprinkle.should_receive(:instance_eval).and_return
|
|
28
|
+
Sprinkle::Script.sprinkle @script
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'should specify the filename if given for line number errors' do
|
|
32
|
+
@sprinkle.should_receive(:instance_eval).with(@script, @filename).and_return
|
|
33
|
+
Sprinkle::Script.sprinkle @script, @filename
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'should specify a filename of __SCRIPT__ by default if none is provided' do
|
|
37
|
+
@sprinkle.should_receive(:instance_eval).with(@script, '__SCRIPT__').and_return
|
|
38
|
+
Sprinkle::Script.sprinkle @script
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'should automatically run in production mode by default' do
|
|
42
|
+
@sprinkle.should_receive(:instance_eval).with(@script, '__SCRIPT__').and_return
|
|
43
|
+
Sprinkle::Script.sprinkle @script
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it 'should ask the Sprinkle instance to process the data from the script' do
|
|
47
|
+
@sprinkle.should_receive(:sprinkle)
|
|
48
|
+
Sprinkle::Script.sprinkle @script
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Sprinkle do
|
|
4
|
+
|
|
5
|
+
it 'should automatically extend Object to support package, policy and deployment DSL keywords' do
|
|
6
|
+
%w( package policy deployment ).each do |keyword|
|
|
7
|
+
Object.should respond_to(keyword.to_sym)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should default to production mode' do
|
|
12
|
+
Sprinkle::OPTIONS[:testing].should be_false
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'should automatically create a logger object on Kernel' do
|
|
16
|
+
Object.should respond_to(:logger)
|
|
17
|
+
logger.should_not be_nil
|
|
18
|
+
logger.class.should == ActiveSupport::BufferedLogger
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it 'should create a logger of level INFO' do
|
|
22
|
+
logger.level.should == ActiveSupport::BufferedLogger::Severity::INFO
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Sprinkle::Verify do
|
|
4
|
+
before do
|
|
5
|
+
@name = :package
|
|
6
|
+
@package = package @name do
|
|
7
|
+
gem 'nonexistent'
|
|
8
|
+
verify 'moo' do
|
|
9
|
+
# Check a file exists
|
|
10
|
+
has_file 'my_file.txt'
|
|
11
|
+
|
|
12
|
+
# Check that a file contains a substring
|
|
13
|
+
file_contains 'my_file.txt', 'A sunny day on the lower east-side'
|
|
14
|
+
|
|
15
|
+
# Check a directory exists
|
|
16
|
+
has_directory 'mydir'
|
|
17
|
+
|
|
18
|
+
# Check a symlink exists
|
|
19
|
+
has_symlink 'mypointer'
|
|
20
|
+
|
|
21
|
+
# Check a symlink points to a certain file
|
|
22
|
+
has_symlink 'mypointer', 'myfile'
|
|
23
|
+
|
|
24
|
+
# Check if an executable exists
|
|
25
|
+
has_executable '/usr/bin/ruby'
|
|
26
|
+
|
|
27
|
+
# Check if a global executable exists (in PATH)
|
|
28
|
+
has_executable 'rails'
|
|
29
|
+
|
|
30
|
+
# Check for a process
|
|
31
|
+
has_process 'httpd'
|
|
32
|
+
|
|
33
|
+
# Check that ruby can include files
|
|
34
|
+
ruby_can_load 'a', 'b', 'c'
|
|
35
|
+
|
|
36
|
+
# Check that a gem exists
|
|
37
|
+
has_gem 'rails'
|
|
38
|
+
has_gem 'rails', '2.1.0'
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
@verification = @package.verifications[0]
|
|
42
|
+
@delivery = mock(Sprinkle::Deployment, :process => true)
|
|
43
|
+
@verification.delivery = @delivery
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe 'when created' do
|
|
47
|
+
it 'should raise error without a block' do
|
|
48
|
+
lambda { Verify.new(nil, '') }.should raise_error
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe 'with checks' do
|
|
53
|
+
it 'should do a "test -f" on the has_file check' do
|
|
54
|
+
@verification.commands.should include('test -f my_file.txt')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'should do a grep to see if a file contains a text string' do
|
|
58
|
+
@verification.commands.should include("grep 'A sunny day on the lower east-side' my_file.txt")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'should do a "test -d" on the has_directory check' do
|
|
62
|
+
@verification.commands.should include('test -d mydir')
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'should do a "test -L" to check something is a symbolic link' do
|
|
66
|
+
@verification.commands.should include('test -L mypointer')
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it 'should do a test equality to check a symlink points to a specific file' do
|
|
70
|
+
@verification.commands.should include("test 'myfile' = `readlink mypointer`")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it 'should do a "test -x" to check for an executable' do
|
|
74
|
+
@verification.commands.should include("test -x /usr/bin/ruby")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it 'should test the "which" command to look for a global executable' do
|
|
78
|
+
@verification.commands.should include('[ -n "`echo \`which rails\``" ]')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'should test the process list to find a process' do
|
|
82
|
+
@verification.commands.should include("ps aux | grep 'httpd' | grep -v grep")
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it 'should check if ruby can include a, b, c' do
|
|
86
|
+
@verification.commands.should include("ruby -e \"require 'rubygems';require 'a';require 'b';require 'c'\"")
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it 'should check that a ruby gem is installed' do
|
|
90
|
+
@verification.commands.should include("sudo gem list | grep -e '^rails (.*.*)$'")
|
|
91
|
+
@verification.commands.should include("sudo gem list | grep -e '^rails (.*2\\.1\\.0.*)$'")
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
describe 'with configurations' do
|
|
96
|
+
# Make sure it includes Sprinkle::Configurable
|
|
97
|
+
it 'should respond to configurable methods' do
|
|
98
|
+
@verification.should respond_to(:defaults)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'should default padding option to 4' do
|
|
102
|
+
@verification.padding.should eql(4)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe 'with process' do
|
|
107
|
+
it 'should raise an error when no delivery mechanism is set' do
|
|
108
|
+
@verification.instance_variable_set(:@delivery, nil)
|
|
109
|
+
lambda { @verification.process([]) }.should raise_error
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
describe 'when not testing' do
|
|
113
|
+
before do
|
|
114
|
+
# To be explicit
|
|
115
|
+
Sprinkle::OPTIONS[:testing] = false
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it 'should call process on the delivery with the correct parameters' do
|
|
119
|
+
@delivery.should_receive(:process).with(@name, @verification.commands, [:app], true).once.and_return(true)
|
|
120
|
+
@verification.process([:app])
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it 'should raise Sprinkle::VerificationFailed exception when commands fail' do
|
|
124
|
+
@delivery.should_receive(:process).once.and_return(false)
|
|
125
|
+
lambda { @verification.process([:app]) }.should raise_error(Sprinkle::VerificationFailed) do |error|
|
|
126
|
+
error.package.should eql(@package)
|
|
127
|
+
error.description.should eql('moo')
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
describe 'when testing' do
|
|
133
|
+
before do
|
|
134
|
+
Sprinkle::OPTIONS[:testing] = true
|
|
135
|
+
@logger = mock(ActiveSupport::BufferedLogger, :debug => true, :debug? => true)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it 'should not call process on the delivery' do
|
|
139
|
+
@delivery.should_not_receive(:process)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it 'should print the install sequence to the console' do
|
|
143
|
+
@verification.should_receive(:logger).twice.and_return(@logger)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
after do
|
|
147
|
+
@verification.process([:app])
|
|
148
|
+
Sprinkle::OPTIONS[:testing] = false
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
describe 'with registering new verification modules' do
|
|
154
|
+
module MyModule
|
|
155
|
+
def rawr; end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it 'should not respond to rawr initially' do
|
|
159
|
+
@verification.should_not respond_to(:rawr)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it 'should respond to rawr after registering the module' do
|
|
163
|
+
Sprinkle::Verify.register(MyModule)
|
|
164
|
+
@verification.should respond_to(:rawr)
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
data/sprinkle.gemspec
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Gem::Specification.new do |s|
|
|
2
|
+
s.name = %q{sprinkle}
|
|
3
|
+
s.version = "0.2.4"
|
|
4
|
+
|
|
5
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
6
|
+
s.authors = ["Marcus Crafter", "Mitchell Hashimoto"]
|
|
7
|
+
s.date = %q{2009-05-26}
|
|
8
|
+
s.default_executable = %q{sprinkle}
|
|
9
|
+
s.description = %q{Ruby DSL based software provisioning tool}
|
|
10
|
+
s.email = ["crafterm@redartisan.com", "mitchell.hashimoto@citrusbyte.com"]
|
|
11
|
+
s.executables = ["sprinkle"]
|
|
12
|
+
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
|
13
|
+
s.files = ["CREDITS", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "bin/sprinkle",
|
|
14
|
+
"config/hoe.rb", "config/requirements.rb", "examples/packages/build_essential.rb",
|
|
15
|
+
"examples/packages/databases/mysql.rb", "examples/packages/databases/sqlite3.rb",
|
|
16
|
+
"examples/packages/phusion.rb", "examples/packages/ruby/rails.rb", "examples/packages/ruby/ruby.rb",
|
|
17
|
+
"examples/packages/ruby/rubygems.rb", "examples/packages/scm/git.rb", "examples/packages/scm/subversion.rb",
|
|
18
|
+
"examples/packages/servers/apache.rb", "examples/rails/README", "examples/rails/deploy.rb",
|
|
19
|
+
"examples/rails/packages/database.rb", "examples/rails/packages/essential.rb", "examples/rails/packages/rails.rb",
|
|
20
|
+
"examples/rails/packages/scm.rb", "examples/rails/packages/search.rb", "examples/rails/packages/server.rb",
|
|
21
|
+
"examples/rails/rails.rb", "examples/sprinkle/sprinkle.rb", "lib/sprinkle.rb", "lib/sprinkle/actors/actors.rb",
|
|
22
|
+
"lib/sprinkle/actors/capistrano.rb", "lib/sprinkle/actors/local.rb", "lib/sprinkle/actors/ssh.rb", "lib/sprinkle/actors/vlad.rb",
|
|
23
|
+
"lib/sprinkle/configurable.rb", "lib/sprinkle/deployment.rb", "lib/sprinkle/extensions/arbitrary_options.rb",
|
|
24
|
+
"lib/sprinkle/extensions/array.rb", "lib/sprinkle/extensions/blank_slate.rb", "lib/sprinkle/extensions/dsl_accessor.rb",
|
|
25
|
+
"lib/sprinkle/extensions/string.rb", "lib/sprinkle/extensions/symbol.rb", "lib/sprinkle/installers/apt.rb",
|
|
26
|
+
"lib/sprinkle/installers/deb.rb", "lib/sprinkle/installers/gem.rb", "lib/sprinkle/installers/installer.rb",
|
|
27
|
+
"lib/sprinkle/installers/rake.rb", "lib/sprinkle/installers/rpm.rb", "lib/sprinkle/installers/source.rb",
|
|
28
|
+
"lib/sprinkle/installers/yum.rb", "lib/sprinkle/installers/freebsd_pkg.rb", "lib/sprinkle/installers/openbsd_pkg.rb",
|
|
29
|
+
"lib/sprinkle/installers/opensolaris_pkg.rb", "lib/sprinkle/installers/bsd_port.rb", "lib/sprinkle/installers/mac_port.rb", "lib/sprinkle/installers/push_text.rb",
|
|
30
|
+
"lib/sprinkle/package.rb", "lib/sprinkle/policy.rb", "lib/sprinkle/script.rb", "lib/sprinkle/verifiers/directory.rb",
|
|
31
|
+
"lib/sprinkle/verifiers/executable.rb", "lib/sprinkle/verifiers/file.rb", "lib/sprinkle/verifiers/process.rb",
|
|
32
|
+
"lib/sprinkle/verifiers/ruby.rb", "lib/sprinkle/verifiers/symlink.rb", "lib/sprinkle/verify.rb", "lib/sprinkle/version.rb",
|
|
33
|
+
"script/destroy", "script/generate", "sprinkle.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
|
|
34
|
+
|
|
35
|
+
s.test_files = ["spec/spec.opts", "spec/spec_helper.rb", "spec/sprinkle/actors/capistrano_spec.rb",
|
|
36
|
+
"spec/sprinkle/actors/local_spec.rb", "spec/sprinkle/configurable_spec.rb", "spec/sprinkle/deployment_spec.rb",
|
|
37
|
+
"spec/sprinkle/extensions/array_spec.rb", "spec/sprinkle/extensions/string_spec.rb", "spec/sprinkle/installers/apt_spec.rb",
|
|
38
|
+
"spec/sprinkle/installers/gem_spec.rb", "spec/sprinkle/installers/installer_spec.rb", "spec/sprinkle/installers/rpm_spec.rb",
|
|
39
|
+
"spec/sprinkle/installers/yum_spec.rb", "spec/sprinkle/installers/source_spec.rb", "spec/sprinkle/installers/freebsd_pkg_spec.rb",
|
|
40
|
+
"spec/sprinkle/installers/openbsd_pkg_spec.rb", "spec/sprinkle/installers/opensolaris_pkg_spec.rb",
|
|
41
|
+
"spec/sprinkle/installers/mac_port_spec.rb", "spec/sprinkle/installers/push_text_spec.rb", "spec/sprinkle/installers/bsd_port_spec.rb", "spec/sprinkle/policy_spec.rb",
|
|
42
|
+
"spec/sprinkle/script_spec.rb", "spec/sprinkle/sprinkle_spec.rb", "spec/sprinkle/installers/rake_spec.rb", "spec/sprinkle/verify_spec.rb"]
|
|
43
|
+
s.has_rdoc = true
|
|
44
|
+
s.homepage = %q{http://sprinkle.rubyforge.org}
|
|
45
|
+
s.rdoc_options = ["--main", "README.txt"]
|
|
46
|
+
s.require_paths = ["lib"]
|
|
47
|
+
s.rubyforge_project = %q{sprinkle}
|
|
48
|
+
s.rubygems_version = %q{1.3.0}
|
|
49
|
+
s.summary = %q{Ruby DSL based software provisioning tool}
|
|
50
|
+
|
|
51
|
+
if s.respond_to? :specification_version then
|
|
52
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
53
|
+
s.specification_version = 2
|
|
54
|
+
|
|
55
|
+
if current_version >= 3 then
|
|
56
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.0.2"])
|
|
57
|
+
s.add_runtime_dependency(%q<highline>, [">= 1.4.0"])
|
|
58
|
+
s.add_runtime_dependency(%q<capistrano>, [">= 2.5.5"])
|
|
59
|
+
s.add_development_dependency(%q<hoe>, [">= 1.8.2"])
|
|
60
|
+
s.add_development_dependency(%q<echoe>, [">= 3.0.2"])
|
|
61
|
+
else
|
|
62
|
+
s.add_dependency(%q<activesupport>, [">= 2.0.2"])
|
|
63
|
+
s.add_dependency(%q<highline>, [">= 1.4.0"])
|
|
64
|
+
s.add_dependency(%q<capistrano>, [">= 2.5.5"])
|
|
65
|
+
s.add_dependency(%q<hoe>, [">= 1.8.2"])
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
s.add_dependency(%q<activesupport>, [">= 2.0.2"])
|
|
69
|
+
s.add_dependency(%q<highline>, [">= 1.4.0"])
|
|
70
|
+
s.add_dependency(%q<capistrano>, [">= 2.5.5"])
|
|
71
|
+
s.add_dependency(%q<hoe>, [">= 1.8.2"])
|
|
72
|
+
end
|
|
73
|
+
end
|