Adjust the regular expression for facts.

Previously this was incorrectly handling facts that were of the form
foo=1+1=2 due to the ='s in the actual fact contents.  Fix this and
add tests to try and prevent regressions.
This commit is contained in:
Ashley Penney 2014-04-22 23:14:16 +02:00
parent 6a5dee25a6
commit 68acb59bf7
2 changed files with 32 additions and 1 deletions

View file

@ -40,7 +40,7 @@ class Facter::Util::DotD
def txt_parser(file)
File.readlines(file).each do |line|
if line =~ /^(.+)=(.+)$/
if line =~ /^([^=]+)=(.+)$/
var = $1; val = $2
Facter.add(var) do

View file

@ -0,0 +1,31 @@
require 'spec_helper'
require 'facter/facter_dot_d'
describe Facter::Util::DotD do
context 'returns a simple fact' do
before :each do
Facter.stubs(:version).returns('1.6.1')
subject.stubs(:entries).returns(['/etc/facter/facts.d/fake_fact.txt'])
File.stubs(:readlines).with('/etc/facter/facts.d/fake_fact.txt').returns(['fake_fact=fake fact'])
subject.create
end
it 'should return successfully' do
Facter.fact(:fake_fact).value.should == 'fake fact'
end
end
context 'returns a fact with equals signs' do
before :each do
Facter.stubs(:version).returns('1.6.1')
subject.stubs(:entries).returns(['/etc/facter/facts.d/foo.txt'])
File.stubs(:readlines).with('/etc/facter/facts.d/foo.txt').returns(['foo=1+1=2'])
subject.create
end
it 'should return successfully' do
Facter.fact(:foo).value.should == '1+1=2'
end
end
end