summaryrefslogtreecommitdiffstats
path: root/spec/unit/parser/functions/shellquote_spec.rb
diff options
context:
space:
mode:
authorMarkus Roberts <Markus@reality.com>2010-06-28 17:10:20 -0700
committerMarkus Roberts <Markus@reality.com>2010-06-28 17:10:20 -0700
commitfdc8c3509b5ac5bc170c54d72b2c2bafb58409f2 (patch)
tree6ed2204d72c6924e867a1320d3b7e6728035f1a1 /spec/unit/parser/functions/shellquote_spec.rb
parent9a94ee274c39c261cd49e688a7bd7ea0eb73af50 (diff)
downloadpuppet-fdc8c3509b5ac5bc170c54d72b2c2bafb58409f2.tar.gz
puppet-fdc8c3509b5ac5bc170c54d72b2c2bafb58409f2.tar.xz
puppet-fdc8c3509b5ac5bc170c54d72b2c2bafb58409f2.zip
[#3994-part 3] rename spec tests from *_spec_spec to *_spec.rb
Part 2 re-did the change on the spec files, which it shouldn't have.
Diffstat (limited to 'spec/unit/parser/functions/shellquote_spec.rb')
-rwxr-xr-xspec/unit/parser/functions/shellquote_spec.rb92
1 files changed, 92 insertions, 0 deletions
diff --git a/spec/unit/parser/functions/shellquote_spec.rb b/spec/unit/parser/functions/shellquote_spec.rb
new file mode 100755
index 000000000..283a4de1e
--- /dev/null
+++ b/spec/unit/parser/functions/shellquote_spec.rb
@@ -0,0 +1,92 @@
+#! /usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "the shellquote function" do
+
+ before :each do
+ @scope = Puppet::Parser::Scope.new()
+ end
+
+ it "should exist" do
+ Puppet::Parser::Functions.function("shellquote").should == "function_shellquote"
+ end
+
+
+ it "should handle no arguments" do
+ result = @scope.function_shellquote([])
+ result.should(eql(""))
+ end
+
+ it "should handle several simple arguments" do
+ result = @scope.function_shellquote(
+ ['foo', 'bar@example.com', 'localhost:/dev/null', 'xyzzy+-4711,23'])
+ result.should(eql(
+ 'foo bar@example.com localhost:/dev/null xyzzy+-4711,23'))
+ end
+
+ it "should handle array arguments" do
+ result = @scope.function_shellquote(
+ ['foo', ['bar@example.com', 'localhost:/dev/null'],
+ 'xyzzy+-4711,23'])
+ result.should(eql(
+ 'foo bar@example.com localhost:/dev/null xyzzy+-4711,23'))
+ end
+
+ it "should quote unsafe characters" do
+ result = @scope.function_shellquote(
+ ['/etc/passwd ', '(ls)', '*', '[?]', "'&'"])
+ result.should(eql(
+ '"/etc/passwd " "(ls)" "*" "[?]" "\'&\'"'))
+ end
+
+ it "should deal with double quotes" do
+ result = @scope.function_shellquote(
+ ['"foo"bar"'])
+ result.should(eql(
+ '\'"foo"bar"\''))
+ end
+
+ it "should cope with dollar signs" do
+ result = @scope.function_shellquote(
+ ['$PATH', 'foo$bar', '"x$"'])
+ result.should(eql(
+ "'$PATH' 'foo$bar' '\"x$\"'"))
+ end
+
+ it "should deal with apostrophes (single quotes)" do
+ result = @scope.function_shellquote(
+ ["'foo'bar'", "`$'EDITOR'`"])
+ result.should(eql(
+ '"\'foo\'bar\'" "\\`\\$\'EDITOR\'\\`"'))
+ end
+
+ it "should cope with grave accents (backquotes)" do
+ result = @scope.function_shellquote(
+ ['`echo *`', '`ls "$MAILPATH"`'])
+ result.should(eql(
+ "'`echo *`' '`ls \"$MAILPATH\"`'"))
+ end
+
+ it "should deal with both single and double quotes" do
+ result = @scope.function_shellquote(
+ ['\'foo"bar"xyzzy\'', '"foo\'bar\'xyzzy"'])
+ result.should(eql(
+ '"\'foo\\"bar\\"xyzzy\'" "\\"foo\'bar\'xyzzy\\""'))
+ end
+
+ it "should handle multiple quotes *and* dollars and backquotes" do
+ result = @scope.function_shellquote(
+ ['\'foo"$x`bar`"xyzzy\''])
+ result.should(eql(
+ '"\'foo\\"\\$x\\`bar\\`\\"xyzzy\'"'))
+ end
+
+ it "should handle linefeeds" do
+ result = @scope.function_shellquote(
+ ["foo \n bar"])
+ result.should(eql(
+ "\"foo \n bar\""))
+ end
+
+end