Apply Scanner.Scanner args to the Base class initialization correctly. (Kevin Quick)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sun, 26 Sep 2004 00:38:48 +0000 (00:38 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sun, 26 Sep 2004 00:38:48 +0000 (00:38 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@1104 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Scanner/ScannerTests.py
src/engine/SCons/Scanner/__init__.py

index 52bb9e8b48f0cae8c6ef8ac57afbc9e084327c6d..c111ffd7ab8e2308588f4bd74fb9e1df3ea14acb 100644 (file)
@@ -165,7 +165,8 @@ RELEASE 0.97 - XXX
   - Use the source_scanner from the target Node, not the source node
     itself.
 
-  - Enforce internally that Scanners are only passed Nodes.
+  - Enforce internally that Scanners are only passed Nodes.  Fix how a
+    Scanner.Selector called its base class initialization.
 
   From Christoph Wiedemann:
 
index 3c460c2893a86482311f6dea865bd1cb288df79c..2115c70afc677a4fda7f93ca406f2e9cda29cfbe 100644 (file)
@@ -82,6 +82,19 @@ class ScannerTestCase(unittest.TestCase):
         s = SCons.Scanner.Scanner({})
         assert isinstance(s, SCons.Scanner.Selector), s
 
+        s = SCons.Scanner.Scanner(func, name='fooscan')
+        assert str(s) == 'fooscan', str(s)
+        s = SCons.Scanner.Scanner({}, name='barscan')
+        assert str(s) == 'barscan', str(s)
+
+        s = SCons.Scanner.Scanner(func, name='fooscan', argument=9)
+        assert str(s) == 'fooscan', str(s)
+        assert s.argument == 9, s.argument
+        s = SCons.Scanner.Scanner({}, name='fooscan', argument=888)
+        assert str(s) == 'fooscan', str(s)
+        assert s.argument == 888, s.argument
+
+        
 class BaseTestCase(unittest.TestCase):
 
     def func(self, filename, env, target, *args):
index f134b2d4b7fb7649a9e7fc24458834a91c31d223..f1b85e84095f7541820373d5f9c017bb2152eef0 100644 (file)
@@ -244,7 +244,7 @@ class Selector(Base):
     scanner_key() (suffix) for a specific Node.
     """
     def __init__(self, dict, *args, **kw):
-        Base.__init__(self, (None,)+args, kw)
+        apply(Base.__init__, (self, None,)+args, kw)
         self.dict = dict
 
     def __call__(self, node, env, path = ()):