Add integration test for copying multiple sources with Copy builder

This commit is contained in:
Josh Holtrop 2019-02-25 21:13:57 -05:00
parent 983862a528
commit 6ce3d59ad9
3 changed files with 49 additions and 21 deletions

View File

@ -0,0 +1,5 @@
build do
Environment.new do |env|
env.Copy("dest", ["copy.rb", "copy_multiple.rb"])
end
end

View File

@ -39,7 +39,7 @@ module Rscons
if paths.size == 1
paths.first
else
"#{paths.first} (#{paths.size - 1})"
"#{paths.first} (+#{paths.size - 1})"
end
end

View File

@ -953,6 +953,49 @@ EOF
end
end
context "Copy builder" do
it "copies a file to the target file name" do
test_dir("typical")
result = run_rscons(rsconscript: "copy.rb")
expect(result.stderr).to eq ""
expect(lines(result.stdout)).to include *["Copy copy.rb => inst.exe"]
result = run_rscons(rsconscript: "copy.rb")
expect(result.stderr).to eq ""
expect(result.stdout).to eq ""
expect(File.exists?("inst.exe")).to be_truthy
expect(File.read("inst.exe", mode: "rb")).to eq(File.read("copy.rb", mode: "rb"))
FileUtils.rm("inst.exe")
result = run_rscons(rsconscript: "copy.rb")
expect(result.stderr).to eq ""
expect(lines(result.stdout)).to include *["Copy copy.rb => inst.exe"]
end
it "copies multiple files to the target directory name" do
test_dir("typical")
result = run_rscons(rsconscript: "copy_multiple.rb")
expect(result.stderr).to eq ""
expect(lines(result.stdout)).to include *["Copy copy.rb (+1) => dest"]
result = run_rscons(rsconscript: "copy_multiple.rb")
expect(result.stderr).to eq ""
expect(result.stdout).to eq ""
expect(Dir.exists?("dest")).to be_truthy
expect(File.exists?("dest/copy.rb")).to be_truthy
expect(File.exists?("dest/copy_multiple.rb")).to be_truthy
FileUtils.rm_rf("dest")
result = run_rscons(rsconscript: "copy_multiple.rb")
expect(result.stderr).to eq ""
expect(lines(result.stdout)).to include *["Copy copy.rb (+1) => dest"]
end
end
context "Install buildler" do
it "copies a file to the target file name" do
test_dir("typical")
@ -974,26 +1017,6 @@ EOF
expect(lines(result.stdout)).to include *["Install install.rb => inst.exe"]
end
it "operates the same as a Copy builder" do
test_dir("typical")
result = run_rscons(rsconscript: "copy.rb")
expect(result.stderr).to eq ""
expect(lines(result.stdout)).to include *["Copy copy.rb => inst.exe"]
result = run_rscons(rsconscript: "copy.rb")
expect(result.stderr).to eq ""
expect(result.stdout).to eq ""
expect(File.exists?("inst.exe")).to be_truthy
expect(File.read("inst.exe", mode: "rb")).to eq(File.read("copy.rb", mode: "rb"))
FileUtils.rm("inst.exe")
result = run_rscons(rsconscript: "copy.rb")
expect(result.stderr).to eq ""
expect(lines(result.stdout)).to include *["Copy copy.rb => inst.exe"]
end
it "copies a file to the target directory name" do
test_dir("typical")