diff options
author | Bryan McLellan <btm@loftninjas.org> | 2019-04-15 17:30:01 -0400 |
---|---|---|
committer | Bryan McLellan <btm@loftninjas.org> | 2019-04-15 20:58:55 -0400 |
commit | 7f62eff6d676365c9e1a984728e9b02bbd74d3ae (patch) | |
tree | 7fe4975031717ea3dfac77f0789b1d57812d02c7 /spec | |
parent | 2fe2f5029df438ff92274b3240df5f5bee10c067 (diff) | |
download | chef-7f62eff6d676365c9e1a984728e9b02bbd74d3ae.tar.gz |
Limit locale resource to Linux
Platforms that don't use /etc/locale.conf aren't supported
Signed-off-by: Bryan McLellan <btm@loftninjas.org>
Diffstat (limited to 'spec')
-rw-r--r-- | spec/functional/resource/locale_spec.rb | 109 |
1 files changed, 64 insertions, 45 deletions
diff --git a/spec/functional/resource/locale_spec.rb b/spec/functional/resource/locale_spec.rb index 61ef4630bc..83dfc2d007 100644 --- a/spec/functional/resource/locale_spec.rb +++ b/spec/functional/resource/locale_spec.rb @@ -18,61 +18,80 @@ require "spec_helper" -describe Chef::Resource::Locale, :requires_root, :not_supported_on_windows do - - let(:node) { Chef::Node.new } +describe Chef::Resource::Locale, :requires_root do + let(:node) do + n = Chef::Node.new + n.consume_external_attrs(OHAI_SYSTEM.data, {}) + n + end let(:events) { Chef::EventDispatch::Dispatcher.new } let(:run_context) { Chef::RunContext.new(node, {}, events) } let(:resource) { Chef::Resource::Locale.new("fakey_fakerton", run_context) } - def sets_system_locale(*locales) - system_locales = File.readlines("/etc/locale.conf") - expect(system_locales.map(&:strip)).to eq(locales) - end + context "on debian/ubuntu", :debian_family_only do + def sets_system_locale(*locales) + system_locales = File.readlines("/etc/locale.conf") + expect(system_locales.map(&:strip)).to eq(locales) + end - def unsets_system_locale(*locales) - system_locales = File.readlines("/etc/locale.conf") - expect(system_locales.map(&:strip)).not_to eq(locales) - end + def unsets_system_locale(*locales) + system_locales = File.readlines("/etc/locale.conf") + expect(system_locales.map(&:strip)).not_to eq(locales) + end - describe "action: update" do - context "Sets system variable" do - it "when LC var is given" do - resource.lc_env({ "LC_MESSAGES" => "en_US" }) - resource.run_action(:update) - sets_system_locale("LC_MESSAGES=en_US") + describe "action: update" do + context "Sets system variable" do + it "when LC var is given" do + resource.lc_env({ "LC_MESSAGES" => "en_US" }) + resource.run_action(:update) + sets_system_locale("LC_MESSAGES=en_US") + end + it "when lang is given" do + resource.lang("en_US") + resource.run_action(:update) + sets_system_locale("LANG=en_US") + end + it "when both lang & LC vars are given" do + resource.lang("en_US") + resource.lc_env({ "LC_TIME" => "en_IN" }) + resource.run_action(:update) + sets_system_locale("LANG=en_US", "LC_TIME=en_IN") + end end - it "when lang is given" do - resource.lang("en_US") - resource.run_action(:update) - sets_system_locale("LANG=en_US") - end - it "when both lang & LC vars are given" do - resource.lang("en_US") - resource.lc_env({ "LC_TIME" => "en_IN" }) - resource.run_action(:update) - sets_system_locale("LANG=en_US", "LC_TIME=en_IN") + + context "Unsets system variable" do + it "when LC var is not given" do + resource.lc_env() + resource.run_action(:update) + unsets_system_locale("LC_MESSAGES=en_US") + end + it "when lang is not given" do + resource.lang() + resource.run_action(:update) + unsets_system_locale("LANG=en_US") + end + it "when both lang & LC vars are not given" do + resource.lang() + resource.lc_env() + resource.run_action(:update) + unsets_system_locale("LANG=en_US", "LC_TIME=en_IN") + sets_system_locale("") + end end end + end - context "Unsets system variable" do - it "when LC var is not given" do - resource.lc_env() - resource.run_action(:update) - unsets_system_locale("LC_MESSAGES=en_US") - end - it "when lang is not given" do - resource.lang() - resource.run_action(:update) - unsets_system_locale("LANG=en_US") - end - it "when both lang & LC vars are not given" do - resource.lang() - resource.lc_env() - resource.run_action(:update) - unsets_system_locale("LANG=en_US", "LC_TIME=en_IN") - sets_system_locale("") - end + context "on rhel", :rhel do + it "raises an exception due lacking the locale-gen tool" do + resource.lang("en_US") + expect { resource.run_action(:update) }.to raise_error(Chef::Exceptions::ProviderNotFound) + end + end + + context "on macos", :macos_only do + it "raises an exception due to being an unsupported platform" do + resource.lang("en_US") + expect { resource.run_action(:update) }.to raise_error(Chef::Exceptions::ProviderNotFound) end end end |