Expand template path under user's home directory.
* File.join won't expand `~` into `ENV['HOME']` (http://ruby-doc.org/core-1.9.3/File.html#method-c-expand_path) * The FakeFS File.exists? implementation calls FileSystem#find (https://github.com/defunkt/fakefs/blob/master/lib/fakefs/file_system.rb#L22-33) containing a call to FileSystem#normalize_path which expands the path variable passed in (https://github.com/defunkt/fakefs/blob/master/lib/fakefs/file_system.rb#L91-98) * The file system mocking library sets up a false expectation that `~` will be expanded in the #export_template method and consequently the production code can't use the template directory * To guard against future regressions such as fixes/updates to FakeFS or using an alternate file system mocking library, the specs were updated to explicitly set `ENV['HOME']`
This commit is contained in:
@@ -38,13 +38,19 @@ describe Foreman::Export::Upstart do
|
||||
end
|
||||
|
||||
context "with alternate templates from home dir" do
|
||||
let(:default_template_root) {File.expand_path("~/.foreman/templates")}
|
||||
let(:default_template_root) {File.expand_path("#{ENV['HOME']}/.foreman/templates")}
|
||||
|
||||
before do
|
||||
ENV['_FOREMAN_SPEC_HOME'] = ENV['HOME']
|
||||
ENV['HOME'] = "/home/appuser"
|
||||
FileUtils.mkdir_p default_template_root
|
||||
File.open("#{default_template_root}/master.conf.erb", "w") { |f| f.puts "default_alternate_template" }
|
||||
end
|
||||
|
||||
after do
|
||||
ENV['HOME'] = ENV.delete('_FOREMAN_SPEC_HOME')
|
||||
end
|
||||
|
||||
it "can export with alternate template files" do
|
||||
upstart.export("/tmp/init")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user