summaryrefslogtreecommitdiffstats
path: root/spec/unit
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-02-12 23:42:31 -0600
committerJames Turnbull <james@lovedthanlost.net>2009-02-28 09:16:42 +1100
commit373d505c381696f880c305a9357a6e50342079b8 (patch)
tree3cc0662af61f698658e9d65971902fac72e4272d /spec/unit
parent0e467869f4d427a8c42e1c2ff6a0bb215f288b09 (diff)
downloadpuppet-373d505c381696f880c305a9357a6e50342079b8.tar.gz
puppet-373d505c381696f880c305a9357a6e50342079b8.tar.xz
puppet-373d505c381696f880c305a9357a6e50342079b8.zip
Adding a FileCollection and a lookup module for it.
Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'spec/unit')
-rwxr-xr-xspec/unit/file_collection.rb45
-rwxr-xr-xspec/unit/file_collection/lookup.rb41
2 files changed, 86 insertions, 0 deletions
diff --git a/spec/unit/file_collection.rb b/spec/unit/file_collection.rb
new file mode 100755
index 000000000..e9acc8dd2
--- /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 000000000..9ae7ae582
--- /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