require 'spec_helper' # This is a reduced version of ruby_spec.rb just to ensure we can subclass as # documented $: << 'spec/fixtures/modules/inherit_ini_setting/lib' provider_class = Puppet::Type.type(:inherit_ini_setting).provider(:ini_setting) describe provider_class do include PuppetlabsSpec::Files let(:tmpfile) { tmpfilename('inherit_ini_setting_test') } def validate_file(expected_content,tmpfile = tmpfile) File.read(tmpfile).should == expected_content end before :each do File.open(tmpfile, 'w') do |fh| fh.write(orig_content) end end context 'when calling instances' do let(:orig_content) { '' } it 'should parse nothing when the file is empty' do provider_class.stubs(:file_path).returns(tmpfile) provider_class.instances.should == [] end context 'when the file has contents' do let(:orig_content) { <<-EOS # A comment red = blue green = purple EOS } it 'should parse the results' do provider_class.stubs(:file_path).returns(tmpfile) instances = provider_class.instances instances.size.should == 2 # inherited version of namevar flattens the names names = instances.map do |instance| instance.instance_variable_get(:@property_hash)[:name] end names.sort.should == [ 'green', 'red' ] end end end context 'when ensuring that a setting is present' do let(:orig_content) { '' } it 'should add a value to the file' do provider_class.stubs(:file_path).returns(tmpfile) resource = Puppet::Type::Inherit_ini_setting.new({ :setting => 'set_this', :value => 'to_that', }) provider = described_class.new(resource) provider.create validate_file("set_this=to_that\n") end end end