summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb87
1 files changed, 47 insertions, 40 deletions
diff --git a/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb b/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb
index 2b44f50..1e0b5ac 100644
--- a/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb
+++ b/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb
@@ -5,34 +5,67 @@ describe Puppet::Parser::Functions.function(:validate_absolute_path) do
Puppet::Parser::Functions.autoloader.loadall
end
- let(:scope) do
- scope = Puppet::Parser::Scope.new
- end
-
# The subject of these examplres is the method itself.
subject do
- scope.method :function_validate_absolute_path
+ Puppet::Parser::Scope.new.method :function_validate_absolute_path
end
- context 'Using Puppet::Parser::Scope.new' do
+ 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
- describe 'Garbage inputs' do
- paths = [
+ 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 Puppet::ParseError
+ end
+ end
+ 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 Puppet::ParseError
+ end
+ end
+ end
+ end
+
+ describe 'Invalid paths' do
+ context 'Garbage inputs' do
+ [
nil,
[ nil ],
{ 'foo' => 'bar' },
{ },
'',
- ]
-
- paths.each do |path|
+ ].each do |path|
it "validate_absolute_path(#{path.inspect}) should fail" do
expect { subject.call [path] }.to raise_error Puppet::ParseError
end
end
end
- describe 'relative paths' do
- paths = %w{
+
+ context 'Relative paths' do
+ %w{
relative1
.
..
@@ -40,37 +73,11 @@ describe Puppet::Parser::Functions.function(:validate_absolute_path) do
../foo
etc/puppetlabs/puppet
opt/puppet/bin
- }
-
- paths.each do |path|
+ }.each do |path|
it "validate_absolute_path(#{path.inspect}) should fail" do
expect { subject.call [path] }.to raise_error Puppet::ParseError
end
end
end
- describe 'absolute paths' do
- 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
- }
-
- paths = paths + [
- 'C:\\Program Files (x86)\\Puppet Labs\\Puppet Enterprise',
- 'C:/Program Files (x86)/Puppet Labs/Puppet Enterprise',
- ]
-
- paths.each do |path|
- it "validate_absolute_path(#{path.inspect}) should not fail" do
- expect { subject.call [path] }.not_to raise_error
- end
- end
- end
end
end