diff options
author | Tim Smith <tsmith@chef.io> | 2020-08-04 08:12:41 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-04 08:12:41 -0700 |
commit | 3b0d4e0990a0dc7c3a52beed9eec97b435da639c (patch) | |
tree | 1bbf2bd8fccb604def18fe1e5c6ca5a5fa860a8b | |
parent | b21bd283428ad68ffb8cce79d3803ebcd627820b (diff) | |
parent | da6f8943a3a751793b61da31c1675df476824899 (diff) | |
download | chef-3b0d4e0990a0dc7c3a52beed9eec97b435da639c.tar.gz |
Merge pull request #10257 from MsysTechnologiesllc/dh/fix_windows_font_hang
Fix second chef run hang for windows_font resource
-rw-r--r-- | lib/chef/resource/windows_font.rb | 3 | ||||
-rw-r--r-- | spec/functional/resource/windows_font_spec.rb | 49 |
2 files changed, 51 insertions, 1 deletions
diff --git a/lib/chef/resource/windows_font.rb b/lib/chef/resource/windows_font.rb index 54e1c9669a..8fea06f0de 100644 --- a/lib/chef/resource/windows_font.rb +++ b/lib/chef/resource/windows_font.rb @@ -98,8 +98,9 @@ class Chef def font_exists? require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/) fonts_dir = WIN32OLE.new("WScript.Shell").SpecialFolders("Fonts") + fonts_dir_local = Chef::Util::PathHelper.join(ENV["home"], "AppData/Local/Microsoft/Windows/fonts") logger.trace("Seeing if the font at #{Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)} exists") - ::File.exist?(Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)) + ::File.exist?(Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)) || ::File.exist?(Chef::Util::PathHelper.join(fonts_dir_local, new_resource.font_name)) end # Parse out the schema provided to us to see if it's one we support via remote_file. diff --git a/spec/functional/resource/windows_font_spec.rb b/spec/functional/resource/windows_font_spec.rb new file mode 100644 index 0000000000..e46e4aca17 --- /dev/null +++ b/spec/functional/resource/windows_font_spec.rb @@ -0,0 +1,49 @@ +# +# Author:: Dheeraj Singh Dubey (<ddubey@chef.io>) +# Copyright:: Copyright (c) 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::Resource::WindowsFont, :windows_only do + let(:resource_name) { "Playmaker.ttf" } + let(:resource_source) { "https://www.wfonts.com/download/data/2020/05/06/playmaker/Playmaker.ttf" } + + let(:run_context) do + node = Chef::Node.new + node.default[:platform] = ohai[:platform] + node.default[:platform_version] = ohai[:platform_version] + node.default[:os] = ohai[:os] + events = Chef::EventDispatch::Dispatcher.new + Chef::RunContext.new(node, {}, events) + end + + subject do + resource = Chef::Resource::WindowsFont.new(resource_name, run_context) + resource.source resource_source + resource + end + + it "installs font on first install" do + subject.run_action(:install) + expect(subject).to be_updated_by_last_action + end + + it "does not install font when already installed" do + subject.run_action(:install) + expect(subject).not_to be_updated_by_last_action + end +end |