aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/library/shellwords/shellwords_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/shellwords/shellwords_spec.rb')
-rw-r--r--spec/ruby/library/shellwords/shellwords_spec.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/spec/ruby/library/shellwords/shellwords_spec.rb b/spec/ruby/library/shellwords/shellwords_spec.rb
new file mode 100644
index 0000000000..aa35c1a5c3
--- /dev/null
+++ b/spec/ruby/library/shellwords/shellwords_spec.rb
@@ -0,0 +1,29 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require 'shellwords'
+include Shellwords
+
+describe "Shellwords#shellwords" do
+ it "honors quoted strings" do
+ shellwords('a "b b" a').should == ['a', 'b b', 'a']
+ end
+
+ it "honors escaped double quotes" do
+ shellwords('a "\"b\" c" d').should == ['a', '"b" c', 'd']
+ end
+
+ it "honors escaped single quotes" do
+ shellwords("a \"'b' c\" d").should == ['a', "'b' c", 'd']
+ end
+
+ it "honors escaped spaces" do
+ shellwords('a b\ c d').should == ['a', 'b c', 'd']
+ end
+
+ it "raises ArgumentError when double quoted strings are misquoted" do
+ lambda { shellwords('a "b c d e') }.should raise_error(ArgumentError)
+ end
+
+ it "raises ArgumentError when single quoted strings are misquoted" do
+ lambda { shellwords("a 'b c d e") }.should raise_error(ArgumentError)
+ end
+end