Fix --implicit-cache if the scanner returns an empty list. (Jeff Petkau)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 5 Jun 2002 02:51:24 +0000 (02:51 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 5 Jun 2002 02:51:24 +0000 (02:51 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@381 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Sig/SigTests.py
src/engine/SCons/Sig/__init__.py

index db75777dd492acdeabb92174c8134eb898658202..0d8e4750beef555c5f07564d421e89f3d492491b 100644 (file)
@@ -54,6 +54,10 @@ RELEASE 0.08 -
 
   - Added a --debug=time option to print SCons execution times.
 
+  From Jeff Petkau:
+
+  - Fix --implicit-cache if the scanner returns an empty list.
+
   From Zed Shaw:
 
   - Add an Append() method to Environments, to append values to
index 1004e6e377ff7001d91428fb952945cbeb38d21f..7931947e44535bbb13fedf67d8623d67cbc606bb 100644 (file)
@@ -495,6 +495,13 @@ class SConsignEntryTestCase(unittest.TestCase):
         assert e.get_implicit() == ['foo bletch', 'bar']
         assert e.render(m) == "123 456 789 foo bletch\0bar"
 
+        e = SCons.Sig.SConsignEntry(m, "987 654 321")
+        assert e.timestamp == 987
+        assert e.bsig == 654
+        assert e.csig == 321
+        assert e.get_implicit() == []
+        assert e.render(m) == "987 654 321 "   # note trailing space
+
 class SConsignFileTestCase(unittest.TestCase):
 
     def runTest(self):
index 2c8edadab78bd047895bf1798ddb94c0a4cdfc5b..a13557afca67e51d4d13776ec7cf39c0a0989816 100644 (file)
@@ -61,8 +61,9 @@ class SConsignEntry:
                 if arr[2] == '-': self.csig = None
                 else:             self.csig = module.from_string(arr[2])
 
-                if arr[3] == '-': self.implicit = None
-                else:             self.implicit = arr[3]
+                if len(arr) < 4:    self.implicit = ''
+                elif arr[3] == '-': self.implicit = None
+                else:               self.implicit = arr[3]
             except IndexError:
                 pass
 
@@ -82,8 +83,10 @@ class SConsignEntry:
         return '%s %s %s %s' % (timestamp, bsig, csig, implicit)
 
     def get_implicit(self):
-        if not self.implicit:
+        if self.implicit is None:
             return None
+        elif self.implicit == '':
+            return []
         else:
             return string.split(self.implicit, '\0')