Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 0.9.8
-
Component/s: None
-
Labels:None
-
Environment:
Windows
Description
FileUtils.mkdir_p fails in Chef::Provider::File when the backup path contains a drive letter.
Experienced using the template provider, where:
template "C:/hudson/hudson-slave.xml" do source "hudson-slave.xml" ... end
log:
INFO: Writing updated content for template[C:/hudson/hudson-slave.xml] to C:/hudson/hudson-slave.xml ERROR: template[C:/hudson/hudson-slave.xml] (.../recipes/default.rb:4:in `from_file') had an error: Invalid argument - C:/chef/backup/C: ...
Problem is in Chef::Provider::File.backup, where backup_filename contains the drive letter: 'C:/hudson/hudson-slave.xml.chef-timestamp', boils down to:
ruby -e 'FileUtils.mkdir_p(File.dirname(File.join(ARGV[0], ARGV[1])))' c:/chef/backup C:/hudson/hudson-slave.xml.chef-timestamp
C:/Ruby/lib/ruby/1.8/fileutils.rb:243:in `mkdir': Invalid argument - c:/chef/backup/C: (Errno::EINVAL)
from C:/Ruby/lib/ruby/1.8/fileutils.rb:243:in `fu_mkdir'
from C:/Ruby/lib/ruby/1.8/fileutils.rb:217:in `mkdir_p'
from C:/Ruby/lib/ruby/1.8/fileutils.rb:215:in `reverse_each'
from C:/Ruby/lib/ruby/1.8/fileutils.rb:215:in `mkdir_p'
from C:/Ruby/lib/ruby/1.8/fileutils.rb:201:in `each'
from C:/Ruby/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p'
from -e:1
Fix + unit test at: http://github.com/dougm/chef/tree/CHEF-1509