summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Wrock <matt@mattwrock.com>2016-01-06 18:24:43 -0800
committerMatt Wrock <matt@mattwrock.com>2016-01-06 18:24:43 -0800
commit7ba79203004d62f42eab442ac6e0008ada25d333 (patch)
tree2c089870793908ea066641dab8d8404a807d198e
parentc9d7e017de225db3e8b8610dc7e2f41242dbe730 (diff)
downloadchef-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.rb8
-rw-r--r--spec/functional/win32/version_info_spec.rb8
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