X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fstdlib%2Fspec%2Ffunctions%2Fvalidate_absolute_path_spec.rb;h=ba73a219220ec498be29a088d749375fbe4c9f96;hb=30caaa85aed7015ca0d77216bff175eebd917eb7;hp=36c836bdb7b2a7f34c2203e4854d76dcbee95d4c;hpb=ad88f67c13ae0f1a08936dad643f1e3509ab5f40;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/stdlib/spec/functions/validate_absolute_path_spec.rb b/3rdparty/modules/stdlib/spec/functions/validate_absolute_path_spec.rb old mode 100755 new mode 100644 index 36c836bdb..ba73a2192 --- a/3rdparty/modules/stdlib/spec/functions/validate_absolute_path_spec.rb +++ b/3rdparty/modules/stdlib/spec/functions/validate_absolute_path_spec.rb @@ -1,104 +1,51 @@ -#! /usr/bin/env ruby -S rspec require 'spec_helper' -describe Puppet::Parser::Functions.function(:validate_absolute_path) do - let(:scope) { PuppetlabsSpec::PuppetInternals.scope } - - # The subject of these examples is the method itself. - subject do - # This makes sure the function is loaded within each test - function_name = Puppet::Parser::Functions.function(:validate_absolute_path) - scope.method(function_name) +describe 'validate_absolute_path' do + after(:each) do + ENV.delete('STDLIB_LOG_DEPRECATIONS') end - describe "Valid Paths" do - def self.valid_paths - %w{ - C:/ - C:\\ - C:\\WINDOWS\\System32 - C:/windows/system32 - X:/foo/bar - X:\\foo\\bar - /var/tmp - /var/lib/puppet - /var/opt/../lib/puppet - } - end + # Checking for deprecation warning + it 'displays a single deprecation' do + ENV['STDLIB_LOG_DEPRECATIONS'] = 'true' + expect(scope).to receive(:warning).with(include('This method is deprecated')) + is_expected.to run.with_params('c:/') + end - context "Without Puppet::Util.absolute_path? (e.g. Puppet <= 2.6)" do - before :each do - # The intent here is to mock Puppet to behave like Puppet 2.6 does. - # Puppet 2.6 does not have the absolute_path? method. This is only a - # convenience test, stdlib should be run with the Puppet 2.6.x in the - # $LOAD_PATH in addition to 2.7.x and master. - Puppet::Util.expects(:respond_to?).with(:absolute_path?).returns(false) - end - valid_paths.each do |path| - it "validate_absolute_path(#{path.inspect}) should not fail" do - expect { subject.call [path] }.not_to raise_error - end - end - valid_paths do - it "validate_absolute_path(#{valid_paths.inspect}) should not fail" do - expect { subject.call [valid_paths] }.not_to raise_error - end - end - end + describe 'signature validation' 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}i) } + end - context "Puppet without mocking" do - valid_paths.each do |path| - it "validate_absolute_path(#{path.inspect}) should not fail" do - expect { subject.call [path] }.not_to raise_error - end - end - valid_paths do - it "validate_absolute_path(#{valid_paths.inspect}) should not fail" do - expect { subject.call [valid_paths] }.not_to raise_error - end - end + describe 'valid paths handling' do + ['C:/', 'C:\\', 'C:\\WINDOWS\\System32', 'C:/windows/system32', 'X:/foo/bar', 'X:\\foo\\bar', '\\\\host\\windows', '//host/windows', '/', '/var/tmp', '/var/opt/../lib/puppet'].each do |path| + it { is_expected.to run.with_params(path) } + it { is_expected.to run.with_params(['/tmp', path]) } end end - describe 'Invalid paths' do - context 'Garbage inputs' do + describe 'invalid path handling' do + context 'with garbage inputs' do [ nil, - [ nil ], - [ nil, nil ], + [nil], + [nil, nil], { 'foo' => 'bar' }, - { }, + {}, '', ].each do |path| - it "validate_absolute_path(#{path.inspect}) should fail" do - expect { subject.call [path] }.to raise_error Puppet::ParseError - end + it { is_expected.to run.with_params(path).and_raise_error(Puppet::ParseError, %r{is not an absolute path}) } + it { is_expected.to run.with_params([path]).and_raise_error(Puppet::ParseError, %r{is not an absolute path}) } + it { is_expected.to run.with_params(['/tmp', path]).and_raise_error(Puppet::ParseError, %r{is not an absolute path}) } end end - context 'Relative paths' do - def self.rel_paths - %w{ - relative1 - . - .. - ./foo - ../foo - etc/puppetlabs/puppet - opt/puppet/bin - } - end - rel_paths.each do |path| - it "validate_absolute_path(#{path.inspect}) should fail" do - expect { subject.call [path] }.to raise_error Puppet::ParseError - end - end - rel_paths do - it "validate_absolute_path(#{rel_paths.inspect}) should fail" do - expect { subject.call [rel_paths] }.to raise_error Puppet::ParseError - end + context 'with relative paths' do + ['relative1', '.', '..', './foo', '../foo', 'etc/puppetlabs/puppet', 'relative\\windows'].each do |path| + it { is_expected.to run.with_params(path).and_raise_error(Puppet::ParseError, %r{is not an absolute path}) } + it { is_expected.to run.with_params([path]).and_raise_error(Puppet::ParseError, %r{is not an absolute path}) } + it { is_expected.to run.with_params(['/tmp', path]).and_raise_error(Puppet::ParseError, %r{is not an absolute path}) } end end end end -