From 833cc5915ecef2a4b14543a918d823724aad4cc4 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 14 Jul 2013 23:14:59 -0400 Subject: [PATCH] fix Cache#up_to_date?() checking dependency subset - initial rebuilding only when necessary working --- lib/rscons/cache.rb | 3 ++- spec/build_tests_spec.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/rscons/cache.rb b/lib/rscons/cache.rb index 9cca116..8452e3c 100644 --- a/lib/rscons/cache.rb +++ b/lib/rscons/cache.rb @@ -60,7 +60,8 @@ module Rscons # command line used to build target must be identical return false unless @cache[target][:command] == command # all dependencies passed in must exist in cache (but cache may have more) - return false unless (Set.new(deps) - Set.new(@cache[target][:deps])).empty? + cached_deps = @cache[target][:deps].map { |dc| dc[:fname] } + return false unless (Set.new(deps) - Set.new(cached_deps)).empty? # all cached dependencies must have their checksums match @cache[target][:deps].map do |dep_cache| dep_cache[:checksum] == lookup_checksum(dep_cache[:fname]) diff --git a/spec/build_tests_spec.rb b/spec/build_tests_spec.rb index 5fc3488..b965b69 100644 --- a/spec/build_tests_spec.rb +++ b/spec/build_tests_spec.rb @@ -79,7 +79,7 @@ describe Rscons do `./header`.should == "The value is 5\n" end - xit 'does not rebuild a C module when its dependencies have not changed' do + it 'does not rebuild a C module when its dependencies have not changed' do lines = test_dir('header') `./header`.should == "The value is 2\n" lines.should == [