summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node/PythonTests.py
diff options
context:
space:
mode:
authorAdam Gross <grossag@vmware.com>2020-01-10 14:58:22 (GMT)
committerAdam Gross <grossag@vmware.com>2020-01-10 15:04:10 (GMT)
commitd5ddf6ddf5c9a061ac0173e8887ce6e3e6bd5a30 (patch)
tree82704c4b0fd8868b57e20cb69c574fb5fb79df6a /src/engine/SCons/Node/PythonTests.py
parente6dc8216872085749db83e14c9545cabb1ed0483 (diff)
parent9340ef85fea770d01d416ac2dbc2f4991a67e027 (diff)
downloadSCons-d5ddf6ddf5c9a061ac0173e8887ce6e3e6bd5a30.zip
SCons-d5ddf6ddf5c9a061ac0173e8887ce6e3e6bd5a30.tar.gz
SCons-d5ddf6ddf5c9a061ac0173e8887ce6e3e6bd5a30.tar.bz2
Merge branch 'master' into topic/grossag/valuename
Diffstat (limited to 'src/engine/SCons/Node/PythonTests.py')
-rw-r--r--src/engine/SCons/Node/PythonTests.py40
1 files changed, 37 insertions, 3 deletions
diff --git a/src/engine/SCons/Node/PythonTests.py b/src/engine/SCons/Node/PythonTests.py
index 9d3c6b5..45248d3 100644
--- a/src/engine/SCons/Node/PythonTests.py
+++ b/src/engine/SCons/Node/PythonTests.py
@@ -23,14 +23,13 @@
__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
-import sys
import unittest
import SCons.Errors
import SCons.Node.Python
-class ValueTestCase(unittest.TestCase):
+class ValueTestCase(unittest.TestCase):
def test_Value(self):
"""Test creating a Value() object
"""
@@ -42,7 +41,7 @@ class ValueTestCase(unittest.TestCase):
assert v2.value == value2, v2.value
assert v2.value is value2, v2.value
- assert not v1 is v2
+ assert v1 is not v2
assert v1.value == v2.value
v3 = SCons.Node.Python.Value('c', 'cb')
@@ -98,12 +97,14 @@ class ValueTestCase(unittest.TestCase):
csig = v3.get_csig(None)
assert csig == 'None', csig
+
class ValueNodeInfoTestCase(unittest.TestCase):
def test___init__(self):
"""Test ValueNodeInfo initialization"""
vvv = SCons.Node.Python.Value('vvv')
ni = SCons.Node.Python.ValueNodeInfo()
+
class ValueBuildInfoTestCase(unittest.TestCase):
def test___init__(self):
"""Test ValueBuildInfo initialization"""
@@ -121,6 +122,39 @@ class ValueChildTestCase(unittest.TestCase):
contents = node.get_contents()
assert len(contents) > 0
+
+class ValueMemoTestCase(unittest.TestCase):
+ def test_memo(self):
+ """Test memoization"""
+ # First confirm that ValueWithMemo does memoization.
+ value1 = SCons.Node.Python.ValueWithMemo('vvv')
+ value2 = SCons.Node.Python.ValueWithMemo('vvv')
+ assert value1 is value2
+
+ # Next confirm that ValueNodeInfo.str_to_node does memoization using
+ # the same cache as ValueWithMemo.
+ ni = SCons.Node.Python.ValueNodeInfo()
+ value3 = ni.str_to_node('vvv')
+ assert value1 is value3
+
+ def test_built_value(self):
+ """Confirm that built values are not memoized."""
+ v1 = SCons.Node.Python.ValueWithMemo('c', 'ca')
+ v2 = SCons.Node.Python.ValueWithMemo('c', 'ca')
+ assert v1 is not v2
+
+ def test_non_primitive_values(self):
+ """Confirm that non-primitive values are not memoized."""
+ d = {'a': 1}
+ v1 = SCons.Node.Python.ValueWithMemo(d)
+ v2 = SCons.Node.Python.ValueWithMemo(d)
+ assert v1 is not v2
+
+ a = [1]
+ v3 = SCons.Node.Python.ValueWithMemo(a)
+ v4 = SCons.Node.Python.ValueWithMemo(a)
+ assert v3 is not v4
+
if __name__ == "__main__":
unittest.main()