Install builder: remove target file before copying to avoid errors due to overwriting read-only files - close #123
This commit is contained in:
parent
b970490de2
commit
b92360d4e2
3
build_tests/build_dir/install_read_only.rb
Normal file
3
build_tests/build_dir/install_read_only.rb
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Rscons::Environment.new do |env|
|
||||||
|
env.Install("dest", "install.rb")
|
||||||
|
end
|
@ -47,6 +47,7 @@ module Rscons
|
|||||||
printed_message = true
|
printed_message = true
|
||||||
end
|
end
|
||||||
cache.mkdir_p(File.dirname(dest))
|
cache.mkdir_p(File.dirname(dest))
|
||||||
|
FileUtils.rm_f(dest)
|
||||||
FileUtils.cp(src, dest, :preserve => true)
|
FileUtils.cp(src, dest, :preserve => true)
|
||||||
end
|
end
|
||||||
cache.register_build(dest, :Copy, [src], env)
|
cache.register_build(dest, :Copy, [src], env)
|
||||||
|
@ -1002,6 +1002,22 @@ EOF
|
|||||||
expect(lines(result.stdout)).to eq ["Install inst.exe"]
|
expect(lines(result.stdout)).to eq ["Install inst.exe"]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "overwrites a read-only file" do
|
||||||
|
test_dir("build_dir")
|
||||||
|
|
||||||
|
FileUtils.chmod("a=r", "install.rb")
|
||||||
|
result = run_test(rsconsfile: "install_read_only.rb")
|
||||||
|
expect(result.stderr).to eq ""
|
||||||
|
expect(lines(result.stdout)).to eq ["Install dest"]
|
||||||
|
|
||||||
|
FileUtils.rm_f("install.rb")
|
||||||
|
File.binwrite("install.rb", "hi")
|
||||||
|
FileUtils.chmod("a=r", "install.rb")
|
||||||
|
result = run_test(rsconsfile: "install_read_only.rb")
|
||||||
|
expect(result.stderr).to eq ""
|
||||||
|
expect(lines(result.stdout)).to eq ["Install dest"]
|
||||||
|
end
|
||||||
|
|
||||||
it "operates the same as a Copy builder" do
|
it "operates the same as a Copy builder" do
|
||||||
test_dir("build_dir")
|
test_dir("build_dir")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user