summaryrefslogtreecommitdiff
path: root/spec/functional/mixin
diff options
context:
space:
mode:
authorClaire McQuin <claire@getchef.com>2014-06-25 14:31:49 -0700
committerClaire McQuin <claire@getchef.com>2014-06-27 12:43:55 -0700
commit4c77658ef23c689a1364414f0c7d2bfca47c4dcd (patch)
tree9d8afce8c642b66e7dc866ea299ebfda08bffe32 /spec/functional/mixin
parent8fbd370f59a1a4e89c976ce227b0809aca80e660 (diff)
downloadchef-4c77658ef23c689a1364414f0c7d2bfca47c4dcd.tar.gz
Add functional test for shell_out_with_systems_locale
Diffstat (limited to 'spec/functional/mixin')
-rw-r--r--spec/functional/mixin/shell_out_spec.rb56
1 files changed, 56 insertions, 0 deletions
diff --git a/spec/functional/mixin/shell_out_spec.rb b/spec/functional/mixin/shell_out_spec.rb
new file mode 100644
index 0000000000..7e57de2a0a
--- /dev/null
+++ b/spec/functional/mixin/shell_out_spec.rb
@@ -0,0 +1,56 @@
+#
+# Copyright:: Copyright (c) 2014 Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require 'spec_helper'
+
+describe Chef::Mixin::ShellOut do
+ include Chef::Mixin::ShellOut
+
+ describe "shell_out_with_systems_locale" do
+ describe "when environment['LC_ALL'] is not set" do
+ it "should use the default shell_out setting" do
+ cmd = if windows?
+ shell_out_with_systems_locale('echo %LC_ALL%')
+ else
+ shell_out_with_systems_locale('echo $LC_ALL')
+ end
+
+ # From mixlib-shellout/lib/mixlib/shell_out.rb:
+ #
+ # * +environment+: a Hash of environment variables to set before the command
+ # is run. By default, the environment will *always* be set to 'LC_ALL' => 'C'
+ # to prevent issues with multibyte characters in Ruby 1.8. To avoid this,
+ # use :environment => nil for *no* extra environment settings, or
+ # :environment => {'LC_ALL'=>nil, ...} to set other environment settings
+ # without changing the locale.
+ cmd.stdout.chomp.should eq 'C'
+ end
+ end
+
+ describe "when environment['LC_ALL'] is set" do
+ it "should use the option's setting" do
+ cmd = if windows?
+ shell_out_with_systems_locale('echo %LC_ALL%', :environment => {'LC_ALL' => 'POSIX'})
+ else
+ shell_out_with_systems_locale('echo $LC_ALL', :environment => {'LC_ALL' => 'POSIX'})
+ end
+
+ cmd.stdout.chomp.should eq 'POSIX'
+ end
+ end
+ end
+end