diff options
author | Luke Kanies <luke@madstop.com> | 2009-04-12 23:10:58 -0500 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2009-04-12 23:10:58 -0500 |
commit | 88ff9c6500e76fdda02e60262dd1571577c0b92b (patch) | |
tree | 3ec61f089d2a81da44b4f436fbab31cb68998889 | |
parent | 36594fecd8e30f732f09bc940adbb4c686e314ba (diff) | |
download | puppet-88ff9c6500e76fdda02e60262dd1571577c0b92b.tar.gz puppet-88ff9c6500e76fdda02e60262dd1571577c0b92b.tar.xz puppet-88ff9c6500e76fdda02e60262dd1571577c0b92b.zip |
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 <luke@madstop.com>
-rw-r--r-- | lib/puppet/simple_graph.rb | 2 | ||||
-rwxr-xr-x | spec/unit/simple_graph.rb | 9 |
2 files changed, 10 insertions, 1 deletions
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 |