From 83226e894db47123653e7b8313a5f74a79506e2f Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 24 May 2017 16:16:53 -0400 Subject: [PATCH] add backwards-compatibility test for Builder#standard_build --- build_tests/simple/standard_build.rb | 17 ++++++++ spec/build_tests_spec.rb | 65 ++++++++++++++++------------ 2 files changed, 54 insertions(+), 28 deletions(-) create mode 100644 build_tests/simple/standard_build.rb diff --git a/build_tests/simple/standard_build.rb b/build_tests/simple/standard_build.rb new file mode 100644 index 0000000..9d8fa06 --- /dev/null +++ b/build_tests/simple/standard_build.rb @@ -0,0 +1,17 @@ +class MyCommand < Rscons::Builder + def run(target, sources, cache, env, vars) + vars = vars.merge({ + "_TARGET" => target, + "_SOURCES" => sources, + }) + command = env.build_command("${CMD}", vars) + cmd_desc = vars["CMD_DESC"] || "MyCommand" + standard_build("#{cmd_desc} #{target}", target, command, sources, env, cache) + end +end + +Rscons::Environment.new do |env| + env.add_builder(MyCommand.new) + command = %w[gcc -c -o ${_TARGET} ${_SOURCES}] + env.MyCommand("simple.o", "simple.c", "CMD" => command) +end diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index debddaf..db468ee 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -631,35 +631,44 @@ EOF ] end - it "allows a builder to call Environment#run_builder in a non-threaded manner" do - test_dir("simple") - result = run_test(rsconsfile: "run_builder.rb") - expect(result.stderr).to eq "" - expect(lines(result.stdout)).to eq [ - "CC simple.o", - "LD simple.exe", - ] - end - - it "allows a builder to call Environment#build_sources in a non-threaded manner" do - test_dir("simple") - result = run_test(rsconsfile: "build_sources.rb") - expect(result.stderr).to eq "" - expect(lines(result.stdout)).to eq [ - "CC simple.o", - "CC two.o", - "MyProgram simple.exe", - ] - end - - it "prints the failed build command for a threaded builder when called via Environment#run_builder without delayed execution" do - test_dir("simple") - File.open("simple.c", "wb") do |fh| - fh.write("FOOBAR") + context "backward compatibility" do + it "allows a builder to call Environment#run_builder in a non-threaded manner" do + test_dir("simple") + result = run_test(rsconsfile: "run_builder.rb") + expect(result.stderr).to eq "" + expect(lines(result.stdout)).to eq [ + "CC simple.o", + "LD simple.exe", + ] + end + + it "allows a builder to call Environment#build_sources in a non-threaded manner" do + test_dir("simple") + result = run_test(rsconsfile: "build_sources.rb") + expect(result.stderr).to eq "" + expect(lines(result.stdout)).to eq [ + "CC simple.o", + "CC two.o", + "MyProgram simple.exe", + ] + end + + it "prints the failed build command for a threaded builder when called via Environment#run_builder without delayed execution" do + test_dir("simple") + File.open("simple.c", "wb") do |fh| + fh.write("FOOBAR") + end + result = run_test(rsconsfile: "run_builder.rb") + expect(result.stderr).to match /Failed to build/ + expect(result.stdout).to match /Failed command was: gcc/ + end + + it "supports builders that call Builder#standard_build" do + test_dir("simple") + result = run_test(rsconsfile: "standard_build.rb") + expect(result.stderr).to eq "" + expect(lines(result.stdout)).to eq ["MyCommand simple.o"] end - result = run_test(rsconsfile: "run_builder.rb") - expect(result.stderr).to match /Failed to build/ - expect(result.stdout).to match /Failed command was: gcc/ end context "Directory builder" do