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
The Specinfra backend name to use.
@return [Symbol] The backend name.
Public Instance Methods
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
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
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
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
Gets the default options configured using `RSpec.configuration`.
@example
self.rspec_options #=> { :family => :debian }
@return [Hash] The configuration options.
@api private
# 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
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