diff options
author | Chris Price <chris@puppetlabs.com> | 2012-06-07 09:09:14 -0700 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2012-08-14 09:55:30 -0700 |
commit | a06c0d8115892a74666676b50d4282df9850a119 (patch) | |
tree | 0ded58647c134dafa32604725b010f32a465164f /spec/unit/puppet/type/file_line_spec.rb | |
parent | f30885118843f2eef15c048fe2cb504d7eaf8f77 (diff) | |
download | puppet-stdlib-a06c0d8115892a74666676b50d4282df9850a119.tar.gz puppet-stdlib-a06c0d8115892a74666676b50d4282df9850a119.tar.bz2 |
Add support for a 'match' parameter to file_line
This commit adds a new parameter called "match"
to the file_line resource type, and support for
this new parameter to the corresponding ruby
provider.
This parameter is optional; file_line should work
just as before if you do not specify this parameter...
so this change should be backwards-compatible.
If you do specify the parameter, it is treated
as a regular expression that should be used when
looking through the file for a line. This allows
you to do things like find a line that begins with
a certain prefix (e.g., "foo=.*"), and *replace*
the existing line with the line you specify in your
"line" parameter. Without this capability, if you
already had a line "foo=bar" in your file and your
"line" parameter was set to "foo=baz", you'd end up
with *both* lines in the final file. In many cases
this is undesirable.
Diffstat (limited to 'spec/unit/puppet/type/file_line_spec.rb')
-rw-r--r-- | spec/unit/puppet/type/file_line_spec.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/spec/unit/puppet/type/file_line_spec.rb b/spec/unit/puppet/type/file_line_spec.rb index c86dbd2..e1c07ac 100644 --- a/spec/unit/puppet/type/file_line_spec.rb +++ b/spec/unit/puppet/type/file_line_spec.rb @@ -7,6 +7,30 @@ describe Puppet::Type.type(:file_line) do it 'should accept a line and path' do file_line[:line] = 'my_line' file_line[:line].should == 'my_line' + file_line[:path] = '/my/path' + file_line[:path].should == '/my/path' + end + it 'should accept a match regex' do + file_line[:match] = '^foo.*$' + file_line[:match].should == '^foo.*$' + end + it 'should not accept a match regex that does not match the specified line' do + expect { + Puppet::Type.type(:file_line).new( + :name => 'foo', + :path => '/my/path', + :line => 'foo=bar', + :match => '^bar=blah$' + )}.to raise_error(Puppet::Error, /the value must be a regex that matches/) + end + it 'should accept a match regex that does match the specified line' do + expect { + Puppet::Type.type(:file_line).new( + :name => 'foo', + :path => '/my/path', + :line => 'foo=bar', + :match => '^\s*foo=.*$' + )}.not_to raise_error end it 'should accept posix filenames' do file_line[:path] = '/tmp/path' |