[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35

test branch puppet-dev at googlegroups.com
Wed Jul 14 10:34:18 UTC 2010


The following commit has been merged in the upstream branch:
commit f054d5b6abe2de3810203b13c8f263d9a23f0d50
Author: David Schmitt <david at dasz.at>
Date:   Mon May 17 16:11:20 2010 +0200

    Make specs work on win32
    
    lib/:
    * Fix Puppet::Parser::Files
    * Fix Puppet::Util::Settings
    
    spec/:
    * unit/application/kick.rb: only run on posix
    * unit/application.rb
    * unit/parser/compiler.rb
    * unit/parser/files.rb
    * unit/resource.rb
    * unit/resource/catalog.rb
    * unit/resource/type_collection.rb
    * unit/transaction.rb
    * unit/type/tidy.rb
    * unit/util/settings.rb
    * unit/util/settings/file_setting.rb
    * unit/application.rb

diff --git a/lib/puppet/parser/files.rb b/lib/puppet/parser/files.rb
index 3442e11..1ff5552 100644
--- a/lib/puppet/parser/files.rb
+++ b/lib/puppet/parser/files.rb
@@ -38,7 +38,7 @@ module Puppet::Parser::Files
     # In all cases, an absolute path is returned, which does not
     # necessarily refer to an existing file
     def find_template(template, environment = nil)
-        if template =~ /^#{File::SEPARATOR}/
+        if template == File.expand_path(template)
             return template
         end
 
@@ -76,7 +76,7 @@ module Puppet::Parser::Files
     # Return an array of paths by splitting the +templatedir+ config
     # parameter.
     def templatepath(environment = nil)
-        dirs = Puppet.settings.value(:templatedir, environment).split(":")
+        dirs = Puppet.settings.value(:templatedir, environment).split(File::PATH_SEPARATOR)
         dirs.select do |p|
             File::directory?(p)
         end
@@ -86,7 +86,7 @@ module Puppet::Parser::Files
     # nil if the path is empty or absolute (starts with a /).
     # This method can return nil & anyone calling it needs to handle that.
     def split_file_path(path)
-        path.split(File::SEPARATOR, 2) unless path =~ /^(#{File::SEPARATOR}|$)/
+        path.split(File::SEPARATOR, 2) unless path == "" or path == File.expand_path(path)
     end
 
 end
diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb
index 82d2d45..b2d1f4a 100644
--- a/lib/puppet/util/settings.rb
+++ b/lib/puppet/util/settings.rb
@@ -387,7 +387,7 @@ class Puppet::Util::Settings
             case hash[:default]
             when true, false, "true", "false"
                 klass = BooleanSetting
-            when /^\$\w+\//, /^\//
+            when /^\$\w+\//, /^\//, /^\w:\//
                 klass = FileSetting
             when String, Integer, Float # nothing
                 klass = Setting
diff --git a/spec/unit/application.rb b/spec/unit/application.rb
index daaed0c..9dc655d 100755
--- a/spec/unit/application.rb
+++ b/spec/unit/application.rb
@@ -10,6 +10,9 @@ describe Puppet::Application do
 
     before do
         @app = Class.new(Puppet::Application).new
+
+        # avoid actually trying to parse any settings
+        Puppet.settings.stubs(:parse)
     end
 
     it "should have a run entry-point" do
@@ -145,17 +148,21 @@ describe Puppet::Application do
             end
         end
 
-        it 'should signal process with HUP after block if restart requested during block execution' do
-            Puppet::Application.run_status = nil
-            target = mock 'target'
-            target.expects(:some_method).once
-            old_handler = trap('HUP') { target.some_method }
-            begin
-                Puppet::Application.controlled_run do
-                    Puppet::Application.run_status = :restart_requested
+        describe 'on POSIX systems' do
+            confine "HUP works only on POSIX systems" => Puppet.features.posix?
+            
+            it 'should signal process with HUP after block if restart requested during block execution' do
+                Puppet::Application.run_status = nil
+                target = mock 'target'
+                target.expects(:some_method).once
+                old_handler = trap('HUP') { target.some_method }
+                begin
+                    Puppet::Application.controlled_run do
+                        Puppet::Application.run_status = :restart_requested
+                    end
+                ensure
+                    trap('HUP', old_handler)
                 end
-            ensure
-                trap('HUP', old_handler)
             end
         end
 
diff --git a/spec/unit/application/kick.rb b/spec/unit/application/kick.rb
index c1b7806..58e71b2 100755
--- a/spec/unit/application/kick.rb
+++ b/spec/unit/application/kick.rb
@@ -6,6 +6,9 @@ require 'puppet/util/ldap/connection'
 require 'puppet/application/kick'
 
 describe Puppet::Application::Kick do
+
+    confine "Kick's eventloops can only start on POSIX" => Puppet.features.posix?
+
     before :each do
         Puppet::Util::Ldap::Connection.stubs(:new).returns(stub_everything)
         @kick = Puppet::Application[:kick]
diff --git a/spec/unit/parser/compiler.rb b/spec/unit/parser/compiler.rb
index fb210bc..fa65479 100755
--- a/spec/unit/parser/compiler.rb
+++ b/spec/unit/parser/compiler.rb
@@ -388,8 +388,9 @@ describe Puppet::Parser::Compiler do
         end
 
         it "should fail to add resources that conflict with existing resources" do
-            file1 = Puppet::Type.type(:file).new :path => "/foo"
-            file2 = Puppet::Type.type(:file).new :path => "/foo"
+            path = Puppet.features.posix? ? "/foo" : "C:/foo"
+            file1 = Puppet::Type.type(:file).new :path => path
+            file2 = Puppet::Type.type(:file).new :path => path
 
             @compiler.add_resource(@scope, file1)
             lambda { @compiler.add_resource(@scope, file2) }.should raise_error(Puppet::Resource::Catalog::DuplicateResourceError)
diff --git a/spec/unit/parser/files.rb b/spec/unit/parser/files.rb
index 42953b7..4c6e5b7 100644
--- a/spec/unit/parser/files.rb
+++ b/spec/unit/parser/files.rb
@@ -5,6 +5,11 @@ require File.dirname(__FILE__) + '/../../spec_helper'
 require 'puppet/parser/files'
 
 describe Puppet::Parser::Files do
+
+    before do
+        @basepath = Puppet.features.posix? ? "/somepath" : "C:/somepath"
+    end
+
     it "should have a method for finding a template" do
         Puppet::Parser::Files.should respond_to(:find_template)
     end
@@ -16,7 +21,7 @@ describe Puppet::Parser::Files do
     describe "when searching for templates" do
         it "should return fully-qualified templates directly" do
             Puppet::Parser::Files.expects(:modulepath).never
-            Puppet::Parser::Files.find_template("/my/template").should == "/my/template"
+            Puppet::Parser::Files.find_template(@basepath + "/my/template").should == @basepath + "/my/template"
         end
 
         it "should return the template from the first found module" do
@@ -136,19 +141,19 @@ describe Puppet::Parser::Files do
 
         it "should not look for modules when paths are fully qualified" do
             Puppet.expects(:value).with(:modulepath).never
-            file = "/fully/qualified/file.pp"
+            file = @basepath + "/fully/qualified/file.pp"
             Dir.stubs(:glob).with(file).returns([file])
             Puppet::Parser::Files.find_manifests(file)
         end
 
         it "should directly return fully qualified files" do
-            file = "/fully/qualified/file.pp"
+            file = @basepath + "/fully/qualified/file.pp"
             Dir.stubs(:glob).with(file).returns([file])
             Puppet::Parser::Files.find_manifests(file).should == [file]
         end
 
         it "should match against provided fully qualified patterns" do
-            pattern = "/fully/qualified/pattern/*"
+            pattern = @basepath + "/fully/qualified/pattern/*"
             Dir.expects(:glob).with(pattern).returns(%w{my file list})
             Puppet::Parser::Files.find_manifests(pattern).should == %w{my file list}
         end
@@ -160,9 +165,9 @@ describe Puppet::Parser::Files do
         end
 
         it "should only return files, not directories" do
-            pattern = "/fully/qualified/pattern/*"
-            file = "/my/file"
-            dir = "/my/directory"
+            pattern = @basepath + "/fully/qualified/pattern/*"
+            file = @basepath + "/my/file"
+            dir = @basepath + "/my/directory"
             Dir.expects(:glob).with(pattern).returns([file, dir])
             FileTest.expects(:directory?).with(file).returns(false)
             FileTest.expects(:directory?).with(dir).returns(true)
diff --git a/spec/unit/resource.rb b/spec/unit/resource.rb
index 0e34c3c..d8620ee 100755
--- a/spec/unit/resource.rb
+++ b/spec/unit/resource.rb
@@ -4,6 +4,11 @@ require File.dirname(__FILE__) + '/../spec_helper'
 require 'puppet/resource'
 
 describe Puppet::Resource do
+
+    before do
+        @basepath = Puppet.features.posix? ? "/somepath" : "C:/somepath"
+    end
+
     [:catalog, :file, :line].each do |attr|
         it "should have an #{attr} attribute" do
             resource = Puppet::Resource.new("file", "/my/file")
@@ -13,7 +18,7 @@ describe Puppet::Resource do
     end
 
     it "should have a :title attribute" do
-        Puppet::Resource.new(:file, "foo").title.should == "foo"
+        Puppet::Resource.new(:user, "foo").title.should == "foo"
     end
 
     it "should require the type and title" do
@@ -21,7 +26,7 @@ describe Puppet::Resource do
     end
 
     it "should canonize types to capitalized strings" do
-        Puppet::Resource.new(:file, "foo").type.should == "File"
+        Puppet::Resource.new(:user, "foo").type.should == "User"
     end
 
     it "should canonize qualified types so all strings are capitalized" do
@@ -33,7 +38,7 @@ describe Puppet::Resource do
     end
 
     it "should tag itself with its title if the title is a valid tag" do
-        Puppet::Resource.new("file", "bar").should be_tagged("bar")
+        Puppet::Resource.new("user", "bar").should be_tagged("bar")
     end
 
     it "should not tag itself with its title if the title is a not valid tag" do
@@ -82,10 +87,10 @@ describe Puppet::Resource do
     end
 
     it "should be able to extract its information from a Puppet::Type instance" do
-        ral = Puppet::Type.type(:file).new :path => "/foo"
+        ral = Puppet::Type.type(:file).new :path => @basepath+"/foo"
         ref = Puppet::Resource.new(ral)
         ref.type.should == "File"
-        ref.title.should == "/foo"
+        ref.title.should == @basepath+"/foo"
     end
 
 
@@ -479,10 +484,10 @@ describe Puppet::Resource do
 
     describe "when converting to a RAL resource" do
         it "should use the resource type's :new method to create the resource if the resource is of a builtin type" do
-            resource = Puppet::Resource.new("file", "/my/file")
+            resource = Puppet::Resource.new("file", @basepath+"/my/file")
             result = resource.to_ral
             result.should be_instance_of(Puppet::Type.type(:file))
-            result[:path].should == "/my/file"
+            result[:path].should == @basepath+"/my/file"
         end
 
         it "should convert to a component instance if the resource type is not of a builtin type" do
@@ -691,7 +696,7 @@ describe Puppet::Resource do
         before do
             @data = {
                 'type' => "file",
-                'title' => "yay",
+                'title' => @basepath+"/yay",
             }
         end
 
@@ -700,7 +705,7 @@ describe Puppet::Resource do
         end
 
         it "should set its title to the provided title" do
-            Puppet::Resource.from_pson(@data).title.should == "yay"
+            Puppet::Resource.from_pson(@data).title.should == @basepath+"/yay"
         end
 
         it "should tag the resource with any provided tags" do
diff --git a/spec/unit/resource/catalog.rb b/spec/unit/resource/catalog.rb
index 26f69ae..bd241fd 100755
--- a/spec/unit/resource/catalog.rb
+++ b/spec/unit/resource/catalog.rb
@@ -3,6 +3,11 @@
 require File.dirname(__FILE__) + '/../../spec_helper'
 
 describe Puppet::Resource::Catalog, "when compiling" do
+
+    before do
+        @basepath = Puppet.features.posix? ? "/somepath" : "C:/somepath"
+    end
+
     it "should be an Expirer" do
         Puppet::Resource::Catalog.ancestors.should be_include(Puppet::Util::Cacher::Expirer)
     end
@@ -254,11 +259,11 @@ describe Puppet::Resource::Catalog, "when compiling" do
             @original.add_class *%w{four five six}
 
             @top            = Puppet::Resource.new :class, 'top'
-            @topobject      = Puppet::Resource.new :file, '/topobject'
+            @topobject      = Puppet::Resource.new :file, @basepath+'/topobject'
             @middle         = Puppet::Resource.new :class, 'middle'
-            @middleobject   = Puppet::Resource.new :file, '/middleobject'
+            @middleobject   = Puppet::Resource.new :file, @basepath+'/middleobject'
             @bottom         = Puppet::Resource.new :class, 'bottom'
-            @bottomobject   = Puppet::Resource.new :file, '/bottomobject'
+            @bottomobject   = Puppet::Resource.new :file, @basepath+'/bottomobject'
 
             @resources = [@top, @topobject, @middle, @middleobject, @bottom, @bottomobject]
 
@@ -501,11 +506,11 @@ describe Puppet::Resource::Catalog, "when compiling" do
         end
 
         it "should create aliases for resources isomorphic resources whose names do not match their titles" do
-            resource = Puppet::Type::File.new(:title => "testing", :path => "/something")
+            resource = Puppet::Type::File.new(:title => "testing", :path => @basepath+"/something")
 
             @catalog.add_resource(resource)
 
-            @catalog.resource(:file, "/something").should equal(resource)
+            @catalog.resource(:file, @basepath+"/something").should equal(resource)
         end
 
         it "should not create aliases for resources non-isomorphic resources whose names do not match their titles" do
@@ -559,15 +564,15 @@ describe Puppet::Resource::Catalog, "when compiling" do
         end
 
         it "should add an alias for the namevar when the title and name differ on isomorphic resource types" do
-            resource = Puppet::Type.type(:file).new :path => "/something", :title => "other", :content => "blah"
+            resource = Puppet::Type.type(:file).new :path => @basepath+"/something", :title => "other", :content => "blah"
             resource.expects(:isomorphic?).returns(true)
             @catalog.add_resource(resource)
             @catalog.resource(:file, "other").should equal(resource)
-            @catalog.resource(:file, "/something").ref.should == resource.ref
+            @catalog.resource(:file, @basepath+"/something").ref.should == resource.ref
         end
 
         it "should not add an alias for the namevar when the title and name differ on non-isomorphic resource types" do
-            resource = Puppet::Type.type(:file).new :path => "/something", :title => "other", :content => "blah"
+            resource = Puppet::Type.type(:file).new :path => @basepath+"/something", :title => "other", :content => "blah"
             resource.expects(:isomorphic?).returns(false)
             @catalog.add_resource(resource)
             @catalog.resource(:file, resource.title).should equal(resource)
@@ -696,15 +701,15 @@ describe Puppet::Resource::Catalog, "when compiling" do
             @compone = Puppet::Type::Component.new :name => "one"
             @comptwo = Puppet::Type::Component.new :name => "two", :require => "Class[one]"
             @file = Puppet::Type.type(:file)
-            @one = @file.new :path => "/one"
-            @two = @file.new :path => "/two"
-            @sub = @file.new :path => "/two/subdir"
+            @one = @file.new :path => @basepath+"/one"
+            @two = @file.new :path => @basepath+"/two"
+            @sub = @file.new :path => @basepath+"/two/subdir"
             @catalog.add_edge @compone, @one
             @catalog.add_edge @comptwo, @two
 
-            @three = @file.new :path => "/three"
-            @four = @file.new :path => "/four", :require => "File[/three]"
-            @five = @file.new :path => "/five"
+            @three = @file.new :path => @basepath+"/three"
+            @four = @file.new :path => @basepath+"/four", :require => "File[#{@basepath}/three]"
+            @five = @file.new :path => @basepath+"/five"
             @catalog.add_resource @compone, @comptwo, @one, @two, @three, @four, @five, @sub
 
             @relationships = @catalog.relationship_graph
diff --git a/spec/unit/resource/type_collection.rb b/spec/unit/resource/type_collection.rb
index 638a028..c0711bb 100644
--- a/spec/unit/resource/type_collection.rb
+++ b/spec/unit/resource/type_collection.rb
@@ -378,6 +378,7 @@ describe Puppet::Resource::TypeCollection do
         end
 
         it "should set the parser's file to the 'manifest' setting and parse if no code is available and the manifest is available" do
+            File.stubs(:expand_path).with("/my/file").returns "/my/file"
             File.expects(:exist?).with("/my/file").returns true
             Puppet.settings[:manifest] = "/my/file"
             @parser.expects(:file=).with "/my/file"
@@ -386,6 +387,7 @@ describe Puppet::Resource::TypeCollection do
         end
 
         it "should not attempt to load a manifest if none is present" do
+            File.stubs(:expand_path).with("/my/file").returns "/my/file"
             File.expects(:exist?).with("/my/file").returns false
             Puppet.settings[:manifest] = "/my/file"
             @parser.expects(:file=).never
diff --git a/spec/unit/transaction.rb b/spec/unit/transaction.rb
index a55d6e5..b315eb1 100755
--- a/spec/unit/transaction.rb
+++ b/spec/unit/transaction.rb
@@ -13,6 +13,7 @@ end
 
 describe Puppet::Transaction do
     before do
+        @basepath = Puppet.features.posix? ? "/what/ever" : "C:/tmp"
         @transaction = Puppet::Transaction.new(Puppet::Resource::Catalog.new)
     end
 
@@ -121,7 +122,7 @@ describe Puppet::Transaction do
             @transaction.stubs(:eval_children_and_apply_resource)
             @transaction.stubs(:skip?).returns false
 
-            @resource = Puppet::Type.type(:file).new :path => "/my/file"
+            @resource = Puppet::Type.type(:file).new :path => @basepath
         end
 
         it "should check whether the resource should be skipped" do
@@ -156,7 +157,7 @@ describe Puppet::Transaction do
 
     describe "when applying a resource" do
         before do
-            @resource = Puppet::Type.type(:file).new :path => "/my/file"
+            @resource = Puppet::Type.type(:file).new :path => @basepath
             @status = Puppet::Resource::Status.new(@resource)
 
             @transaction = Puppet::Transaction.new(Puppet::Resource::Catalog.new)
@@ -296,7 +297,7 @@ describe Puppet::Transaction do
         @transaction = Puppet::Transaction.new(@catalog)
         names = []
         2.times do |i|
-            name = "/my/file#{i}"
+            name = File.join(@basepath, "file#{i}")
             resource = Puppet::Type.type(:file).new :path => name
             names << resource.to_s
             @catalog.add_resource resource
diff --git a/spec/unit/type/tidy.rb b/spec/unit/type/tidy.rb
index 81c46cf..7e51189 100755
--- a/spec/unit/type/tidy.rb
+++ b/spec/unit/type/tidy.rb
@@ -7,6 +7,7 @@ tidy = Puppet::Type.type(:tidy)
 
 describe tidy do
     before do
+        @basepath = Puppet.features.posix? ? "/what/ever" : "C:/tmp"
         Puppet.settings.stubs(:use)
 
         # for an unknown reason some of these specs fails when run individually
@@ -97,7 +98,7 @@ describe tidy do
 
         convertors.each do |unit, multiple|
             it "should consider a %s to be %s seconds" % [unit, multiple] do
-                tidy = Puppet::Type.type(:tidy).new :path => "/what/ever", :age => "5%s" % unit.to_s[0..0]
+                tidy = Puppet::Type.type(:tidy).new :path => @basepath, :age => "5%s" % unit.to_s[0..0]
 
                 tidy[:age].should == 5 * multiple
             end
@@ -114,7 +115,7 @@ describe tidy do
 
         convertors.each do |unit, multiple|
             it "should consider a %s to be 1024^%s bytes" % [unit, multiple] do
-                tidy = Puppet::Type.type(:tidy).new :path => "/what/ever", :size => "5%s" % unit
+                tidy = Puppet::Type.type(:tidy).new :path => @basepath, :size => "5%s" % unit
 
                 total = 5
                 multiple.times { total *= 1024 }
@@ -125,9 +126,9 @@ describe tidy do
 
     describe "when tidying" do
         before do
-            @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
+            @tidy = Puppet::Type.type(:tidy).new :path => @basepath
             @stat = stub 'stat', :ftype => "directory"
-            File.stubs(:lstat).with("/what/ever").returns @stat
+            File.stubs(:lstat).with(@basepath).returns @stat
         end
 
         describe "and generating files" do
@@ -135,29 +136,29 @@ describe tidy do
                 @tidy[:backup] = "whatever"
                 Puppet::Type.type(:file).expects(:new).with { |args| args[:backup] == "whatever" }
 
-                @tidy.mkfile("/what/ever")
+                @tidy.mkfile(@basepath)
             end
 
             it "should set the file's path to the tidy's path" do
-                Puppet::Type.type(:file).expects(:new).with { |args| args[:path] == "/what/ever" }
+                Puppet::Type.type(:file).expects(:new).with { |args| args[:path] == @basepath }
 
-                @tidy.mkfile("/what/ever")
+                @tidy.mkfile(@basepath)
             end
 
             it "should configure the file for deletion" do
                 Puppet::Type.type(:file).expects(:new).with { |args| args[:ensure] == :absent }
 
-                @tidy.mkfile("/what/ever")
+                @tidy.mkfile(@basepath)
             end
 
             it "should force deletion on the file" do
                 Puppet::Type.type(:file).expects(:new).with { |args| args[:force] == true }
 
-                @tidy.mkfile("/what/ever")
+                @tidy.mkfile(@basepath)
             end
 
             it "should do nothing if the targeted file does not exist" do
-                File.expects(:lstat).with("/what/ever").raises Errno::ENOENT
+                File.expects(:lstat).with(@basepath).raises Errno::ENOENT
 
                 @tidy.generate.should == []
             end
@@ -165,15 +166,15 @@ describe tidy do
 
         describe "and recursion is not used" do
             it "should generate a file resource if the file should be tidied" do
-                @tidy.expects(:tidy?).with("/what/ever").returns true
-                file = Puppet::Type.type(:file).new(:path => "/eh")
-                @tidy.expects(:mkfile).with("/what/ever").returns file
+                @tidy.expects(:tidy?).with(@basepath).returns true
+                file = Puppet::Type.type(:file).new(:path => @basepath+"/eh")
+                @tidy.expects(:mkfile).with(@basepath).returns file
 
                 @tidy.generate.should == [file]
             end
 
             it "should do nothing if the file should not be tidied" do
-                @tidy.expects(:tidy?).with("/what/ever").returns false
+                @tidy.expects(:tidy?).with(@basepath).returns false
                 @tidy.expects(:mkfile).never
 
                 @tidy.generate.should == []
@@ -184,12 +185,12 @@ describe tidy do
             before do
                 @tidy[:recurse] = true
                 Puppet::FileServing::Fileset.any_instance.stubs(:stat).returns mock("stat")
-                @fileset = Puppet::FileServing::Fileset.new("/what/ever")
+                @fileset = Puppet::FileServing::Fileset.new(@basepath)
                 Puppet::FileServing::Fileset.stubs(:new).returns @fileset
             end
 
             it "should use a Fileset for infinite recursion" do
-                Puppet::FileServing::Fileset.expects(:new).with("/what/ever", :recurse => true).returns @fileset
+                Puppet::FileServing::Fileset.expects(:new).with(@basepath, :recurse => true).returns @fileset
                 @fileset.expects(:files).returns %w{. one two}
                 @tidy.stubs(:tidy?).returns false
 
@@ -198,7 +199,7 @@ describe tidy do
 
             it "should use a Fileset for limited recursion" do
                 @tidy[:recurse] = 42
-                Puppet::FileServing::Fileset.expects(:new).with("/what/ever", :recurse => true, :recurselimit => 42).returns @fileset
+                Puppet::FileServing::Fileset.expects(:new).with(@basepath, :recurse => true, :recurselimit => 42).returns @fileset
                 @fileset.expects(:files).returns %w{. one two}
                 @tidy.stubs(:tidy?).returns false
 
@@ -208,13 +209,13 @@ describe tidy do
             it "should generate a file resource for every file that should be tidied but not for files that should not be tidied" do
                 @fileset.expects(:files).returns %w{. one two}
 
-                @tidy.expects(:tidy?).with("/what/ever").returns true
-                @tidy.expects(:tidy?).with("/what/ever/one").returns true
-                @tidy.expects(:tidy?).with("/what/ever/two").returns false
+                @tidy.expects(:tidy?).with(@basepath).returns true
+                @tidy.expects(:tidy?).with(@basepath+"/one").returns true
+                @tidy.expects(:tidy?).with(@basepath+"/two").returns false
 
-                file = Puppet::Type.type(:file).new(:path => "/eh")
-                @tidy.expects(:mkfile).with("/what/ever").returns file
-                @tidy.expects(:mkfile).with("/what/ever/one").returns file
+                file = Puppet::Type.type(:file).new(:path => @basepath+"/eh")
+                @tidy.expects(:mkfile).with(@basepath).returns file
+                @tidy.expects(:mkfile).with(@basepath+"/one").returns file
 
                 @tidy.generate
             end
@@ -222,7 +223,7 @@ describe tidy do
 
         describe "and determining whether a file matches provided glob patterns" do
             before do
-                @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever", :recurse => 1
+                @tidy = Puppet::Type.type(:tidy).new :path => @basepath, :recurse => 1
                 @tidy[:matches] = %w{*foo* *bar*}
 
                 @stat = mock 'stat'
@@ -248,7 +249,7 @@ describe tidy do
 
         describe "and determining whether a file is too old" do
             before do
-                @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
+                @tidy = Puppet::Type.type(:tidy).new :path => @basepath
                 @stat = stub 'stat'
 
                 @tidy[:age] = "1s"
@@ -260,25 +261,25 @@ describe tidy do
                 @tidy[:type] = :ctime
                 @stat.expects(:ctime).returns(Time.now)
 
-                @ager.tidy?("/what/ever", @stat)
+                @ager.tidy?(@basepath, @stat)
             end
 
             it "should return false if the file is more recent than the specified age" do
                 @stat.expects(:mtime).returns(Time.now)
 
-                @ager.should_not be_tidy("/what/ever", @stat)
+                @ager.should_not be_tidy(@basepath, @stat)
             end
 
             it "should return true if the file is older than the specified age" do
                 @stat.expects(:mtime).returns(Time.now - 10)
 
-                @ager.must be_tidy("/what/ever", @stat)
+                @ager.must be_tidy(@basepath, @stat)
             end
         end
 
         describe "and determining whether a file is too large" do
             before do
-                @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
+                @tidy = Puppet::Type.type(:tidy).new :path => @basepath
                 @stat = stub 'stat', :ftype => "file"
 
                 @tidy[:size] = "1kb"
@@ -288,54 +289,54 @@ describe tidy do
             it "should return false if the file is smaller than the specified size" do
                 @stat.expects(:size).returns(4) # smaller than a kilobyte
 
-                @sizer.should_not be_tidy("/what/ever", @stat)
+                @sizer.should_not be_tidy(@basepath, @stat)
             end
 
             it "should return true if the file is larger than the specified size" do
                 @stat.expects(:size).returns(1500) # larger than a kilobyte
 
-                @sizer.must be_tidy("/what/ever", @stat)
+                @sizer.must be_tidy(@basepath, @stat)
             end
 
             it "should return true if the file is equal to the specified size" do
                 @stat.expects(:size).returns(1024)
 
-                @sizer.must be_tidy("/what/ever", @stat)
+                @sizer.must be_tidy(@basepath, @stat)
             end
         end
 
         describe "and determining whether a file should be tidied" do
             before do
-                @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
+                @tidy = Puppet::Type.type(:tidy).new :path => @basepath
                 @stat = stub 'stat', :ftype => "file"
-                File.stubs(:lstat).with("/what/ever").returns @stat
+                File.stubs(:lstat).with(@basepath).returns @stat
             end
 
             it "should not try to recurse if the file does not exist" do
                 @tidy[:recurse] = true
 
-                File.stubs(:lstat).with("/what/ever").returns nil
+                File.stubs(:lstat).with(@basepath).returns nil
 
                 @tidy.generate.should == []
             end
 
             it "should not be tidied if the file does not exist" do
-                File.expects(:lstat).with("/what/ever").raises Errno::ENOENT
+                File.expects(:lstat).with(@basepath).raises Errno::ENOENT
 
-                @tidy.should_not be_tidy("/what/ever")
+                @tidy.should_not be_tidy(@basepath)
             end
 
             it "should not be tidied if the user has no access to the file" do
-                File.expects(:lstat).with("/what/ever").raises Errno::EACCES
+                File.expects(:lstat).with(@basepath).raises Errno::EACCES
 
-                @tidy.should_not be_tidy("/what/ever")
+                @tidy.should_not be_tidy(@basepath)
             end
 
             it "should not be tidied if it is a directory and rmdirs is set to false" do
                 stat = mock 'stat', :ftype => "directory"
-                File.expects(:lstat).with("/what/ever").returns stat
+                File.expects(:lstat).with(@basepath).returns stat
 
-                @tidy.should_not be_tidy("/what/ever")
+                @tidy.should_not be_tidy(@basepath)
             end
 
             it "should return false if it does not match any provided globs" do
@@ -343,24 +344,24 @@ describe tidy do
                 @tidy[:matches] = "globs"
 
                 matches = @tidy.parameter(:matches)
-                matches.expects(:tidy?).with("/what/ever", @stat).returns false
-                @tidy.should_not be_tidy("/what/ever")
+                matches.expects(:tidy?).with(@basepath, @stat).returns false
+                @tidy.should_not be_tidy(@basepath)
             end
 
             it "should return false if it does not match aging requirements" do
                 @tidy[:age] = "1d"
 
                 ager = @tidy.parameter(:age)
-                ager.expects(:tidy?).with("/what/ever", @stat).returns false
-                @tidy.should_not be_tidy("/what/ever")
+                ager.expects(:tidy?).with(@basepath, @stat).returns false
+                @tidy.should_not be_tidy(@basepath)
             end
 
             it "should return false if it does not match size requirements" do
                 @tidy[:size] = "1b"
 
                 sizer = @tidy.parameter(:size)
-                sizer.expects(:tidy?).with("/what/ever", @stat).returns false
-                @tidy.should_not be_tidy("/what/ever")
+                sizer.expects(:tidy?).with(@basepath, @stat).returns false
+                @tidy.should_not be_tidy(@basepath)
             end
 
             it "should tidy a file if age and size are set but only size matches" do
@@ -369,7 +370,7 @@ describe tidy do
 
                 @tidy.parameter(:size).stubs(:tidy?).returns true
                 @tidy.parameter(:age).stubs(:tidy?).returns false
-                @tidy.should be_tidy("/what/ever")
+                @tidy.should be_tidy(@basepath)
             end
 
             it "should tidy a file if age and size are set but only age matches" do
@@ -378,23 +379,23 @@ describe tidy do
 
                 @tidy.parameter(:size).stubs(:tidy?).returns false
                 @tidy.parameter(:age).stubs(:tidy?).returns true
-                @tidy.should be_tidy("/what/ever")
+                @tidy.should be_tidy(@basepath)
             end
 
             it "should tidy all files if neither age nor size is set" do
-                @tidy.must be_tidy("/what/ever")
+                @tidy.must be_tidy(@basepath)
             end
 
             it "should sort the results inversely by path length, so files are added to the catalog before their directories" do
                 @tidy[:recurse] = true
                 @tidy[:rmdirs] = true
-                fileset = Puppet::FileServing::Fileset.new("/what/ever")
+                fileset = Puppet::FileServing::Fileset.new(@basepath)
                 Puppet::FileServing::Fileset.expects(:new).returns fileset
                 fileset.expects(:files).returns %w{. one one/two}
 
                 @tidy.stubs(:tidy?).returns true
 
-                @tidy.generate.collect { |r| r[:path] }.should == %w{/what/ever/one/two /what/ever/one /what/ever}
+                @tidy.generate.collect { |r| r[:path] }.should == [@basepath+"/one/two", @basepath+"/one", @basepath]
             end
         end
 
@@ -402,16 +403,16 @@ describe tidy do
             @tidy[:recurse] = true
             @tidy[:rmdirs] = true
             fileset = mock 'fileset'
-            Puppet::FileServing::Fileset.expects(:new).with("/what/ever", :recurse => true).returns fileset
+            Puppet::FileServing::Fileset.expects(:new).with(@basepath, :recurse => true).returns fileset
             fileset.expects(:files).returns %w{. one two one/subone two/subtwo one/subone/ssone}
             @tidy.stubs(:tidy?).returns true
 
             result = @tidy.generate.inject({}) { |hash, res| hash[res[:path]] = res; hash }
             {
-                "/what/ever" => %w{/what/ever/one /what/ever/two},
-                "/what/ever/one" => ["/what/ever/one/subone"],
-                "/what/ever/two" => ["/what/ever/two/subtwo"],
-                "/what/ever/one/subone" => ["/what/ever/one/subone/ssone"]
+                @basepath => [ @basepath+"/one", @basepath+"/two" ],
+                @basepath+"/one" => [@basepath+"/one/subone"],
+                @basepath+"/two" => [@basepath+"/two/subtwo"],
+                @basepath+"/one/subone" => [@basepath+"/one/subone/ssone"]
             }.each do |parent, children|
                 children.each do |child|
                     ref = Puppet::Resource.new(:file, child)
diff --git a/spec/unit/util/settings.rb b/spec/unit/util/settings.rb
index bf0776f..e36fd3f 100755
--- a/spec/unit/util/settings.rb
+++ b/spec/unit/util/settings.rb
@@ -359,9 +359,10 @@ describe Puppet::Util::Settings do
         end
 
         it "should use its current ':config' value for the file to parse" do
-            @settings[:config] = "/my/file"
+            myfile = Puppet.features.posix? ? "/my/file" : "C:/myfile" # do not stub expand_path here, as this leads to a stack overflow, when mocha tries to use it
+            @settings[:config] = myfile
 
-            File.expects(:read).with("/my/file").returns("[main]")
+            File.expects(:read).with(myfile).returns "[main]"
 
             @settings.parse
         end
@@ -522,6 +523,7 @@ describe Puppet::Util::Settings do
                 filetimeout = -1
                 "
                 File.expects(:read).with(somefile).returns(text)
+                File.expects(:expand_path).with(somefile).returns somefile
                 @settings[:config] = somefile
             end
 
@@ -670,33 +672,39 @@ describe Puppet::Util::Settings do
         before do
             @settings = Puppet::Util::Settings.new
             @settings.stubs(:service_user_available?).returns true
+            @prefix = Puppet.features.posix? ? "" : "C:"
         end
 
         it "should add all file resources to the catalog if no sections have been specified" do
-            @settings.setdefaults :main, :maindir => ["/maindir", "a"], :seconddir => ["/seconddir", "a"]
-            @settings.setdefaults :other, :otherdir => ["/otherdir", "a"]
+            @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"], :seconddir => [@prefix+"/seconddir", "a"]
+            @settings.setdefaults :other, :otherdir => [@prefix+"/otherdir", "a"]
+
             catalog = @settings.to_catalog
-            %w{/maindir /seconddir /otherdir}.each do |path|
+            p "three dirs"
+            p catalog
+
+            [@prefix+"/maindir", @prefix+"/seconddir", @prefix+"/otherdir"].each do |path|
                 catalog.resource(:file, path).should be_instance_of(Puppet::Resource)
             end
         end
 
         it "should add only files in the specified sections if section names are provided" do
-            @settings.setdefaults :main, :maindir => ["/maindir", "a"]
-            @settings.setdefaults :other, :otherdir => ["/otherdir", "a"]
+            @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"]
+            @settings.setdefaults :other, :otherdir => [@prefix+"/otherdir", "a"]
             catalog = @settings.to_catalog(:main)
-            catalog.resource(:file, "/otherdir").should be_nil
-            catalog.resource(:file, "/maindir").should be_instance_of(Puppet::Resource)
+            p catalog
+            catalog.resource(:file, @prefix+"/otherdir").should be_nil
+            catalog.resource(:file, @prefix+"/maindir").should be_instance_of(Puppet::Resource)
         end
 
         it "should not try to add the same file twice" do
-            @settings.setdefaults :main, :maindir => ["/maindir", "a"]
-            @settings.setdefaults :other, :otherdir => ["/maindir", "a"]
+            @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"]
+            @settings.setdefaults :other, :otherdir => [@prefix+"/maindir", "a"]
             lambda { @settings.to_catalog }.should_not raise_error
         end
 
         it "should ignore files whose :to_resource method returns nil" do
-            @settings.setdefaults :main, :maindir => ["/maindir", "a"]
+            @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"]
             @settings.setting(:maindir).expects(:to_resource).returns nil
 
             Puppet::Resource::Catalog.any_instance.expects(:add_resource).never
diff --git a/spec/unit/util/settings/file_setting.rb b/spec/unit/util/settings/file_setting.rb
index dfe4d25..a6b7f02 100755
--- a/spec/unit/util/settings/file_setting.rb
+++ b/spec/unit/util/settings/file_setting.rb
@@ -8,6 +8,10 @@ require 'puppet/util/settings/file_setting'
 describe Puppet::Util::Settings::FileSetting do
     FileSetting = Puppet::Util::Settings::FileSetting
 
+    before do
+        @basepath = Puppet.features.posix? ? "/somepath" : "C:/somepath"
+    end
+
     describe "when determining whether the service user should be used" do
         before do
             @settings = mock 'settings'
@@ -120,7 +124,7 @@ describe Puppet::Util::Settings::FileSetting do
         before do
             @settings = mock 'settings'
             @file = Puppet::Util::Settings::FileSetting.new(:settings => @settings, :desc => "eh", :name => :mydir, :section => "mysect")
-            @settings.stubs(:value).with(:mydir).returns "/my/file"
+            @settings.stubs(:value).with(:mydir).returns @basepath
         end
 
         it "should skip files that cannot determine their types" do
@@ -131,20 +135,24 @@ describe Puppet::Util::Settings::FileSetting do
         it "should skip non-existent files if 'create_files' is not enabled" do
             @file.expects(:create_files?).returns false
             @file.expects(:type).returns :file
-            File.expects(:exist?).with("/my/file").returns false
+            File.expects(:exist?).with(@basepath).returns false
             @file.to_resource.should be_nil
         end
 
         it "should manage existent files even if 'create_files' is not enabled" do
             @file.expects(:create_files?).returns false
             @file.expects(:type).returns :file
-            File.expects(:exist?).with("/my/file").returns true
+            File.expects(:exist?).with(@basepath).returns true
             @file.to_resource.should be_instance_of(Puppet::Resource)
         end
 
-        it "should skip files in /dev" do
-            @settings.stubs(:value).with(:mydir).returns "/dev/file"
-            @file.to_resource.should be_nil
+        describe "on POSIX systems" do
+            confine "no /dev on Win32" => Puppet.features.posix?
+
+            it "should skip files in /dev" do
+                @settings.stubs(:value).with(:mydir).returns "/dev/file"
+                @file.to_resource.should be_nil
+            end
         end
 
         it "should skip files whose paths are not strings" do
@@ -155,7 +163,7 @@ describe Puppet::Util::Settings::FileSetting do
         it "should return a file resource with the path set appropriately" do
             resource = @file.to_resource
             resource.type.should == "File"
-            resource.title.should == "/my/file"
+            resource.title.should == @basepath
         end
 
         it "should fully qualified returned files if necessary (#795)" do

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list