derelict 0.2.3.travis.85 → 0.2.3.travis.89

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OGRhOGExOTg2OWY3MzE0NzI4ZWJjMjM3NmM5ZTVmZmFiNzE2MDM0ZA==
4
+ ZDNiNDkwZjE4NzM5NjZiNThlMjJiMTQ3NDhlZmUxMDY1YTc1OTNjYQ==
5
5
  data.tar.gz: !binary |-
6
- ZGE0NWE4ZTY3MWZmYjMwNDc0ODc4NTBiZWNmNzA4NjI3ODJjZjJkNw==
6
+ YWM2Mzk4NWRjYWFmZWJjNWIxN2ExZjdkN2JkMDgxNmZlYWExZjhjNg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZTBkMWVlNDkwZjFmZGRiNGUzNzIyN2ZkMWE1Mjk3YjIwMGUzZDZmMTJjMjVh
10
- YjFiODc4ODkzNmQzNmJkYWU3MTkyNDExNWZlZTVlNzdmOGM5Njk2YTBmM2U3
11
- NzNiNGVjZThmOGZiZTljMDdmYzRmN2JiMDVkYjhmMmExZDc4ZmI=
9
+ OWFmMjE5ZmRiMDg1YmE4N2E2YWZlOGNlYzgyZWM1MDFjOWU3NjExNWRjNDVi
10
+ M2Q1MDY5Zjk2ZGMyZDA1YjI3ZGUyZTg5ODBmOWJiN2U2ZTNhNmNmOGU0Zjlm
11
+ ZWM5NjZiOWQ1NjdiMzc2ZWRmNWUwNTRiMGZmNzJiZmVmMTQ4Y2M=
12
12
  data.tar.gz: !binary |-
13
- MTA3ZTFiMjRhMTYzZmVmMTBiYTI5MmI5Mjg2ZGQyMmIzZTYwZmVlMjllZjkz
14
- Y2U3OGY4NGY1NTIwYmU1MTdlYzUxOThkOTE5ZWRkZTNkM2M4ZWRlZGQwZDFm
15
- ZjllNjAzMWEwZDNiNjFmMDRhMTZmNjZmNTRjNDVjMzRkNzdiNDQ=
13
+ YTY0MmI5ZmU5ZjE0NTg0MjA2NzE0NjVhOGU3ZmE1ZDQyNzlmNTdkM2UxZTA0
14
+ NGUwOTE4MTg1ZmUwZWVhZDY2ZWU5NmZlMTU2NWU0M2RlNjM3YTEyYjFiODY2
15
+ ZWFjMjM0NTRlMDMzY2VlZjgwYjI0YTc0YTdkNzg1ODJlMDQwMTE=
@@ -86,27 +86,27 @@ module Derelict
86
86
  #
87
87
  # * log: Should the log output be printed? (defaults to false)
88
88
  COMMANDS.each do |command|
89
- define_method :"#{command}!" do |*args|
90
- if args.length > 1
91
- message = "wrong number of arguments (#{args.length} for 0-1)"
89
+ define_method :"#{command}!" do |*opts|
90
+ # Ideally this block would have one argument with a default
91
+ # value of an empty Hash. Unfortunately, setting a default
92
+ # value for the arguments to a block is only supported in Ruby
93
+ # 1.9+. The splatted arguments thing is a way to allow zero or
94
+ # one argument, but it actually allows any number of arguments.
95
+ # So we need to emulate the error Ruby would throw if you give
96
+ # the wrong number of arguments.
97
+ if opts.length > 1
98
+ message = "wrong number of arguments (#{opts.length} for 0-1)"
92
99
  raise ArgumentError.new message
93
100
  end
94
101
 
95
- args = [{}] if args.length == 0
102
+ # Set defaults for the opts hash
103
+ opts = {:color => false, :log => false}.merge(opts.first || {})
96
104
 
97
105
  # Log message if there's one for this command
98
- message = log_message_for command
99
- logger.info message unless message.nil?
106
+ log_message_for(command).tap {|m| logger.info m unless m.nil? }
100
107
 
101
- # Set defaults for the options hash
102
- options = {:log => false, :color => false}.merge args.first
103
-
104
- # Execute the command, optionally logging output
105
- log_block = options[:log] ? shell_log_block : nil
106
-
107
- args = [command, name, *arguments_for(command)]
108
- args << "--color" if options[:color]
109
- connection.execute! *args, &log_block
108
+ # Execute the command!
109
+ execute! command, opts
110
110
  end
111
111
  end
112
112
 
@@ -126,10 +126,39 @@ module Derelict
126
126
  end
127
127
 
128
128
  private
129
+ # Executes a command on the connection for this VM
130
+ #
131
+ # * command: The command to execute (as a symbol)
132
+ # * options: A Hash of options, with the following optional keys:
133
+ # * log: Logs the output of the command if true
134
+ # (defaults to false)
135
+ # * color: Uses color in the log output (defaults to
136
+ # false, only relevant if log is true)
137
+ # * provider: The Vagrant provider to use, one of
138
+ # "virtualbox" or "vmware_fusion" (defaults to
139
+ # "virtualbox")
140
+ def execute!(command, options)
141
+ # Build up the arguments to pass to connection.execute!
142
+ arguments = [command, name, *arguments_for(command)]
143
+ arguments << "--color" if options[:color]
144
+ if options[:provider]
145
+ arguments << "--provider"
146
+ arguments << options[:provider]
147
+ end
148
+
149
+ # Set up the block to use when executing -- if logging is
150
+ # enabled, use a block that logs the output; otherwise no block.
151
+ block = options[:log] ? shell_log_block : nil
152
+
153
+ # Execute the command
154
+ connection.execute! *arguments, &block
155
+ end
156
+
129
157
  # A block that can be passed to #execute to log the output
130
158
  def shell_log_block
131
- Proc.new do |line|
132
- logger(:type => :external).info line
159
+ Proc.new do |stdout, stderr|
160
+ # Only stdout or stderr is populated, the other will be nil
161
+ logger(:type => :external).info(stdout || stderr)
133
162
  end
134
163
  end
135
164
  memoize :shell_log_block
@@ -125,19 +125,31 @@ describe Derelict::VirtualMachine do
125
125
 
126
126
  context "with correct number of arguments" do
127
127
  let(:args) { [:up, name] }
128
- before do
129
- expect(connection).to receive(:execute!).with(*args).and_yield("foo").and_return result
130
- end
131
128
 
132
129
  context "with external logging disabled" do
130
+ before do
131
+ expect(connection).to receive(:execute!).with(*args).and_return result
132
+ end
133
+
133
134
  include_context "logged messages"
134
135
  let(:expected_logs) {[
135
136
  "DEBUG virtualmachine: Successfully initialized Derelict::VirtualMachine 'testvm' from test\n",
136
137
  " INFO virtualmachine: Bringing up Derelict::VirtualMachine 'testvm' from test\n",
137
138
  ]}
139
+
140
+ context "with different provider" do
141
+ let(:options) { {:provider => "foobar"} }
142
+ let(:args) { [:up, name, "--provider", "foobar"] }
143
+
144
+ it { should be result }
145
+ end
138
146
  end
139
147
 
140
148
  context "with external logging enabled" do
149
+ before do
150
+ expect(connection).to receive(:execute!).with(*args).and_yield("foo", nil).and_return result
151
+ end
152
+
141
153
  let(:options) { {:log => true} }
142
154
 
143
155
  include_context "logged messages"
@@ -163,7 +175,7 @@ describe Derelict::VirtualMachine do
163
175
 
164
176
  let(:args) { [:halt, name] }
165
177
  before do
166
- expect(connection).to receive(:execute!).with(*args).and_yield("foo").and_return result
178
+ expect(connection).to receive(:execute!).with(*args).and_yield("foo", nil).and_return result
167
179
  end
168
180
 
169
181
  context "with external logging disabled" do
@@ -199,7 +211,7 @@ describe Derelict::VirtualMachine do
199
211
 
200
212
  let(:args) { [:destroy, name, '--force'] }
201
213
  before do
202
- expect(connection).to receive(:execute!).with(*args).and_yield("foo").and_return result
214
+ expect(connection).to receive(:execute!).with(*args).and_yield("foo", nil).and_return result
203
215
  end
204
216
 
205
217
  context "with external logging disabled" do
@@ -234,7 +246,7 @@ describe Derelict::VirtualMachine do
234
246
  subject { vm.reload! options }
235
247
 
236
248
  before do
237
- expect(connection).to receive(:execute!).with(:reload, name).and_yield("foo").and_return result
249
+ expect(connection).to receive(:execute!).with(:reload, name).and_yield("foo", nil).and_return result
238
250
  end
239
251
 
240
252
  context "with external logging disabled" do
@@ -263,7 +275,7 @@ describe Derelict::VirtualMachine do
263
275
  subject { vm.suspend! options }
264
276
 
265
277
  before do
266
- expect(connection).to receive(:execute!).with(:suspend, name).and_yield("foo").and_return result
278
+ expect(connection).to receive(:execute!).with(:suspend, name).and_yield("foo", nil).and_return result
267
279
  end
268
280
 
269
281
  context "with external logging disabled" do
@@ -292,7 +304,7 @@ describe Derelict::VirtualMachine do
292
304
  subject { vm.resume! options }
293
305
 
294
306
  before do
295
- expect(connection).to receive(:execute!).with(:resume, name).and_yield("foo").and_return result
307
+ expect(connection).to receive(:execute!).with(:resume, name).and_yield("foo", nil).and_return result
296
308
  end
297
309
 
298
310
  context "with external logging disabled" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: derelict
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3.travis.85
4
+ version: 0.2.3.travis.89
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Feehan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-29 00:00:00.000000000 Z
11
+ date: 2013-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: log4r