module Dockerspec::Runner::Serverspec::Base

Base class to be included by Serverspec runners.

@example

module Dockerspec
  module Runner
    module Serverspec
      class MyRunner
        include Base
      end
    end
  end
end

Attributes

backend_name[R]

The Specinfra backend name to use.

@return [Symbol] The backend name.

Public Instance Methods

finalize() click to toggle source

Stops and deletes the Docker Container.

Actually does nothing. Do no delete anything, lets Specinfra do that.

@return void

@api public

# File lib/dockerspec/runner/serverspec/base.rb, line 68
def finalize
  # Do not stop the container
end
to_s() click to toggle source

Generates a description of the object.

@example Running Against a Container Image Tag

self.description #=> "Serverspec on tag: \"debian\""

@example Running Against a Running Container ID

self.description #=> "Serverspec on id: \"92cc98ab560a\""

@return [String] The object description.

@api private

# File lib/dockerspec/runner/serverspec/base.rb, line 85
def to_s
  description('Serverspec on')
end

Protected Instance Methods

calculate_docker_backend_name(prefix) click to toggle source

Calculates and saves the correct docker Specinfra backend to use on the system.

Returns the LXC driver instead of the native driver when required.

Reads the driver from the configuration options if set.

@example Docker with Native Execution Driver

self.calculate_docker_backend_name(:docker) #=> :docker

@example Docker with LXC Execution Driver

self.calculate_docker_backend_name(:docker) #=> :docker_lxc

@example Compose with LXC Execution Driver

self.calculate_docker_backend_name(:compose) #=> :docker_compose_lxc

@param prefix [Symbol, String] The prefix to use: `:docker` or

`:docker_compose`.

@return [Symbol] The backend name.

@api private

# File lib/dockerspec/runner/serverspec/base.rb, line 157
def calculate_docker_backend_name(prefix)
  @backend_name =
    if options.key?(:backend)
      generate_docker_backend_name(options[:backend], prefix)
    elsif Helper::Docker.lxc_execution_driver?
      "#{prefix}_lxc".to_sym
    else
      prefix.to_sym
    end
end
generate_docker_backend_name(name, prefix) click to toggle source

Generates the correct Specinfra backend name to use from a name.

@example

self.generate_docker_backend_name(:docker, :docker) #=> :docker
self.generate_docker_backend_name(:lxc, :docker) #=> :docker_lxc
self.generate_docker_backend_name(:docker_lxc, :docker)
  #=> :docker_lxc
self.generate_docker_backend_name(:native, :docker) #=> :docker

@param name [String, Symbol] The backend short (without the `docker`

prefix) or long name.

@param prefix [Symbol, String] The prefix to use: `:docker` or

`:docker_compose`.

@return [Symbol] The backend name.

@api private

# File lib/dockerspec/runner/serverspec/base.rb, line 127
def generate_docker_backend_name(name, prefix)
  return name.to_s.to_sym if name.to_s.start_with?(prefix)
  return prefix.to_sym if name.to_s.to_sym == :native
  "#{prefix}_#{name}".to_sym
end
rspec_options() click to toggle source

Gets the default options configured using `RSpec.configuration`.

@example

self.rspec_options #=> { :family => :debian }

@return [Hash] The configuration options.

@api private

Calls superclass method
# File lib/dockerspec/runner/serverspec/base.rb, line 101
def rspec_options
  config = ::RSpec.configuration
  super.tap do |opts|
    opts[:family] = config.family if config.family?
  end
end
run_container() click to toggle source

Starts the Docker container.

@return void

@raise [Dockerspec::DockerError] For underlaying docker errors.

@api private

# File lib/dockerspec/runner/serverspec/base.rb, line 177
def run_container
  Specinfra.configuration.backend(@backend_name)
rescue ::Docker::Error::DockerError => e
  DockerExceptionParser.new(e)
end