Codebase list facter / 74f15d6
Merge pull request #186 from stschulte/feature/master/12790 (#12790) Raise an exception if recursion is detected Daniel Pittman 12 years ago
2 changed file(s) with 13 addition(s) and 10 deletion(s). Raw diff Collapse all Expand all
9999
100100 # Lock our searching process, so we never ge stuck in recursion.
101101 def searching
102 if searching?
103 Facter.debug "Caught recursion on %s" % @name
104
105 # return a cached value if we've got it
106 if @value
107 return @value
108 else
109 return nil
110 end
111 end
102 raise RuntimeError, "Caught recursion on #{@name}" if searching?
112103
113104 # If we've gotten this far, we're not already searching, so go ahead and do so.
114105 @searching = true
2323 Facter.reset
2424 Facter.collection.should_not equal(old)
2525 end
26
27 it "should raise an error if a recursion is detected" do
28 Facter.clear
29 Facter.add(:foo) do
30 confine :bar => 'some_value'
31 end
32 Facter.add(:bar) do
33 confine :foo => 'some_value'
34 end
35 lambda { Facter.value(:foo) }.should raise_error(RuntimeError, /Caught recursion on foo/)
36 end
37
2638 end