diff options
author | Chris Price <chris@puppetlabs.com> | 2012-06-07 09:09:14 -0700 |
---|---|---|
committer | Chris Price <chris@puppetlabs.com> | 2012-06-07 09:09:14 -0700 |
commit | 9e0256aabfd58dfce8cff65147722a844f56e006 (patch) | |
tree | 1eb1b72036a9a1b5c6f31b3a5dda63906eb554d5 /spec/unit/puppet/type | |
parent | cf7ac0286043d01aa807743d75574d450536582d (diff) |
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')
-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' |