diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 16094ed..373813b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,92 +1,93 @@ require 'puppetlabs_spec_helper/module_spec_helper' require 'rspec-puppet-facts' require 'shared_examples' require 'rspec-puppet' require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb')) include RspecPuppetFacts default_facts = { puppetversion: Puppet.version, facterversion: Facter.version, } default_fact_files = [ File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml')), File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml')), ] default_fact_files.each do |f| next unless File.exist?(f) && File.readable?(f) && File.size?(f) begin default_facts.merge!(YAML.safe_load(File.read(f), [], [], true)) rescue => e RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}" end end RSpec.configure do |c| + c.mock_with :rspec c.default_facts = default_facts c.before :each do # set to strictest setting for testing # by default Puppet runs at warning level Puppet.settings[:strict] = :warning end c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT'] c.after(:suite) do end end # Ensures that a module is defined # @param module_name Name of the module def ensure_module_defined(module_name) module_name.split('::').reduce(Object) do |last_module, next_module| last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false) last_module.const_get(next_module, false) end end RSpec::Matchers.define :require_string_for do |property| match do |type_class| config = { name: 'name' } config[property] = 2 expect { type_class.new(config) }.to raise_error(Puppet::Error, %r{#{property} should be a String}) end failure_message do |type_class| "#{type_class} should require #{property} to be a String" end end RSpec::Matchers.define :require_hash_for do |property| match do |type_class| config = { name: 'name' } config[property] = 2 expect { type_class.new(config) }.to raise_error(Puppet::Error, %r{#{property} should be a Hash}) end failure_message do |type_class| "#{type_class} should require #{property} to be a Hash" end end RSpec::Matchers.define :require_array_for do |property| match do |type_class| config = { name: 'name' } config[property] = 2 expect { type_class.new(config) }.to raise_error(Puppet::Error, %r{#{property} should be an Array}) end failure_message do |type_class| "#{type_class} should require #{property} to be an Array" end end at_exit { RSpec::Puppet::Coverage.report! } # 'spec_overrides' from sync.yml will appear below this line diff --git a/spec/unit/lib/puppet/provider/docker_network_spec.rb b/spec/unit/lib/puppet/provider/docker_network_spec.rb index 2a4aa68..804bb27 100644 --- a/spec/unit/lib/puppet/provider/docker_network_spec.rb +++ b/spec/unit/lib/puppet/provider/docker_network_spec.rb @@ -1,26 +1,28 @@ require 'spec_helper' describe Puppet::Type.type(:docker_network).provider(:ruby) do let(:provider) { resource.provider } let(:instance) { provider.class.instances.first } let(:resource) do Puppet::Type.type(:docker_network).new( ensure: :present, name: 'test-network', driver: 'host', subnet: ['192.168.3.0/24', '10.0.0.0/24'], ) end before :each do # need to reach deep into puppet to unhook the confinement call, so the provider gets properly loaded - Puppet::Confine::Exists.any_instance.stubs(:which).with('docker').returns('/usr/local/bin/docker') # rubocop:disable RSpec/AnyInstance + ['docker', '/usr/local/bin/docker'].each do |docker_path| + allow(Puppet::Confine::Exists).to receive(:which).with(docker_path).and_return('/usr/local/bin/docker') + end end describe 'create' do it 'creates a docker network' do provider.class.expects(:docker).with(['network', 'create', "--driver=#{resource[:driver]}", "--subnet=#{resource[:subnet][0]}", "--subnet=#{resource[:subnet][1]}", resource[:name]]) expect(provider.create).to be_nil end end end