diff options
author | Matt Wrock <matt@mattwrock.com> | 2016-01-06 18:24:43 -0800 |
---|---|---|
committer | Matt Wrock <matt@mattwrock.com> | 2016-01-06 18:24:43 -0800 |
commit | 7ba79203004d62f42eab442ac6e0008ada25d333 (patch) | |
tree | 2c089870793908ea066641dab8d8404a807d198e | |
parent | c9d7e017de225db3e8b8610dc7e2f41242dbe730 (diff) | |
download | chef-no_version.tar.gz |
fixes #4354 and does not raise if file has no version resourceno_version
-rw-r--r-- | lib/chef/win32/file/version_info.rb | 8 | ||||
-rw-r--r-- | spec/functional/win32/version_info_spec.rb | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/chef/win32/file/version_info.rb b/lib/chef/win32/file/version_info.rb index 2974c8a695..08828981c1 100644 --- a/lib/chef/win32/file/version_info.rb +++ b/lib/chef/win32/file/version_info.rb @@ -28,7 +28,11 @@ class Chef def initialize(file_name) raise Errno::ENOENT, file_name unless ::File.exist?(file_name) - @file_version_info = retrieve_file_version_info(file_name) + begin + @file_version_info = retrieve_file_version_info(file_name) + rescue Chef::Exceptions::Win32APIError + # file likely has no embedded version info + end end # defining method for each predefined version resource string @@ -48,6 +52,8 @@ class Chef :SpecialBuild ].each do |method| define_method method do + return nil if @file_version_info.nil? + begin get_version_info_string(method.to_s) rescue Chef::Exceptions::Win32APIError diff --git a/spec/functional/win32/version_info_spec.rb b/spec/functional/win32/version_info_spec.rb index c7d41f9616..9b71ff7174 100644 --- a/spec/functional/win32/version_info_spec.rb +++ b/spec/functional/win32/version_info_spec.rb @@ -47,4 +47,12 @@ describe "Chef::ReservedNames::Win32::File::VersionInfo", :windows_only do it "file description is command processor" do expect(subject.FileDescription).to eq("Windows Command Processor") end + + context "file has no version resources" do + let(:file_path) { File.join(ENV['windir'], "bootstat.dat") } + + it "returns nil" do + expect(subject.FileVersion).to be nil + end + end end |