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:
parent
6a5dee25a6
commit
68acb59bf7
2 changed files with 32 additions and 1 deletions
|
@ -40,7 +40,7 @@ class Facter::Util::DotD
|
||||||
|
|
||||||
def txt_parser(file)
|
def txt_parser(file)
|
||||||
File.readlines(file).each do |line|
|
File.readlines(file).each do |line|
|
||||||
if line =~ /^(.+)=(.+)$/
|
if line =~ /^([^=]+)=(.+)$/
|
||||||
var = $1; val = $2
|
var = $1; val = $2
|
||||||
|
|
||||||
Facter.add(var) do
|
Facter.add(var) do
|
||||||
|
|
31
spec/unit/facter/facter_dot_d_spec.rb
Normal file
31
spec/unit/facter/facter_dot_d_spec.rb
Normal 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
|
Loading…
Reference in a new issue