Drop roles::debian_mirror::listen_addr for mirror-accumu
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / spec / functions / get_module_path_spec.rb
old mode 100755 (executable)
new mode 100644 (file)
index 38ce645..dd31c67
@@ -1,8 +1,13 @@
-#! /usr/bin/env ruby -S rspec
 require 'spec_helper'
 
-describe Puppet::Parser::Functions.function(:get_module_path) do
-  Internals = PuppetlabsSpec::PuppetInternals
+describe 'get_module_path' do
+  it { is_expected.not_to eq(nil) }
+  it { is_expected.to run.with_params.and_raise_error(Puppet::ParseError, %r{Wrong number of arguments, expects one}) }
+  it { is_expected.to run.with_params('one', 'two').and_raise_error(Puppet::ParseError, %r{Wrong number of arguments, expects one}) }
+  it { is_expected.to run.with_params('one', 'two', 'three').and_raise_error(Puppet::ParseError, %r{Wrong number of arguments, expects one}) }
+  it { is_expected.to run.with_params('one').and_raise_error(Puppet::ParseError, %r{Could not find module}) }
+
+  # class Stubmodule
   class StubModule
     attr_reader :path
     def initialize(path)
@@ -10,37 +15,43 @@ describe Puppet::Parser::Functions.function(:get_module_path) do
     end
   end
 
-  def scope(environment = "production")
-    Internals.scope(:compiler => Internals.compiler(:node => Internals.node(:environment => environment)))
-  end
-
-  it 'should only allow one argument' do
-    expect { scope.function_get_module_path([]) }.to raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
-    expect { scope.function_get_module_path(['1','2','3']) }.to raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
-  end
-  it 'should raise an exception when the module cannot be found' do
-    expect { scope.function_get_module_path(['foo']) }.to raise_error(Puppet::ParseError, /Could not find module/)
-  end
   describe 'when locating a module' do
-    let(:modulepath) { "/tmp/does_not_exist" }
-    let(:path_of_module_foo) { StubModule.new("/tmp/does_not_exist/foo") }
-
-    before(:each) { Puppet[:modulepath] = modulepath }
+    let(:modulepath) { '/tmp/does_not_exist' }
+    let(:path_of_module_foo) { StubModule.new('/tmp/does_not_exist/foo') }
 
-    it 'should be able to find module paths from the modulepath setting' do
-      Puppet::Module.expects(:find).with('foo', 'production').returns(path_of_module_foo)
-      expect(scope.function_get_module_path(['foo'])).to eq(path_of_module_foo.path)
+    before(:each) do
+      Puppet[:modulepath] = modulepath
     end
-    it 'should be able to find module paths when the modulepath is a list' do
-      Puppet[:modulepath] = modulepath + ":/tmp"
-      Puppet::Module.expects(:find).with('foo', 'production').returns(path_of_module_foo)
-      expect(scope.function_get_module_path(['foo'])).to eq(path_of_module_foo.path)
+
+    context 'when in the default environment' do
+      before(:each) do
+        allow(Puppet::Module).to receive(:find).with('foo', 'rp_env').and_return(path_of_module_foo)
+      end
+      it 'runs against foo' do
+        is_expected.to run.with_params('foo').and_return(path_of_module_foo.path)
+      end
+
+      it 'when the modulepath is a list' do
+        Puppet[:modulepath] = modulepath + 'tmp/something_else'
+
+        is_expected.to run.with_params('foo').and_return(path_of_module_foo.path)
+      end
     end
-    it 'should respect the environment' do
-      skip("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)
-      expect(scope('danstestenv').function_get_module_path(['foo'])).to eq(path_of_module_foo.path)
+
+    context 'when in a non-default default environment' do
+      let(:environment) { 'test' }
+
+      before(:each) do
+        allow(Puppet::Module).to receive(:find).with('foo', 'test').and_return(path_of_module_foo)
+      end
+      it 'runs against foo' do
+        is_expected.to run.with_params('foo').and_return(path_of_module_foo.path)
+      end
+
+      it 'when the modulepath is a list' do
+        Puppet[:modulepath] = modulepath + 'tmp/something_else'
+        is_expected.to run.with_params('foo').and_return(path_of_module_foo.path)
+      end
     end
   end
 end