From 658b73e4deb4353ccab01f889edff85e3f350955 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 17 Feb 2019 22:20:51 -0500 Subject: [PATCH] add build test for a builder waiting on another builder --- .../simple/builder_wait_for_builder.rb | 23 +++++++++++++++++++ spec/build_tests_spec.rb | 10 ++++++++ 2 files changed, 33 insertions(+) create mode 100644 build_tests/simple/builder_wait_for_builder.rb diff --git a/build_tests/simple/builder_wait_for_builder.rb b/build_tests/simple/builder_wait_for_builder.rb new file mode 100644 index 0000000..911e98e --- /dev/null +++ b/build_tests/simple/builder_wait_for_builder.rb @@ -0,0 +1,23 @@ +class MyObject < Rscons::Builder + def run(options) + if @builder + if File.exists?(@target) + true + else + false + end + else + @env.print_builder_run_message("#{name} #{@target}", nil) + @builder = @env.Object(@target, @sources, @vars) + wait_for(@builder) + end + end +end + +build do + Environment.new do |env| + env.add_builder(MyObject) + env.MyObject("simple.o", "simple.c") + env.Program("simple.exe", "simple.o") + end +end diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index 6900663..170a49f 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -350,6 +350,16 @@ EOF expect(File.exists?("foo")).to be_truthy end + it 'supports a Builder waiting for another Builder' do + test_dir "simple" + result = run_rscons(rsconscript: "builder_wait_for_builder.rb") + expect(result.stderr).to eq "" + expect(result.status).to eq 0 + expect(lines(result.stdout)).to include "MyObject simple.o" + expect(File.exists?("simple.o")).to be_truthy + expect(File.exists?("simple.exe")).to be_truthy + end + it 'allows cloning Environment objects' do test_dir('clone_env') result = run_rscons