From 1eb9008885b4e66c5d0a91381efac58d91b2a313 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 7 Jul 2013 17:41:47 -0400 Subject: [PATCH] test rebuilding C module when header changes --- spec/build_tests_spec.rb | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index 33dca01..0016658 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -11,11 +11,26 @@ describe Rscons do FileUtils.rm_rf('build_tests_run') end + def build_testdir + if File.exists?("build.rb") + system("ruby -I #{@owd}/lib -r rscons build.rb") + end + end + def test_dir(build_test_directory) FileUtils.cp_r("build_tests/#{build_test_directory}", 'build_tests_run') Dir.chdir("build_tests_run") - if File.exists?("build.rb") - system("ruby -I #{@owd}/lib -r rscons build.rb") + build_testdir + end + + def file_sub(fname) + contents = File.read(fname) + replaced = '' + contents.each_line do |line| + replaced += yield(line) + end + File.open(fname, 'w') do |fh| + fh.write(replaced) end end @@ -34,4 +49,12 @@ describe Rscons do File.exists?('header.o').should be_true `./header`.should == "The value is 2\n" end + + it 'rebuilds a C module when a header it depends on changes' do + test_dir('header') + `./header`.should == "The value is 2\n" + file_sub('header.h') {|line| line.sub(/2/, '5')} + build_testdir + `./header`.should == "The value is 5\n" + end end