summaryrefslogtreecommitdiff
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.rb33
1 files changed, 33 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..d1b61e0a6e
--- /dev/null
+++ b/spec/ruby/library/shellwords/shellwords_spec.rb
@@ -0,0 +1,33 @@
+require_relative '../../spec_helper'
+require 'shellwords'
+
+describe "Shellwords#shellwords" do
+ it "honors quoted strings" do
+ Shellwords.shellwords('a "b b" a').should == ['a', 'b b', 'a']
+ end
+
+ it "honors escaped double quotes" do
+ Shellwords.shellwords('a "\"b\" c" d').should == ['a', '"b" c', 'd']
+ end
+
+ it "honors escaped single quotes" do
+ Shellwords.shellwords("a \"'b' c\" d").should == ['a', "'b' c", 'd']
+ end
+
+ it "honors escaped spaces" do
+ Shellwords.shellwords('a b\ c d').should == ['a', 'b c', 'd']
+ end
+
+ it "raises ArgumentError when double quoted strings are misquoted" do
+ -> { Shellwords.shellwords('a "b c d e') }.should.raise(ArgumentError)
+ end
+
+ it "raises ArgumentError when single quoted strings are misquoted" do
+ -> { Shellwords.shellwords("a 'b c d e") }.should.raise(ArgumentError)
+ end
+
+ # https://bugs.ruby-lang.org/issues/10055
+ it "matches POSIX sh behavior for backslashes within double quoted strings" do
+ Shellwords.shellsplit('printf "%s\n"').should == ['printf', '%s\n']
+ end
+end