diff options
author | Adam Gross <grossag@vmware.com> | 2020-01-10 14:58:22 (GMT) |
---|---|---|
committer | Adam Gross <grossag@vmware.com> | 2020-01-10 15:04:10 (GMT) |
commit | d5ddf6ddf5c9a061ac0173e8887ce6e3e6bd5a30 (patch) | |
tree | 82704c4b0fd8868b57e20cb69c574fb5fb79df6a /src/engine/SCons/Node/PythonTests.py | |
parent | e6dc8216872085749db83e14c9545cabb1ed0483 (diff) | |
parent | 9340ef85fea770d01d416ac2dbc2f4991a67e027 (diff) | |
download | SCons-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.py | 40 |
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() |