From 88ff9c6500e76fdda02e60262dd1571577c0b92b Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Sun, 12 Apr 2009 23:10:58 -0500 Subject: Fixing #2111 - SimpleGraph only creates valid adjacencies The way this class was testing edges was causing them to appear adjacencies to appear magically, because it was only testing that a hash had a key, not that the value had any edges. This fixes the infinite recursion mentioned in #2111. Signed-off-by: Luke Kanies --- lib/puppet/simple_graph.rb | 2 +- spec/unit/simple_graph.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/puppet/simple_graph.rb b/lib/puppet/simple_graph.rb index d6418e04f..bc81a6a65 100644 --- a/lib/puppet/simple_graph.rb +++ b/lib/puppet/simple_graph.rb @@ -29,7 +29,7 @@ class Puppet::SimpleGraph return @adjacencies[direction].values.flatten if options[:type] == :edges - return @adjacencies[direction].keys + return @adjacencies[direction].keys.reject { |vertex| @adjacencies[direction][vertex].empty? } end # Add an edge to our list. diff --git a/spec/unit/simple_graph.rb b/spec/unit/simple_graph.rb index 2c061ae1a..a5984c989 100755 --- a/spec/unit/simple_graph.rb +++ b/spec/unit/simple_graph.rb @@ -197,6 +197,15 @@ describe Puppet::SimpleGraph do it "should support returning an array of matching edges" do @graph.adjacent(:two, :type => :edges).should == [@two_three] end + + # Bug #2111 + it "should not consider a vertex adjacent just because it was asked about previously" do + @graph = Puppet::SimpleGraph.new + @graph.add_vertex("a") + @graph.add_vertex("b") + @graph.edge?("a", "b") + @graph.adjacent("a").should == [] + end end describe "when clearing" do -- cgit