Fix the return value of the base Node.get_prevsiginfo(). (Gary Oberbrunner)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 21 Jul 2003 05:05:04 +0000 (05:05 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Mon, 21 Jul 2003 05:05:04 +0000 (05:05 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@739 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Node/NodeTests.py
src/engine/SCons/Node/__init__.py
src/engine/SCons/Sig/__init__.py

index 3283760b74d2dc90d4c91701c4cc7096589fe39a..6e92bb72ba357a90321b7446d02c7da9952cec3e 100644 (file)
@@ -44,6 +44,9 @@ RELEASE 0.XX - XXX
   - Provide helpful error messages when the arguments to env.Install()
     are incorrect.
 
+  - Fix the value returned by the Node.prevsiginfo() method to conform
+    to a previous change when checking whether a node is current.
+
   From Christoph Wiedemann
 
   - Have the g++ Tool actually use g++ in preference to c++.
index 103cfae35c9bd0da594442aef0d589816f1a7b71..2d6e0bce293c32c3a41e76042a9ab0b06b8bd113 100644 (file)
@@ -971,6 +971,13 @@ class NodeTestCase(unittest.TestCase):
 
         assert n.get_subst_proxy() == n, n.get_subst_proxy()
 
+    def test_get_prevsiginfo(self):
+        """Test the base Node get_prevsiginfo() method"""
+        n = SCons.Node.Node()
+        siginfo = n.get_prevsiginfo()
+        assert siginfo == (None, None, None), siginfo
+
+
 
 if __name__ == "__main__":
     suite = unittest.makeSuite(NodeTestCase, 'test_')
index 6947c93578dcc77fb609e931602711b804710bd7..1a80d5af1c966a6adfddb854c24288df313113fc 100644 (file)
@@ -513,7 +513,7 @@ class Node:
     def get_prevsiginfo(self):
         """Fetch the previous signature information from the
         .sconsign entry."""
-        return None
+        return SCons.Sig._SConsign.null_siginfo
 
     def get_timestamp(self):
         return 0
index 36145cb5148c5c07436d33d32a7755866bfb1674..b4b70b4cfbb1cae9cb8c2fa13ab6f3bd3d6d6454 100644 (file)
@@ -103,6 +103,11 @@ class _SConsign:
         global sig_files
         sig_files.append(self)
 
+    # A null .sconsign entry.  We define this here so that it will
+    # be easy to keep this in sync if/whenever we change the type of
+    # information returned by the get() method, below.
+    null_siginfo = (None, None, None)
+
     def get(self, filename):
         """
         Get the .sconsign entry for a file
@@ -321,15 +326,15 @@ class Calculator:
             return csig
         
         if self.max_drift >= 0:
-            info = node.get_prevsiginfo()
+            oldtime, oldbsig, oldcsig = node.get_prevsiginfo()
         else:
-            info = None
+            oldtime, oldbsig, oldcsig = _SConsign.null_siginfo
 
         mtime = node.get_timestamp()
 
-        if (info and info[0] and info[2] and info[0] == mtime):
+        if (oldtime and oldcsig and oldtime == mtime):
             # use the signature stored in the .sconsign file
-            csig = info[2]
+            csig = oldcsig
             # Set the csig here so it doesn't get recalculated unnecessarily
             # and so it's set when the .sconsign file gets written
             cache.set_csig(csig)