summaryrefslogtreecommitdiff
path: root/spec/unit/puppet/parser/functions/get_module_path_spec.rb
diff options
context:
space:
mode:
authorPatrick Carlisle <patrick@puppetlabs.com>2012-08-09 14:52:08 -0700
committerPatrick Carlisle <patrick@puppetlabs.com>2012-08-09 14:52:08 -0700
commitcdd45298337df80aad757e81eb7457317219c1b7 (patch)
tree4132ab281a3064b892c4a59ffc99a2a2645a1bbd /spec/unit/puppet/parser/functions/get_module_path_spec.rb
parentc101da0b83210fe4c1603f3d7a014f72c988f5ac (diff)
parent424b56da616041e365cb471dafc05a3d7ade4e45 (diff)
downloadpuppet-stdlib-cdd45298337df80aad757e81eb7457317219c1b7.tar.gz
puppet-stdlib-cdd45298337df80aad757e81eb7457317219c1b7.tar.bz2
Merge branch '2.3.x' into 2.4.x
* 2.3.x: Make sure functions are loaded for each test Use rvalue functions correctly (Maint) Don't mock with mocha (Maint) Fix up the get_module_path parser function (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (2.3.x) (Maint) Rename PuppetlabsSpec::Puppet{Seams,Internals} (Maint) use PuppetlabsSpec::PuppetSeams.parser_scope (Maint) Fix interpreter lines Update CHANGELOG, Modulefile for 2.3.3 fix regression in #11017 properly Fix spec tests using the new spec_helper Update CHANGELOG for 2.3.2 release Make file_line default to ensure => present Memoize file_line spec instance variables Fix spec tests using the new spec_helper Revert "Merge remote-tracking branch 'eshamow/tickets/bug/13595_restrict_initialize_everything_for_tests' into 2.2.x" (#13595) initialize_everything_for_tests couples modules Puppet ver
Diffstat (limited to 'spec/unit/puppet/parser/functions/get_module_path_spec.rb')
-rw-r--r--spec/unit/puppet/parser/functions/get_module_path_spec.rb54
1 files changed, 29 insertions, 25 deletions
diff --git a/spec/unit/puppet/parser/functions/get_module_path_spec.rb b/spec/unit/puppet/parser/functions/get_module_path_spec.rb
index d8340f4..e761706 100644
--- a/spec/unit/puppet/parser/functions/get_module_path_spec.rb
+++ b/spec/unit/puppet/parser/functions/get_module_path_spec.rb
@@ -1,42 +1,46 @@
-#!/usr/bin/env rspec
-require 'puppet'
-require 'fileutils'
+#! /usr/bin/env ruby -S rspec
require 'spec_helper'
+
describe Puppet::Parser::Functions.function(:get_module_path) do
- include PuppetSpec::Files
+ Internals = PuppetlabsSpec::PuppetInternals
+ class StubModule
+ attr_reader :path
+ def initialize(path)
+ @path = path
+ end
+ end
- def get_scope(environment = 'production')
- scope = Puppet::Parser::Scope.new
- scope.compiler = Puppet::Parser::Compiler.new(Puppet::Node.new("floppy", :environment => environment))
- scope
+ def scope(environment = "production")
+ Internals.scope(:compiler => Internals.compiler(:node => Internals.node(:environment => environment)))
end
+
it 'should only allow one argument' do
- expect { get_scope.function_get_module_path([]) }.should raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
- expect { get_scope.function_get_module_path(['1','2','3']) }.should raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
+ expect { scope.function_get_module_path([]) }.should raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
+ expect { scope.function_get_module_path(['1','2','3']) }.should raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
end
it 'should raise an exception when the module cannot be found' do
- expect { get_scope.function_get_module_path(['foo']) }.should raise_error(Puppet::ParseError, /Could not find module/)
+ expect { scope.function_get_module_path(['foo']) }.should raise_error(Puppet::ParseError, /Could not find module/)
end
describe 'when locating a module' do
- let(:modulepath) { tmpdir('modulepath') }
- let(:foo_path) { File.join(modulepath, 'foo') }
- before(:each) { FileUtils.mkdir(foo_path) }
+ let(:modulepath) { "/tmp/does_not_exist" }
+ let(:path_of_module_foo) { StubModule.new("/tmp/does_not_exist/foo") }
+
+ before(:each) { Puppet[:modulepath] = modulepath }
+
it 'should be able to find module paths from the modulepath setting' do
- Puppet[:modulepath] = modulepath
- get_scope.function_get_module_path(['foo']).should == foo_path
+ Puppet::Module.expects(:find).with('foo', 'production').returns(path_of_module_foo)
+ scope.function_get_module_path(['foo']).should == path_of_module_foo.path
end
it 'should be able to find module paths when the modulepath is a list' do
Puppet[:modulepath] = modulepath + ":/tmp"
- get_scope.function_get_module_path(['foo']).should == foo_path
+ Puppet::Module.expects(:find).with('foo', 'production').returns(path_of_module_foo)
+ scope.function_get_module_path(['foo']).should == path_of_module_foo.path
end
- it 'should be able to find module paths from the environment' do
- conf_file = tmpfile('conffile')
- File.open(conf_file, 'w') do |fh|
- fh.write("[dansenvironment]\nmodulepath = #{modulepath}")
- end
- Puppet[:config] = conf_file
- Puppet.parse_config
- get_scope('dansenvironment').function_get_module_path(['foo']).should ==foo_path
+ it 'should respect the environment' do
+ pending("Disabled on Puppet 2.6.x") if Puppet.version =~ /^2\.6\b/
+ Puppet.settings[:environment] = 'danstestenv'
+ Puppet::Module.expects(:find).with('foo', 'danstestenv').returns(path_of_module_foo)
+ scope('danstestenv').function_get_module_path(['foo']).should == path_of_module_foo.path
end
end
end