machines 0.5.4 → 0.5.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +7 -1
- data/CHANGELOG.md +16 -4
- data/INSTALL.md +3 -0
- data/LICENSE +1 -2
- data/README.md +47 -28
- data/Rakefile +0 -8
- data/TODO.md +66 -59
- data/bin/machines +1 -2
- data/lib/machines.rb +16 -1
- data/lib/machines/app_settings.rb +1 -1
- data/lib/machines/cloud_machine.rb +1 -1
- data/lib/machines/command.rb +0 -2
- data/lib/machines/commandline.rb +23 -29
- data/lib/machines/commands/checks.rb +67 -0
- data/lib/machines/commands/configuration.rb +50 -0
- data/lib/machines/commands/database.rb +18 -0
- data/lib/machines/commands/file_operations.rb +105 -0
- data/lib/machines/commands/installation.rb +184 -0
- data/lib/machines/commands/questions.rb +16 -0
- data/lib/machines/commands/services.rb +26 -0
- data/lib/machines/core.rb +55 -25
- data/lib/machines/logger.rb +0 -2
- data/lib/machines/named_buffer.rb +7 -6
- data/lib/machines/version.rb +1 -1
- data/lib/packages/awstats.rb +2 -2
- data/lib/packages/docky.rb +0 -1
- data/lib/packages/dwm.rb +5 -0
- data/lib/packages/nginx_logrotate.rb +2 -2
- data/lib/packages/timezone.rb +2 -4
- data/lib/template/Machinesfile +2 -1
- data/lib/template/config.yml +3 -0
- data/spec/lib/machines/app_settings_spec.rb +13 -12
- data/spec/lib/machines/cloud_machine_spec.rb +9 -8
- data/spec/lib/machines/commandline_spec.rb +69 -90
- data/spec/lib/machines/{checks_spec.rb → commands/checks_spec.rb} +1 -1
- data/spec/lib/machines/{configuration_spec.rb → commands/configuration_spec.rb} +2 -3
- data/spec/lib/machines/{database_spec.rb → commands/database_spec.rb} +4 -10
- data/spec/lib/machines/{file_operations_spec.rb → commands/file_operations_spec.rb} +3 -7
- data/spec/lib/machines/{installation_spec.rb → commands/installation_spec.rb} +10 -4
- data/spec/lib/machines/{questions_spec.rb → commands/questions_spec.rb} +1 -3
- data/spec/lib/machines/{services_spec.rb → commands/services_spec.rb} +1 -4
- data/spec/lib/machines/core_spec.rb +81 -65
- data/spec/lib/packages/abiword_spec.rb +1 -5
- data/spec/lib/packages/amazon_mp3_spec.rb +0 -4
- data/spec/lib/packages/awstats_spec.rb +3 -4
- data/spec/lib/packages/base_spec.rb +0 -1
- data/spec/lib/packages/chrome_spec.rb +0 -4
- data/spec/lib/packages/cruisecontrol_spec.rb +1 -2
- data/spec/lib/packages/dependencies_spec.rb +1 -2
- data/spec/lib/packages/docky_spec.rb +0 -4
- data/spec/lib/packages/dotfiles_spec.rb +5 -4
- data/spec/lib/packages/dwm_spec.rb +23 -0
- data/spec/lib/packages/file_roller_spec.rb +1 -5
- data/spec/lib/packages/firefox_spec.rb +0 -4
- data/spec/lib/packages/gedit_spec.rb +1 -5
- data/spec/lib/packages/git_spec.rb +0 -4
- data/spec/lib/packages/gmate_spec.rb +1 -5
- data/spec/lib/packages/gnome_spec.rb +0 -4
- data/spec/lib/packages/gnumeric_spec.rb +1 -5
- data/spec/lib/packages/hosts_spec.rb +0 -1
- data/spec/lib/packages/load_machines_spec.rb +16 -15
- data/spec/lib/packages/monit_spec.rb +0 -1
- data/spec/lib/packages/mysql_spec.rb +1 -3
- data/spec/lib/packages/nginx_logrotate_spec.rb +17 -18
- data/spec/lib/packages/nginx_spec.rb +0 -1
- data/spec/lib/packages/openbox_spec.rb +0 -4
- data/spec/lib/packages/passenger_nginx_spec.rb +0 -1
- data/spec/lib/packages/passenger_spec.rb +0 -1
- data/spec/lib/packages/postfix_spec.rb +1 -5
- data/spec/lib/packages/questions_spec.rb +3 -4
- data/spec/lib/packages/rbenv_spec.rb +1 -4
- data/spec/lib/packages/rvm_spec.rb +1 -4
- data/spec/lib/packages/save_machines_spec.rb +0 -1
- data/spec/lib/packages/slim_spec.rb +1 -2
- data/spec/lib/packages/sqlserver_spec.rb +0 -4
- data/spec/lib/packages/timezone_spec.rb +2 -3
- data/spec/lib/packages/unison_spec.rb +1 -2
- data/spec/lib/packages/virtualbox_guest_spec.rb +0 -4
- data/spec/lib/packages/virtualbox_spec.rb +1 -2
- data/spec/lib/packages/webapps_spec.rb +1 -3
- data/spec/spec_helper.rb +59 -61
- data/spec/support/minitest.rb +4 -62
- metadata +27 -28
- data/lib/machines/base.rb +0 -13
- data/lib/machines/checks.rb +0 -63
- data/lib/machines/configuration.rb +0 -49
- data/lib/machines/database.rb +0 -17
- data/lib/machines/file_operations.rb +0 -104
- data/lib/machines/installation.rb +0 -171
- data/lib/machines/machinesfile.rb +0 -25
- data/lib/machines/questions.rb +0 -15
- data/lib/machines/services.rb +0 -24
- data/spec/lib/machines/machinesfile_spec.rb +0 -34
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
include Machines::Core
|
5
|
-
include Machines::Configuration
|
3
|
+
describe Commands::Configuration do
|
6
4
|
|
7
5
|
describe 'add_user' do
|
8
6
|
it do
|
@@ -20,6 +18,7 @@ describe 'Configuration' do
|
|
20
18
|
|
21
19
|
describe 'add' do
|
22
20
|
it 'add an existing user to a group' do
|
21
|
+
stubs(:required_options)
|
23
22
|
command = add :user => 'phil', :to => 'group'
|
24
23
|
command.command.must_equal 'usermod -a -G group phil'
|
25
24
|
end
|
@@ -1,12 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
include Machines::Core
|
5
|
-
include Machines::Configuration
|
6
|
-
include Machines::Database
|
7
|
-
include Machines::AppSettings
|
8
|
-
include Machines::FileOperations
|
9
|
-
|
3
|
+
describe Commands::Database do
|
10
4
|
describe 'write_database_yml' do
|
11
5
|
before do
|
12
6
|
$conf.environment = 'staging'
|
@@ -15,7 +9,7 @@ describe 'Database' do
|
|
15
9
|
end
|
16
10
|
|
17
11
|
it 'supplies correct parameters' do
|
18
|
-
file = write_database_yml AppBuilder.new(:name => 'app', :password => 'password', :path => 'path')
|
12
|
+
file = write_database_yml AppSettings::AppBuilder.new(:name => 'app', :password => 'password', :path => 'path')
|
19
13
|
file.local.read.must_equal <<-EOF
|
20
14
|
---
|
21
15
|
staging:
|
@@ -29,12 +23,12 @@ EOF
|
|
29
23
|
end
|
30
24
|
|
31
25
|
it 'writes file to specified path' do
|
32
|
-
file = write_database_yml AppBuilder.new(:name => 'app', :password => 'password', :path => 'path')
|
26
|
+
file = write_database_yml AppSettings::AppBuilder.new(:name => 'app', :password => 'password', :path => 'path')
|
33
27
|
file.remote.must_equal 'path/shared/config/database.yml'
|
34
28
|
end
|
35
29
|
|
36
30
|
it 'overrides database name when supplied' do
|
37
|
-
file = write_database_yml AppBuilder.new(:name => 'app', :password => 'password', :username => 'phil', :database => 'myapp', :path => 'path')
|
31
|
+
file = write_database_yml AppSettings::AppBuilder.new(:name => 'app', :password => 'password', :username => 'phil', :database => 'myapp', :path => 'path')
|
38
32
|
file.local.read.must_equal <<-EOF
|
39
33
|
---
|
40
34
|
staging:
|
@@ -1,9 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
include Machines::FileOperations
|
5
|
-
include Machines::Core
|
6
|
-
|
3
|
+
describe Commands::FileOperations do
|
7
4
|
describe 'append' do
|
8
5
|
it 'escapes backslashes (\\)' do
|
9
6
|
subject = append '\\', :to => 'file'
|
@@ -62,11 +59,9 @@ describe 'FileOperations' do
|
|
62
59
|
end
|
63
60
|
|
64
61
|
describe 'create_from' do
|
65
|
-
include Machines::AppSettings
|
66
|
-
|
67
62
|
it 'loads ERB template, applies settings and writes to remote machine' do
|
68
63
|
File.expects(:read).with('erb_path').returns('<%= method_on_binding %>')
|
69
|
-
app_builder = AppBuilder.new(:method_on_binding => 'result')
|
64
|
+
app_builder = AppSettings::AppBuilder.new(:method_on_binding => 'result')
|
70
65
|
expects(:write).with('result', {:settings => app_builder, :to => 'file', :name => 'erb_path'})
|
71
66
|
create_from('erb_path', :settings => app_builder, :to => 'file')
|
72
67
|
end
|
@@ -107,6 +102,7 @@ describe 'FileOperations' do
|
|
107
102
|
end
|
108
103
|
|
109
104
|
describe 'replace' do
|
105
|
+
before { stubs(:required_options) }
|
110
106
|
subject { replace('something', :with => 'some/path', :in => 'file') }
|
111
107
|
it { subject.command.must_equal "sed -i \"s/something/some\\/path/\" file" }
|
112
108
|
it { lambda{replace('something')}.must_raise ArgumentError }
|
@@ -1,9 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
include Machines::Core
|
5
|
-
include Machines::Installation
|
6
|
-
include Machines::Configuration
|
3
|
+
describe Commands::Installation do
|
7
4
|
|
8
5
|
describe 'add_ppa' do
|
9
6
|
it 'adds a ppa' do
|
@@ -166,6 +163,15 @@ describe 'Installation' do
|
|
166
163
|
'apt-get -q -y install package2'
|
167
164
|
]
|
168
165
|
end
|
166
|
+
|
167
|
+
it 'download and run make clean install' do
|
168
|
+
subject = install 'http://some.url/package_name.tar.gz', make: true
|
169
|
+
subject.map(&:command).join("\n").must_equal [
|
170
|
+
'cd /tmp && wget http://some.url/package_name.tar.gz && tar -zxf package_name.tar.gz && rm package_name.tar.gz && cd -',
|
171
|
+
'mv -f /tmp/package_name /usr/local/src',
|
172
|
+
'cd /usr/local/src/package_name && make clean install'
|
173
|
+
].join("\n")
|
174
|
+
end
|
169
175
|
end
|
170
176
|
|
171
177
|
describe 'uninstall' do
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
5
|
-
|
3
|
+
describe Core do
|
4
|
+
|
5
|
+
subject { Core.new }
|
6
6
|
|
7
7
|
before do
|
8
8
|
@command1 = Machines::Command.new('command 1', 'check 1')
|
@@ -12,28 +12,54 @@ describe Machines::Core do
|
|
12
12
|
describe 'generate_password' do
|
13
13
|
it 'generates a random password' do
|
14
14
|
WEBrick::Utils.stubs(:random_string).with(20).returns '01234567890123456789'
|
15
|
-
generate_password.must_equal '01234567890123456789'
|
15
|
+
subject.generate_password.must_equal '01234567890123456789'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'package' do
|
20
|
+
it 'raises specific error when failing to load Machinesfile' do
|
21
|
+
File.expects(:read).never
|
22
|
+
lambda{ subject.package 'Machinesfile' }.must_raise LoadError, /Cannot find Machinesfile/
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'loads custom package when it exists' do
|
26
|
+
custom_package = "packages/custom_package.rb"
|
27
|
+
FileUtils.mkdir_p File.dirname(custom_package)
|
28
|
+
FileUtils.touch custom_package
|
29
|
+
subject.package :custom_package
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'loads built-in package when no custom package' do
|
33
|
+
builtin_package = "#{$conf.application_dir}/packages/builtin_package.rb"
|
34
|
+
FileUtils.mkdir_p File.dirname(builtin_package)
|
35
|
+
FileUtils.touch builtin_package
|
36
|
+
subject.package :builtin_package
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'raises when no custom and no built-in package' do
|
40
|
+
File.expects(:read).never
|
41
|
+
lambda { subject.package :builtin_package}.must_raise LoadError, /Cannot find .* package builtin_package/
|
16
42
|
end
|
17
43
|
end
|
18
44
|
|
19
45
|
describe 'task' do
|
20
46
|
it 'yields' do
|
21
47
|
yielded = false
|
22
|
-
task :name do
|
48
|
+
subject.task :name do
|
23
49
|
yielded = true
|
24
50
|
end
|
25
51
|
yielded.must_equal true
|
26
52
|
end
|
27
53
|
|
28
54
|
it 'logs the task' do
|
29
|
-
task :name, 'description' do
|
55
|
+
subject.task :name, 'description' do
|
30
56
|
end
|
31
57
|
$conf.commands.first.info.must_equal "TASK name - description"
|
32
58
|
end
|
33
59
|
|
34
60
|
it 'stores task' do
|
35
61
|
block = Proc.new {}
|
36
|
-
task :name, 'description', &block
|
62
|
+
subject.task :name, 'description', &block
|
37
63
|
$conf.tasks.must_equal :name => {:description => 'description', :block => block}
|
38
64
|
end
|
39
65
|
|
@@ -42,7 +68,7 @@ describe Machines::Core do
|
|
42
68
|
block = Proc.new { block_run_count += 1 }
|
43
69
|
$conf.tasks[:task1] = {:block => block}
|
44
70
|
$conf.tasks[:task2] = {:block => block}
|
45
|
-
task [:task1, 'task2']
|
71
|
+
subject.task [:task1, 'task2']
|
46
72
|
block_run_count.must_equal 2
|
47
73
|
end
|
48
74
|
|
@@ -50,7 +76,7 @@ describe Machines::Core do
|
|
50
76
|
block_run = false
|
51
77
|
block = Proc.new { block_run = true }
|
52
78
|
$conf.tasks[:task] = {:block => block}
|
53
|
-
task :task
|
79
|
+
subject.task :task
|
54
80
|
block_run.must_equal true
|
55
81
|
end
|
56
82
|
|
@@ -62,8 +88,8 @@ describe Machines::Core do
|
|
62
88
|
|
63
89
|
describe 'exists' do
|
64
90
|
before(:each) do
|
65
|
-
store_task :dependent_task, nil
|
66
|
-
task :name, nil, :if => :dependent_task, &@block
|
91
|
+
subject.store_task :dependent_task, nil
|
92
|
+
subject.task :name, nil, :if => :dependent_task, &@block
|
67
93
|
end
|
68
94
|
|
69
95
|
it { @yielded.must_equal true }
|
@@ -73,7 +99,7 @@ describe Machines::Core do
|
|
73
99
|
end
|
74
100
|
|
75
101
|
describe 'does not exist' do
|
76
|
-
before(:each) { task :name, nil, :if => :dependent_task, &@block }
|
102
|
+
before(:each) { subject.task :name, nil, :if => :dependent_task, &@block }
|
77
103
|
it { @yielded.must_equal false }
|
78
104
|
it 'task not stored' do
|
79
105
|
$conf.tasks.wont_include :name
|
@@ -89,9 +115,9 @@ describe Machines::Core do
|
|
89
115
|
|
90
116
|
describe 'all exist' do
|
91
117
|
before(:each) do
|
92
|
-
store_task :dependent_task, nil
|
93
|
-
store_task :another_dependent, nil
|
94
|
-
task :name, nil, :if => [:dependent_task, :another_dependent], &@block
|
118
|
+
subject.store_task :dependent_task, nil
|
119
|
+
subject.store_task :another_dependent, nil
|
120
|
+
subject.task :name, nil, :if => [:dependent_task, :another_dependent], &@block
|
95
121
|
end
|
96
122
|
|
97
123
|
it { @yielded.must_equal true }
|
@@ -102,8 +128,8 @@ describe Machines::Core do
|
|
102
128
|
|
103
129
|
describe 'all but one exist' do
|
104
130
|
before(:each) do
|
105
|
-
store_task :another_dependent, nil
|
106
|
-
task :name, nil, :if => [:dependent_task, :another_dependent], &@block
|
131
|
+
subject.store_task :another_dependent, nil
|
132
|
+
subject.task :name, nil, :if => [:dependent_task, :another_dependent], &@block
|
107
133
|
end
|
108
134
|
|
109
135
|
it { @yielded.must_equal false }
|
@@ -114,30 +140,20 @@ describe Machines::Core do
|
|
114
140
|
end
|
115
141
|
end
|
116
142
|
|
117
|
-
describe 'list_tasks' do
|
118
|
-
it 'displays a list of tasks' do
|
119
|
-
task :name, 'description', &Proc.new {}
|
120
|
-
task :another, 'another description', &Proc.new {}
|
121
|
-
lambda { list_tasks }.must_output ' name description
|
122
|
-
another another description
|
123
|
-
'
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
143
|
describe 'only' do
|
128
144
|
it 'yields when matched' do
|
129
|
-
expects(:matched).with('options').returns true
|
145
|
+
subject.expects(:matched).with('options').returns true
|
130
146
|
yielded = false
|
131
|
-
only 'options' do
|
147
|
+
subject.only 'options' do
|
132
148
|
yielded = true
|
133
149
|
end
|
134
150
|
yielded.must_equal true
|
135
151
|
end
|
136
152
|
|
137
153
|
it 'does not yield when not matched' do
|
138
|
-
expects(:matched).with('options').returns false
|
154
|
+
subject.expects(:matched).with('options').returns false
|
139
155
|
yielded = false
|
140
|
-
only 'options' do
|
156
|
+
subject.only 'options' do
|
141
157
|
yielded = true
|
142
158
|
end
|
143
159
|
yielded.must_equal false
|
@@ -146,7 +162,7 @@ describe Machines::Core do
|
|
146
162
|
it 'yields when symbol matches string' do
|
147
163
|
$conf.environment = 'development'
|
148
164
|
yielded = false
|
149
|
-
only :environment => :development do
|
165
|
+
subject.only :environment => :development do
|
150
166
|
yielded = true
|
151
167
|
end
|
152
168
|
yielded.must_equal true
|
@@ -155,18 +171,18 @@ describe Machines::Core do
|
|
155
171
|
|
156
172
|
describe 'except' do
|
157
173
|
it 'does not yield when matched' do
|
158
|
-
expects(:matched).with('options').returns true
|
174
|
+
subject.expects(:matched).with('options').returns true
|
159
175
|
yielded = false
|
160
|
-
except 'options' do
|
176
|
+
subject.except 'options' do
|
161
177
|
yielded = true
|
162
178
|
end
|
163
179
|
yielded.must_equal false
|
164
180
|
end
|
165
181
|
|
166
182
|
it 'yields when not matched' do
|
167
|
-
expects(:matched).with('options').returns false
|
183
|
+
subject.expects(:matched).with('options').returns false
|
168
184
|
yielded = false
|
169
|
-
except 'options' do
|
185
|
+
subject.except 'options' do
|
170
186
|
yielded = true
|
171
187
|
end
|
172
188
|
yielded.must_equal true
|
@@ -179,9 +195,9 @@ describe Machines::Core do
|
|
179
195
|
$conf.string_param = 'matched'
|
180
196
|
end
|
181
197
|
|
182
|
-
it { matched(:string_param => :matched).must_equal true }
|
183
|
-
it { matched(:string_param => 'matched').must_equal true }
|
184
|
-
it { matched(:string_param => :unmatched).wont_equal true }
|
198
|
+
it { subject.matched(:string_param => :matched).must_equal true }
|
199
|
+
it { subject.matched(:string_param => 'matched').must_equal true }
|
200
|
+
it { subject.matched(:string_param => :unmatched).wont_equal true }
|
185
201
|
end
|
186
202
|
|
187
203
|
describe '$conf values are arrays' do
|
@@ -190,23 +206,23 @@ describe Machines::Core do
|
|
190
206
|
end
|
191
207
|
|
192
208
|
describe 'options values are arrays of symbols' do
|
193
|
-
it { matched({:params_array => [:matched]}).must_equal true }
|
194
|
-
it { matched({:params_array => [:unmatched]}).wont_equal true }
|
209
|
+
it { subject.matched({:params_array => [:matched]}).must_equal true }
|
210
|
+
it { subject.matched({:params_array => [:unmatched]}).wont_equal true }
|
195
211
|
end
|
196
212
|
|
197
213
|
describe 'options values are arrays of strings' do
|
198
|
-
it { matched({'params_array' => ['matched']}).must_equal true }
|
199
|
-
it { matched({'params_array' => ['unmatched']}).wont_equal true }
|
214
|
+
it { subject.matched({'params_array' => ['matched']}).must_equal true }
|
215
|
+
it { subject.matched({'params_array' => ['unmatched']}).wont_equal true }
|
200
216
|
end
|
201
217
|
|
202
218
|
describe 'options values are symbols' do
|
203
|
-
it { matched({:params_array => :matched}).must_equal true }
|
204
|
-
it { matched({:params_array => :unmatched}).wont_equal true }
|
219
|
+
it { subject.matched({:params_array => :matched}).must_equal true }
|
220
|
+
it { subject.matched({:params_array => :unmatched}).wont_equal true }
|
205
221
|
end
|
206
222
|
|
207
223
|
describe 'options values are strings' do
|
208
|
-
it { matched({:params_array => 'matched'}).must_equal true }
|
209
|
-
it { matched({:params_array => 'unmatched'}).wont_equal true }
|
224
|
+
it { subject.matched({:params_array => 'matched'}).must_equal true }
|
225
|
+
it { subject.matched({:params_array => 'unmatched'}).wont_equal true }
|
210
226
|
end
|
211
227
|
end
|
212
228
|
|
@@ -216,37 +232,37 @@ describe Machines::Core do
|
|
216
232
|
end
|
217
233
|
|
218
234
|
describe 'options values are arrays' do
|
219
|
-
it { matched({:single_param => [:matched]}).must_equal true }
|
220
|
-
it { matched({:single_param => [:unmatched]}).wont_equal true }
|
235
|
+
it { subject.matched({:single_param => [:matched]}).must_equal true }
|
236
|
+
it { subject.matched({:single_param => [:unmatched]}).wont_equal true }
|
221
237
|
end
|
222
238
|
|
223
239
|
describe 'options values are symbols' do
|
224
|
-
it { matched({:single_param => :matched}).must_equal true }
|
225
|
-
it { matched({:single_param => :unmatched}).wont_equal true }
|
240
|
+
it { subject.matched({:single_param => :matched}).must_equal true }
|
241
|
+
it { subject.matched({:single_param => :unmatched}).wont_equal true }
|
226
242
|
end
|
227
243
|
end
|
228
244
|
end
|
229
245
|
|
230
246
|
describe 'run' do
|
231
247
|
it 'adds a command to the commands array' do
|
232
|
-
run @command1
|
248
|
+
subject.run @command1
|
233
249
|
$conf.commands.must_equal [@command1]
|
234
250
|
end
|
235
251
|
|
236
252
|
it 'appends several commands' do
|
237
|
-
run @command1
|
238
|
-
run @command2
|
253
|
+
subject.run @command1
|
254
|
+
subject.run @command2
|
239
255
|
$conf.commands.must_equal [@command1, @command2]
|
240
256
|
end
|
241
257
|
|
242
258
|
it 'appends several commands in a single call' do
|
243
|
-
run @command1, @command2
|
259
|
+
subject.run @command1, @command2
|
244
260
|
$conf.commands.must_equal [@command1, @command2]
|
245
261
|
end
|
246
262
|
|
247
263
|
describe 'when commands are two strings' do
|
248
264
|
it 'creates a Command' do
|
249
|
-
run 'command', 'check'
|
265
|
+
subject.run 'command', 'check'
|
250
266
|
$conf.commands.first.command.must_equal 'command'
|
251
267
|
$conf.commands.first.check.must_equal 'check'
|
252
268
|
end
|
@@ -257,12 +273,12 @@ describe Machines::Core do
|
|
257
273
|
it 'wraps a command in a sudo with password call' do
|
258
274
|
$conf.password = 'password'
|
259
275
|
@command1.expects(:use_sudo)
|
260
|
-
sudo @command1
|
276
|
+
subject.sudo @command1
|
261
277
|
end
|
262
278
|
|
263
279
|
describe 'when commands are two strings' do
|
264
280
|
it 'creates a Command' do
|
265
|
-
sudo 'command', 'check'
|
281
|
+
subject.sudo 'command', 'check'
|
266
282
|
$conf.commands.first.command.must_equal 'command'
|
267
283
|
$conf.commands.first.check.must_equal 'check'
|
268
284
|
end
|
@@ -270,15 +286,15 @@ describe Machines::Core do
|
|
270
286
|
end
|
271
287
|
|
272
288
|
describe 'upload' do
|
273
|
-
|
274
|
-
it {
|
275
|
-
it {
|
289
|
+
let(:upload) { subject.upload 'source', 'dest' }
|
290
|
+
it { upload.local.must_equal 'source' }
|
291
|
+
it { upload.remote.must_equal 'dest' }
|
276
292
|
end
|
277
293
|
|
278
294
|
describe 'sudo upload' do
|
279
295
|
it 'modifies Upload to send it to a temp file and sudos to copy it to destination' do
|
280
296
|
File.stubs(:directory?).returns false
|
281
|
-
sudo upload 'source', 'dest'
|
297
|
+
subject.sudo subject.upload 'source', 'dest'
|
282
298
|
|
283
299
|
$conf.commands.map(&:command).must_equal [nil, "cp -rf /tmp/dest dest", "rm -rf /tmp/dest"]
|
284
300
|
$conf.commands.map(&:check).must_equal [
|
@@ -290,18 +306,18 @@ describe Machines::Core do
|
|
290
306
|
|
291
307
|
it 'adds /. to the end of folder paths' do
|
292
308
|
File.stubs(:directory?).with('source').returns true
|
293
|
-
sudo upload 'source', 'dest'
|
309
|
+
subject.sudo subject.upload 'source', 'dest'
|
294
310
|
$conf.commands.map(&:command).must_equal [nil, "cp -rf /tmp/dest/. dest", "rm -rf /tmp/dest"]
|
295
311
|
end
|
296
312
|
end
|
297
313
|
|
298
314
|
describe 'required_options' do
|
299
315
|
it 'does not raise when option exists' do
|
300
|
-
required_options({:required => :option}, [:required])
|
316
|
+
subject.required_options({:required => :option}, [:required])
|
301
317
|
end
|
302
318
|
|
303
319
|
it 'raises when option does not exist' do
|
304
|
-
lambda{required_options({}, [:required])}.must_raise(ArgumentError)
|
320
|
+
lambda{ subject.required_options({}, [:required]) }.must_raise(ArgumentError)
|
305
321
|
end
|
306
322
|
end
|
307
323
|
end
|