[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, master, updated. debian/0.24.7-1-98-gf19c0e5

James Turnbull james at lovedthanlost.net
Wed Apr 8 21:48:18 UTC 2009


The following commit has been merged in the master branch:
commit 373d505c381696f880c305a9357a6e50342079b8
Author: Luke Kanies <luke at madstop.com>
Date:   Thu Feb 12 23:42:31 2009 -0600

    Adding a FileCollection and a lookup module for it.
    
    Signed-off-by: Luke Kanies <luke at madstop.com>

diff --git a/lib/puppet/file_collection.rb b/lib/puppet/file_collection.rb
new file mode 100644
index 0000000..451b496
--- /dev/null
+++ b/lib/puppet/file_collection.rb
@@ -0,0 +1,20 @@
+# A simple way to turn file names into singletons,
+# so we don't have tons of copies of each file path around.
+class Puppet::FileCollection
+    def initialize
+        @paths = []
+    end
+
+    def index(path)
+        if @paths.include?(path)
+            return @paths.index(path)
+        else
+            @paths << path
+            return @paths.length - 1
+        end
+    end
+
+    def path(index)
+        @paths[index]
+    end
+end
diff --git a/lib/puppet/file_collection/lookup.rb b/lib/puppet/file_collection/lookup.rb
new file mode 100644
index 0000000..8f69c66
--- /dev/null
+++ b/lib/puppet/file_collection/lookup.rb
@@ -0,0 +1,16 @@
+require 'puppet/file_collection'
+
+# A simple module for looking up file paths and indexes
+# in a file collection.
+module Puppet::FileCollection::Lookup
+    attr_accessor :line, :file_index
+
+    def file=(path)
+        @file_index = file_collection.index(path)
+    end
+
+    def file
+        return nil unless file_index
+        file_collection.path(file_index)
+    end
+end
diff --git a/spec/unit/file_collection.rb b/spec/unit/file_collection.rb
new file mode 100755
index 0000000..e9acc8d
--- /dev/null
+++ b/spec/unit/file_collection.rb
@@ -0,0 +1,45 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../spec_helper'
+
+require 'puppet/file_collection'
+
+describe Puppet::FileCollection do
+    before do
+        @collection = Puppet::FileCollection.new
+    end
+
+    it "should be able to convert a file name into an index" do
+        @collection.index("/my/file").should be_instance_of(Fixnum)
+    end
+
+    it "should be able to convert an index into a file name" do
+        index = @collection.index("/path/to/file")
+        @collection.path(index).should == "/path/to/file"
+    end
+
+    it "should always give the same file name for a given index" do
+        index = @collection.index("/path/to/file")
+        @collection.path(index).should == @collection.path(index)
+    end
+
+    it "should always give the same index for a given file name" do
+        @collection.index("/my/file").should == @collection.index("/my/file")
+    end
+
+    it "should always correctly relate a file name and its index even when multiple files are in the collection" do
+        indexes = %w{a b c d e f}.inject({}) do |hash, letter|
+            hash[letter] = @collection.index("/path/to/file/%s" % letter)
+            hash
+        end
+
+        indexes.each do |letter, index|
+            @collection.index("/path/to/file/%s" % letter).should == indexes[letter]
+            @collection.path(index).should == @collection.path(index)
+        end
+    end
+
+    it "should return nil as the file name when an unknown index is provided" do
+        @collection.path(50).should be_nil
+    end
+end
diff --git a/spec/unit/file_collection/lookup.rb b/spec/unit/file_collection/lookup.rb
new file mode 100755
index 0000000..9ae7ae5
--- /dev/null
+++ b/spec/unit/file_collection/lookup.rb
@@ -0,0 +1,41 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+require 'puppet/file_collection/lookup'
+
+class LookupTester
+    include Puppet::FileCollection::Lookup
+end
+
+describe Puppet::FileCollection::Lookup do
+    before do
+        @tester = LookupTester.new
+
+        @file_collection = mock 'file_collection'
+        @tester.stubs(:file_collection).returns @file_collection
+    end
+
+    it "should use the file collection to determine the index of the file name" do
+        @file_collection.expects(:index).with("/my/file").returns 50
+
+        @tester.file = "/my/file"
+        @tester.file_index.should == 50
+    end
+
+    it "should return nil as the file name if no index is set" do
+        @tester.file.should be_nil
+    end
+
+    it "should use the file collection to convert the index to a file name" do
+        @file_collection.expects(:path).with(25).returns "/path/to/file"
+
+        @tester.file_index = 25
+
+        @tester.file.should == "/path/to/file"
+    end
+
+    it "should support a line attribute" do
+        @tester.line = 50
+        @tester.line.should == 50
+    end
+end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list