diff options
| author | Steven Knight <knight@baldmt.com> | 2004-12-17 02:15:25 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2004-12-17 02:15:25 (GMT) |
| commit | 5a53a86e487de2c6d93bf5f8a1df1ae61f983a67 (patch) | |
| tree | 17355dfd6143b1d5cec76e519f51ca5bdff0ddeb /src | |
| parent | ac942908a6f1ee9291ff4a8a21e6d4d4fbc41f64 (diff) | |
| download | SCons-5a53a86e487de2c6d93bf5f8a1df1ae61f983a67.zip SCons-5a53a86e487de2c6d93bf5f8a1df1ae61f983a67.tar.gz SCons-5a53a86e487de2c6d93bf5f8a1df1ae61f983a67.tar.bz2 | |
Make AlwaysBuild() work with Aliases.
Diffstat (limited to 'src')
| -rw-r--r-- | src/CHANGES.txt | 4 | ||||
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 57 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 2 |
3 files changed, 35 insertions, 28 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index c59f61f..e97ea15 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -159,6 +159,10 @@ RELEASE 0.97 - XXX matter whether the dependency file is in a Repository or not. This may cause recompilations upon upgrade to this version. + - Make AlwaysBuild() work with Alias and Python value Nodes (making + it much simpler to support aliases like "clean" that just invoke + an arbitrary action). + From Wayne Lee: - Avoid "maximum recursion limit" errors when removing $(-$) pairs diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index 335c1a5..3c402d0 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -186,6 +186,18 @@ class MyNode(SCons.Node.Node): def get_found_includes(self, env, scanner, target): return scanner(self) +class Calculator: + def __init__(self, val): + self.max_drift = 0 + class M: + def __init__(self, val): + self.val = val + def signature(self, args): + return self.val + def collect(self, args): + return reduce(lambda x, y: x+y, args, self.val) + self.module = M(val) + class NodeTestCase(unittest.TestCase): @@ -445,6 +457,23 @@ class NodeTestCase(unittest.TestCase): node = SCons.Node.Node() assert node.current() is None + def test_children_are_up_to_date(self): + """Test the children_are_up_to_date() method used by subclasses + """ + n1 = SCons.Node.Node() + n2 = SCons.Node.Node() + + calc = Calculator(111) + + n1.add_source(n2) + assert n1.children_are_up_to_date(calc), "expected up to date" + n2.set_state(SCons.Node.executed) + assert not n1.children_are_up_to_date(calc), "expected not up to date" + n2.set_state(SCons.Node.up_to_date) + assert n1.children_are_up_to_date(calc), "expected up to date" + n1.always_build = 1 + assert not n1.children_are_up_to_date(calc), "expected not up to date" + def test_env_set(self): """Test setting a Node's Environment """ @@ -464,15 +493,6 @@ class NodeTestCase(unittest.TestCase): def test_calc_bsig(self): """Test generic build signature calculation """ - class Calculator: - def __init__(self, val): - self.max_drift = 0 - class M: - def __init__(self, val): - self.val = val - def collect(self, args): - return reduce(lambda x, y: x+y, args, self.val) - self.module = M(val) node = SCons.Node.Node() result = node.calc_bsig(Calculator(222)) assert result == 222, result @@ -482,15 +502,6 @@ class NodeTestCase(unittest.TestCase): def test_calc_csig(self): """Test generic content signature calculation """ - class Calculator: - def __init__(self, val): - self.max_drift = 0 - class M: - def __init__(self, val): - self.val = val - def signature(self, args): - return self.val - self.module = M(val) node = SCons.Node.Node() result = node.calc_csig(Calculator(444)) assert result == 444, result @@ -500,16 +511,6 @@ class NodeTestCase(unittest.TestCase): def test_gen_binfo(self): """Test generating a build information structure """ - class Calculator: - def __init__(self, val): - self.max_drift = 0 - class M: - def __init__(self, val): - self.val = val - def collect(self, args): - return reduce(lambda x, y: x+y, args, self.val) - self.module = M(val) - node = SCons.Node.Node() binfo = node.gen_binfo(Calculator(666)) assert isinstance(binfo, SCons.Node.BuildInfo), binfo diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index f0e750b..c7a652d 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -839,6 +839,8 @@ class Node: rebind their current() method to this method.""" # Allow the children to calculate their signatures. self.binfo = self.gen_binfo(calc) + if self.always_build: + return None state = 0 for kid in self.children(None): s = kid.get_state() |
