diff options
author | Alex O'Rielly <aorielly@gmail.com> | 2013-06-21 17:33:44 -0500 |
---|---|---|
committer | Adrien Thebo <git@somethingsinistral.net> | 2013-07-11 16:25:56 -0700 |
commit | 964a9ad6193b0dd243a44ddae1509655fc9e9fb8 (patch) | |
tree | 415b40d4bcdf9ffca0513154ed3ffd454107da91 /spec/unit/puppet/provider/file_line | |
parent | ca7633c0e4830edb0dab4dc31609086eb7edba67 (diff) | |
download | puppet-stdlib-964a9ad6193b0dd243a44ddae1509655fc9e9fb8.tar.gz puppet-stdlib-964a9ad6193b0dd243a44ddae1509655fc9e9fb8.tar.bz2 |
(#21416) Allow file_line to match multiple lines
Without this commit the file_line type will outright fail if multiple
lines match the given regex. This commit allows the file_line type and
provider to optionally match and modify all matching lines.
Changeset rebased into a single commit by Adrien Thebo <adrien@puppetlabs.com>
Diffstat (limited to 'spec/unit/puppet/provider/file_line')
-rw-r--r-- | spec/unit/puppet/provider/file_line/ruby_spec.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/spec/unit/puppet/provider/file_line/ruby_spec.rb b/spec/unit/puppet/provider/file_line/ruby_spec.rb index 7857d39..648c05b 100644 --- a/spec/unit/puppet/provider/file_line/ruby_spec.rb +++ b/spec/unit/puppet/provider/file_line/ruby_spec.rb @@ -61,6 +61,39 @@ describe provider_class do File.read(@tmpfile).should eql("foo1\nfoo=blah\nfoo2\nfoo=baz") end + it 'should replace all lines that matches' do + @resource = Puppet::Type::File_line.new( + { + :name => 'foo', + :path => @tmpfile, + :line => 'foo = bar', + :match => '^foo\s*=.*$', + :multiple => true + } + ) + @provider = provider_class.new(@resource) + File.open(@tmpfile, 'w') do |fh| + fh.write("foo1\nfoo=blah\nfoo2\nfoo=baz") + end + @provider.exists?.should be_nil + @provider.create + File.read(@tmpfile).chomp.should eql("foo1\nfoo = bar\nfoo2\nfoo = bar") + end + + it 'should raise an error with invalid values' do + expect { + @resource = Puppet::Type::File_line.new( + { + :name => 'foo', + :path => @tmpfile, + :line => 'foo = bar', + :match => '^foo\s*=.*$', + :multiple => 'asgadga' + } + ) + }.to raise_error(Puppet::Error, /Invalid value "asgadga"\. Valid values are true, false\./) + end + it 'should replace a line that matches' do File.open(@tmpfile, 'w') do |fh| fh.write("foo1\nfoo=blah\nfoo2") |