Module: RSpec::Core::ShellEscape Private
Do not use. This module is for internal use only.
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Defined in: | rspec-core/lib/rspec/core/shell_escape.rb |
Overview
Deals with the fact that shellwords
only works on POSIX systems.
Constant Summary
-
SHELLS_ALLOWING_UNQUOTED_IDS =
Known shells that require quoting: zsh, csh, tcsh.
Feel free to add other shells to this list that are known to allow ‘rspec ./some_spec.rb` syntax without quoting the id.
%w[ bash ksh fish ]
Class Attribute Summary
- .shell_allows_unquoted_ids? ⇒ Boolean readonly Internal use only mod_func
Class Method Summary
- .conditionally_quote(id) Internal use only mod_func
-
.escape(shell_command)
(also: #open3_safe_escape)
mod_func
Alias for #quote.
- .quote(argument) (also: .escape, #open3_safe_escape) Internal use only mod_func
Class Attribute Details
.shell_allows_unquoted_ids? ⇒ Boolean
(readonly, mod_func)
# File 'rspec-core/lib/rspec/core/shell_escape.rb', line 37
def shell_allows_unquoted_ids? # Note: ENV['SHELL'] isn't necessarily the shell the user is currently running. # According to http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html: # "This variable shall represent a pathname of the user's preferred command language interpreter." # # It's the best we can easily do, though. We err on the side of safety (quoting # the id when not actually needed) so it's not a big deal if the user is actually # using a different shell. SHELLS_ALLOWING_UNQUOTED_IDS.include?(ENV['SHELL'].to_s.split('/').last) end
Class Method Details
.conditionally_quote(id) (mod_func)
[ GitHub ]# File 'rspec-core/lib/rspec/core/shell_escape.rb', line 32
def conditionally_quote(id) return id if shell_allows_unquoted_ids? quote(id) end
.escape(shell_command) (mod_func) Also known as: #open3_safe_escape
Alias for #quote.
# File 'rspec-core/lib/rspec/core/shell_escape.rb', line 19
alias escape quote
.quote(argument) (mod_func) Also known as: .escape, #open3_safe_escape
[ GitHub ]# File 'rspec-core/lib/rspec/core/shell_escape.rb', line 8
def quote(argument) "'#{argument.to_s.gsub("'", "\\\\'")}'" end