kitchen-docker 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 49be9eaec81f6c9277c620d4c99e7a50b99f930f
4
- data.tar.gz: 1daa96d8e99245bec677921425fe125a21266544
3
+ metadata.gz: 75827cd02d9a9ddd56f0c8b7855e972e65d5ee18
4
+ data.tar.gz: 4b6a7af9475fa2eea7ea86baffe7e107b6418b0a
5
5
  SHA512:
6
- metadata.gz: ed5cc8b3f3cd1d8300969bb4fe51c7dcd288dcc79a9744dcdd37150cd73231111ca3dec9ce1ff3f9797e40cbd55a809e97c38da69613ef47abfd872c95b722f6
7
- data.tar.gz: a21bf725b1eb0082d32a8e6dd4e955f0847b667a8e015a08ba1a04a2c2e5abe1ebbe6241810ed3cffe7d9e8ee13e6b05032c9d04f0d4b8c1daf095a112ead259
6
+ metadata.gz: 3e56b648c7ea34db0f0e0f79d4caee22cf82d3c63924a908acfa5591b265f9a630f566d6b0af00e229f04d907d4c11964cb4bc7d3c195146ee54a68afac0a365
7
+ data.tar.gz: 603475404366c87800fd38e35e1bdc6be00c8b5a637f6a1d305796df69c966cde0591a8d842b2e402f46868b7eb84e1aaf6bb308e3ca2650fabf554fbed12d31
@@ -1,55 +1,53 @@
1
+ <% # Make sure the local copy of the driver is loaded %>
2
+ <% lib = File.expand_path('../lib', __FILE__) %>
3
+ <% $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) %>
1
4
  ---
2
5
  driver:
3
6
  name: docker
4
- provision_command: curl -L http://www.chef.io/chef/install.sh | bash
7
+ provision_command: curl -L https://www.chef.io/chef/install.sh | bash
5
8
 
6
9
  provisioner:
7
10
  name: dummy
8
11
 
9
12
  platforms:
10
- - name: ubuntu-12.04
11
- - name: ubuntu-14.04
12
- - name: centos-6.4
13
- - name: centos-7
14
- - name: debian
15
- - name: arch
16
- driver:
17
- image: base/arch
18
- - name: unknown
19
- driver:
20
- image: ubuntu:12.04
21
- platform: ubuntu
22
- - name: dockerfile
23
- driver:
24
- username: dockerfile
25
- password: dockerfile
26
- dockerfile: test/Dockerfile
27
- run_command: /sbin/init
28
- - name: database
29
- driver:
30
- image: ubuntu:14.04
31
- platform: ubuntu
32
- instance_name: db
33
- publish_all: true
34
- - name: linked
35
- driver:
36
- image: ubuntu:14.04
37
- platform: ubuntu
38
- links: "db:db"
13
+ - name: ubuntu-12.04
14
+ - name: ubuntu-14.04
15
+ - name: ubuntu-16.04
16
+ - name: centos-6
17
+ - name: centos-7
18
+ - name: debian
19
+ - name: arch
20
+ driver:
21
+ image: base/archlinux
22
+ provision_command: true
23
+ - name: unknown
24
+ driver:
25
+ image: ubuntu:12.04
26
+ platform: ubuntu
27
+ - name: dockerfile
28
+ driver:
29
+ username: dockerfile
30
+ password: dockerfile
31
+ dockerfile: test/Dockerfile
32
+ run_command: /sbin/init
33
+
39
34
  suites:
40
- - name: default
41
- - name: concurrency
42
- - name: context
43
- driver:
44
- build_context: false
45
- - name: capabilities
46
- excludes: [arch,unknown,centos-7,centos-6.4,dockerfile]
47
- driver:
48
- provision_command:
49
- - curl -L http://www.chef.io/chef/install.sh | bash
50
- - apt-get install -y net-tools
51
- username: kitchen
52
- password: kitchen
53
- cap_drop:
54
- - NET_ADMIN
55
-
35
+ - name: default
36
+ excludes: [arch]
37
+ - name: context
38
+ excludes: [arch]
39
+ driver:
40
+ build_context: false
41
+ - name: capabilities
42
+ excludes: [arch,unknown,centos-7,centos-6,dockerfile]
43
+ driver:
44
+ provision_command:
45
+ - curl -L https://www.chef.io/chef/install.sh | bash
46
+ - apt-get install -y net-tools
47
+ cap_drop:
48
+ - NET_ADMIN
49
+ - name: inspec
50
+ driver:
51
+ provision_command: true
52
+ verifier:
53
+ name: inspec
@@ -1,11 +1,17 @@
1
+ sudo: required
2
+ dist: trusty
1
3
  language: ruby
2
4
 
3
5
  rvm:
4
- - 2.0.0
5
- - 1.9.3
6
- - 1.9.2
7
- - ruby-head
6
+ - "2.1"
7
+ - "2.2"
8
+ - "2.3"
8
9
 
9
- matrix:
10
- allow_failures:
11
- - rvm: ruby-head
10
+ services:
11
+ - docker
12
+
13
+ script:
14
+ - docker version
15
+ - kitchen --version
16
+ - rake spec
17
+ - kitchen test -d always
@@ -1,3 +1,12 @@
1
+ # Kitchen-Docker Changelog
2
+
3
+ ## 2.5.0
4
+
5
+ * [#209](https://github.com/portertech/kitchen-docker/pulls/209) Fix usage with Kitchen rake tasks.
6
+ * Add `run_options` and `build_options` configuration.
7
+ * [#195](https://github.com/portertech/kitchen-docker/pulls/195) Fix Arch Linux support.
8
+ * Fix shell escaping for build paths and SSH keys.
9
+
1
10
  ## 2.4.0
2
11
 
3
12
  * [#148](https://github.com/portertech/kitchen-docker/issues/148) Restored support for older versions of Ruby.
data/README.md CHANGED
@@ -436,6 +436,40 @@ Examples:
436
436
  build_context: true
437
437
  ```
438
438
 
439
+ ### build_options
440
+
441
+ Extra command-line options to pass to `docker build` when creating the image.
442
+
443
+ Examples:
444
+
445
+ ```yaml
446
+ build_options: --rm=false
447
+ ```
448
+
449
+ ```yaml
450
+ build_options:
451
+ rm: false
452
+ build-arg: something
453
+ ```
454
+
455
+ ### run_options
456
+
457
+ Extra command-line options to pass to `docker run` when starting the container.
458
+
459
+ Examples:
460
+
461
+ ```yaml
462
+ run_options: --ip=1.2.3.4
463
+ ```
464
+
465
+ ```yaml
466
+ run_options:
467
+ tmpfs:
468
+ - /run/lock
469
+ - /tmp
470
+ net: br3
471
+ ```
472
+
439
473
  ## Development
440
474
 
441
475
  * Source hosted at [GitHub][repo]
@@ -453,7 +487,9 @@ example:
453
487
 
454
488
  ## Authors
455
489
 
456
- Created and maintained by [Sean Porter][author] (<portertech@gmail.com>)
490
+ Created by [Sean Porter][author] (<portertech@gmail.com>).
491
+
492
+ Maintained by [Noah Kantrowitz][https://github.com/coderanger].
457
493
 
458
494
  ## License
459
495
 
@@ -461,14 +497,14 @@ Apache 2.0 (see [LICENSE][license])
461
497
 
462
498
 
463
499
  [author]: https://github.com/portertech
464
- [issues]: https://github.com/portertech/kitchen-docker/issues
465
- [license]: https://github.com/portertech/kitchen-docker/blob/master/LICENSE
466
- [repo]: https://github.com/portertech/kitchen-docker
500
+ [issues]: https://github.com/test-kitchen/kitchen-docker/issues
501
+ [license]: https://github.com/test-kitchen/kitchen-docker/blob/master/LICENSE
502
+ [repo]: https://github.com/test-kitchen/kitchen-docker
467
503
  [docker_installation]: https://docs.docker.com/installation/#installation
468
504
  [docker_upstart_issue]: https://github.com/dotcloud/docker/issues/223
469
505
  [docker_index]: https://index.docker.io/
470
506
  [docker_default_image]: https://index.docker.io/_/base/
471
507
  [test_kitchen_docs]: http://kitchen.ci/docs/getting-started/
472
- [chef_omnibus_dl]: http://www.opscode.com/chef/install/
508
+ [chef_omnibus_dl]: https://downloads.chef.io/chef-client/
473
509
  [cpu_shares]: https://docs.fedoraproject.org/en-US/Fedora/17/html/Resource_Management_Guide/sec-cpu.html
474
510
  [memory_limit]: https://docs.fedoraproject.org/en-US/Fedora/17/html/Resource_Management_Guide/sec-memory.html
data/Rakefile CHANGED
@@ -20,9 +20,23 @@ task :quality => [:cane, :tailor, :stats]
20
20
 
21
21
  task :default => [:quality]
22
22
 
23
- begin
24
- require 'kitchen/rake_tasks'
25
- Kitchen::RakeTasks.new
26
- rescue LoadError
27
- puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI']
23
+ # begin
24
+ # require 'kitchen/rake_tasks'
25
+ # Kitchen::RakeTasks.new
26
+ # rescue LoadError
27
+ # puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI']
28
+ # end
29
+
30
+ # Create the spec task.
31
+ require 'rspec/core/rake_task'
32
+ RSpec::Core::RakeTask.new(:spec, :tag) do |t, args|
33
+ t.rspec_opts = [].tap do |a|
34
+ a << '--color'
35
+ a << "--format #{ENV['CI'] ? 'documentation' : 'Fuubar'}"
36
+ a << '--backtrace' if ENV['VERBOSE'] || ENV['DEBUG']
37
+ a << "--seed #{ENV['SEED']}" if ENV['SEED']
38
+ a << "--tag #{args[:tag]}" if args[:tag]
39
+ a << "--default-path test"
40
+ a << '-I test/spec'
41
+ end.join(' ')
28
42
  end
@@ -23,7 +23,17 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'bundler'
24
24
  spec.add_development_dependency 'rake'
25
25
 
26
+ # Style checker gems.
26
27
  spec.add_development_dependency 'cane'
27
28
  spec.add_development_dependency 'tailor'
28
29
  spec.add_development_dependency 'countloc'
30
+
31
+ # Unit testing gems.
32
+ spec.add_development_dependency 'rspec', '~> 3.2'
33
+ spec.add_development_dependency 'rspec-its', '~> 1.2'
34
+ spec.add_development_dependency 'fuubar', '~> 2.0'
35
+ spec.add_development_dependency 'simplecov', '~> 0.9'
36
+
37
+ # Integration testing gems.
38
+ spec.add_development_dependency 'kitchen-inspec', '~> 0.14'
29
39
  end
@@ -19,6 +19,8 @@ require 'json'
19
19
  require 'securerandom'
20
20
  require 'uri'
21
21
  require 'net/ssh'
22
+ require 'tempfile'
23
+ require 'shellwords'
22
24
  require File.join(File.dirname(__FILE__), 'docker', 'erb')
23
25
 
24
26
  module Kitchen
@@ -51,6 +53,8 @@ module Kitchen
51
53
  default_config :wait_for_sshd, true
52
54
  default_config :private_key, File.join(Dir.pwd, '.kitchen', 'docker_id_rsa')
53
55
  default_config :public_key, File.join(Dir.pwd, '.kitchen', 'docker_id_rsa.pub')
56
+ default_config :build_options, nil
57
+ default_config :run_options, nil
54
58
 
55
59
  default_config :use_sudo do |driver|
56
60
  !driver.remote_socket?
@@ -196,11 +200,15 @@ module Kitchen
196
200
  RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
197
201
  eos
198
202
  when 'arch'
203
+ # See https://bugs.archlinux.org/task/47052 for why we
204
+ # blank out limits.conf.
199
205
  <<-eos
200
- RUN pacman -Syu --noconfirm
201
- RUN pacman -S --noconfirm openssh sudo curl
206
+ RUN pacman --noconfirm -Sy archlinux-keyring
207
+ RUN pacman-db-upgrade
208
+ RUN pacman --noconfirm -Sy openssl openssh sudo curl
202
209
  RUN ssh-keygen -A -t rsa -f /etc/ssh/ssh_host_rsa_key
203
210
  RUN ssh-keygen -A -t dsa -f /etc/ssh/ssh_host_dsa_key
211
+ RUN echo >/etc/security/limits.conf
204
212
  eos
205
213
  when 'gentoo'
206
214
  <<-eos
@@ -231,10 +239,8 @@ module Kitchen
231
239
  useradd -d #{homedir} -m -s /bin/bash #{username}; \
232
240
  fi
233
241
  RUN echo #{username}:#{password} | chpasswd
234
- RUN echo '#{username} ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
235
- RUN mkdir -p /etc/sudoers.d
236
- RUN echo '#{username} ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/#{username}
237
- RUN chmod 0440 /etc/sudoers.d/#{username}
242
+ RUN echo "#{username} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
243
+ RUN echo "Defaults !requiretty" >> /etc/sudoers
238
244
  RUN mkdir -p #{homedir}/.ssh
239
245
  RUN chown -R #{username} #{homedir}/.ssh
240
246
  RUN chmod 0700 #{homedir}/.ssh
@@ -246,7 +252,7 @@ module Kitchen
246
252
  Array(config[:provision_command]).each do |cmd|
247
253
  custom << "RUN #{cmd}\n"
248
254
  end
249
- ssh_key = "RUN echo '#{public_key}' >> #{homedir}/.ssh/authorized_keys"
255
+ ssh_key = "RUN echo #{Shellwords.escape(public_key)} >> #{homedir}/.ssh/authorized_keys"
250
256
  # Empty string to ensure the file ends with a newline.
251
257
  [from, env_variables, platform, base, custom, ssh_key, ''].join("\n")
252
258
  end
@@ -268,19 +274,21 @@ module Kitchen
268
274
  end
269
275
  end
270
276
  raise ActionFailed,
271
- 'Could not parse Docker build output for image ID'
277
+ 'Could not parse Docker build output for image ID'
272
278
  end
273
279
 
274
280
  def build_image(state)
275
281
  cmd = "build"
276
282
  cmd << " --no-cache" unless config[:use_cache]
283
+ extra_build_options = config_to_options(config[:build_options])
284
+ cmd << " #{extra_build_options}" unless extra_build_options.empty?
277
285
  dockerfile_contents = dockerfile
278
286
  build_context = config[:build_context] ? '.' : '-'
279
287
  file = Tempfile.new('Dockerfile-kitchen', Dir.pwd)
280
288
  output = begin
281
289
  file.write(dockerfile)
282
290
  file.close
283
- docker_command("#{cmd} -f #{file.path} #{build_context}", :input => dockerfile_contents)
291
+ docker_command("#{cmd} -f #{Shellwords.escape(file.path)} #{build_context}", :input => dockerfile_contents)
284
292
  ensure
285
293
  file.close unless file.closed?
286
294
  file.unlink
@@ -317,6 +325,8 @@ module Kitchen
317
325
  Array(config[:cap_add]).each {|cap| cmd << " --cap-add=#{cap}"} if config[:cap_add]
318
326
  Array(config[:cap_drop]).each {|cap| cmd << " --cap-drop=#{cap}"} if config[:cap_drop]
319
327
  Array(config[:security_opt]).each {|opt| cmd << " --security-opt=#{opt}"} if config[:security_opt]
328
+ extra_run_options = config_to_options(config[:run_options])
329
+ cmd << " #{extra_run_options}" unless extra_run_options.empty?
320
330
  cmd << " #{image_id} #{config[:run_command]}"
321
331
  cmd
322
332
  end
@@ -333,11 +343,11 @@ module Kitchen
333
343
 
334
344
  def parse_container_ssh_port(output)
335
345
  begin
336
- host, port = output.split(':')
346
+ _host, port = output.split(':')
337
347
  port.to_i
338
348
  rescue
339
349
  raise ActionFailed,
340
- 'Could not parse Docker port output for container SSH port'
350
+ 'Could not parse Docker port output for container SSH port'
341
351
  end
342
352
  end
343
353
 
@@ -361,6 +371,26 @@ module Kitchen
361
371
  image_id = state[:image_id]
362
372
  docker_command("rmi #{image_id}")
363
373
  end
374
+
375
+ # Convert the config input for `:build_options` or `:run_options` in to a
376
+ # command line string for use with Docker.
377
+ #
378
+ # @since 2.5.0
379
+ # @param config [nil, String, Array, Hash] Config data to convert.
380
+ # @return [String]
381
+ def config_to_options(config)
382
+ case config
383
+ when nil
384
+ ''
385
+ when String
386
+ config
387
+ when Array
388
+ config.map {|c| config_to_options(c) }.join(' ')
389
+ when Hash
390
+ config.map {|k, v| Array(v).map {|c| "--#{k}=#{Shellwords.escape(c)}" }.join(' ') }.join(' ')
391
+ end
392
+ end
393
+
364
394
  end
365
395
  end
366
396
  end
@@ -19,6 +19,6 @@ module Kitchen
19
19
  module Driver
20
20
 
21
21
  # Version string for Docker Kitchen driver
22
- DOCKER_VERSION = "2.4.0"
22
+ DOCKER_VERSION = "2.5.0"
23
23
  end
24
24
  end
@@ -1,4 +1,4 @@
1
- FROM centos:6.4
1
+ FROM centos:6
2
2
  RUN yum clean all
3
3
  RUN yum install -y sudo openssh-server openssh-clients which curl htop
4
4
  RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
@@ -7,4 +7,11 @@ RUN mkdir -p /var/run/sshd
7
7
  RUN useradd -d /home/<%= @username %> -m -s /bin/bash <%= @username %>
8
8
  RUN echo <%= "#{@username}:#{@password}" %> | chpasswd
9
9
  RUN echo '<%= @username %> ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
10
- RUN curl -L http://www.opscode.com/chef/install.sh | bash
10
+ RUN mkdir -p /home/<%= @username %>/.ssh
11
+ RUN chown -R <%= @username %> /home/<%= @username %>/.ssh
12
+ RUN chmod 0700 /home/<%= @username %>/.ssh
13
+ RUN touch /home/<%= @username %>/.ssh/authorized_keys
14
+ RUN chown <%= @username %> /home/<%= @username %>/.ssh/authorized_keys
15
+ RUN chmod 0600 /home/<%= @username %>/.ssh/authorized_keys
16
+ RUN curl -L https://www.chef.io/chef/install.sh | bash
17
+ RUN echo '<%= IO.read(@public_key).strip %>' >> /home/<%= @username %>/.ssh/authorized_keys
@@ -1,6 +1,23 @@
1
- require_relative 'spec_helper'
1
+ #
2
+ # Copyright 2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
2
16
 
3
- describe command('sudo /sbin/ifconfig eth0 multicast') do
4
- its(:exit_status) { should_not eq 0 }
5
- its(:stdout) { should match /Operation not permitted/ }
17
+ require 'serverspec'
18
+ set :backend, :exec
19
+
20
+ describe command('/sbin/ifconfig eth0 multicast') do
21
+ its(:exit_status) { is_expected.to_not eq 0 }
22
+ its(:stderr) { is_expected.to match /Operation not permitted/ }
6
23
  end
@@ -1,5 +1,23 @@
1
- require_relative 'spec_helper'
1
+ #
2
+ # Copyright 2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
2
16
 
3
- describe file('/etc/passwd') do
4
- it { should be_file }
17
+ require 'serverspec'
18
+ set :backend, :exec
19
+
20
+ # Just make sure the image launched and is reachable.
21
+ describe command('true') do
22
+ its(:exit_status) { is_expected.to eq 0 }
5
23
  end
@@ -0,0 +1,20 @@
1
+ #
2
+ # Copyright 2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ # Just make sure the image launched and is reachable.
18
+ describe command('true') do
19
+ its(:exit_status) { is_expected.to eq 0 }
20
+ end
@@ -0,0 +1,64 @@
1
+ #
2
+ # Copyright 2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'spec_helper'
18
+
19
+ describe Kitchen::Driver::Docker do
20
+ describe '#config_to_options' do
21
+ let(:config) { }
22
+ subject { described_class.new.send(:config_to_options, config) }
23
+
24
+ context 'with nil' do
25
+ let(:config) { nil }
26
+ it { is_expected.to eq '' }
27
+ end # /context with nil
28
+
29
+ context 'with a string' do
30
+ let(:config) { '--foo' }
31
+ it { is_expected.to eq '--foo' }
32
+ end # /context with a string
33
+
34
+ context 'with a string with spaces' do
35
+ let(:config) { '--foo bar' }
36
+ it { is_expected.to eq '--foo bar' }
37
+ end # /context with a string with spaces
38
+
39
+ context 'with an array of strings' do
40
+ let(:config) { %w{--foo --bar} }
41
+ it { is_expected.to eq '--foo --bar' }
42
+ end # /context with an array of strings
43
+
44
+ context 'with an array of hashes' do
45
+ let(:config) { [{foo: 'bar'}, {other: 'baz'}] }
46
+ it { is_expected.to eq '--foo=bar --other=baz' }
47
+ end # /context with an array of hashes
48
+
49
+ context 'with a hash of strings' do
50
+ let(:config) { {foo: 'bar', other: 'baz'} }
51
+ it { is_expected.to eq '--foo=bar --other=baz' }
52
+ end # /context with a hash of strings
53
+
54
+ context 'with a hash of arrays' do
55
+ let(:config) { {foo: %w{bar baz}} }
56
+ it { is_expected.to eq '--foo=bar --foo=baz' }
57
+ end # /context with a hash of arrays
58
+
59
+ context 'with a hash of strings with spaces' do
60
+ let(:config) { {foo: 'bar two', other: 'baz'} }
61
+ it { is_expected.to eq '--foo=bar\\ two --other=baz' }
62
+ end # /context with a hash of strings with spaces
63
+ end # /describe #config_to_options
64
+ end
@@ -0,0 +1,32 @@
1
+ #
2
+ # Copyright 2016, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'rake'
18
+ require 'rspec'
19
+ require 'rspec/its'
20
+ require 'kitchen/driver/docker'
21
+
22
+ RSpec.configure do |config|
23
+ # Basic configuraiton
24
+ config.run_all_when_everything_filtered = true
25
+ config.filter_run(:focus)
26
+
27
+ # Run specs in random order to surface order dependencies. If you find an
28
+ # order dependency and want to debug it, you can fix the order by providing
29
+ # the seed, which is printed after each run.
30
+ # --seed 1234
31
+ config.order = 'random'
32
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-docker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Porter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-03 00:00:00.000000000 Z
11
+ date: 2016-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen
@@ -94,6 +94,76 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec-its
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.2'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: fuubar
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.9'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.9'
153
+ - !ruby/object:Gem::Dependency
154
+ name: kitchen-inspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.14'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.14'
97
167
  description: A Docker Driver for Test Kitchen
98
168
  email:
99
169
  - portertech@gmail.com
@@ -117,9 +187,10 @@ files:
117
187
  - lib/kitchen/driver/docker_version.rb
118
188
  - test/Dockerfile
119
189
  - test/integration/capabilities/serverspec/capabilities_drop_spec.rb
120
- - test/integration/capabilities/serverspec/spec_helper.rb
121
190
  - test/integration/default/serverspec/default_spec.rb
122
- - test/integration/default/serverspec/spec_helper.rb
191
+ - test/integration/inspec/inspec_spec.rb
192
+ - test/spec/docker_spec.rb
193
+ - test/spec/spec_helper.rb
123
194
  homepage: https://github.com/portertech/kitchen-docker
124
195
  licenses:
125
196
  - Apache 2.0
@@ -140,13 +211,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
211
  version: '0'
141
212
  requirements: []
142
213
  rubyforge_project:
143
- rubygems_version: 2.6.2
214
+ rubygems_version: 2.6.4
144
215
  signing_key:
145
216
  specification_version: 4
146
217
  summary: A Docker Driver for Test Kitchen
147
218
  test_files:
148
219
  - test/Dockerfile
149
220
  - test/integration/capabilities/serverspec/capabilities_drop_spec.rb
150
- - test/integration/capabilities/serverspec/spec_helper.rb
151
221
  - test/integration/default/serverspec/default_spec.rb
152
- - test/integration/default/serverspec/spec_helper.rb
222
+ - test/integration/inspec/inspec_spec.rb
223
+ - test/spec/docker_spec.rb
224
+ - test/spec/spec_helper.rb
@@ -1,3 +0,0 @@
1
- require 'serverspec'
2
-
3
- set :backend, :exec
@@ -1,4 +0,0 @@
1
- require 'serverspec'
2
-
3
- # Required by serverspec
4
- set :backend, :exec