diff options
Diffstat (limited to 'src/engine/SCons/Node')
| -rw-r--r-- | src/engine/SCons/Node/FS.py | 5 | ||||
| -rw-r--r-- | src/engine/SCons/Node/FSTests.py | 6 | ||||
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 9 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 11 |
4 files changed, 31 insertions, 0 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 2ce1151..7c19b81 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -566,5 +566,10 @@ class File(Entry): Entry.build(self) self.exists_flag = self.exists() + def remove(self): + """Remove this file.""" + if self.exists(): + os.unlink(self.path) + default_fs = FS() diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index 12dfdbe..2b3ba37 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -438,6 +438,12 @@ class FSTestCase(unittest.TestCase): nonexistent(fs.Dir, 'nonexistent') nonexistent(fs.Dir, 'nonexistent/foo') + test.write("remove_me", "\n") + assert os.path.exists(test.workpath("remove_me")) + f1 = fs.File(test.workpath("remove_me")) + f1.remove() + assert not os.path.exists(test.workpath("remove_me")) + #XXX test current() for directories #XXX test sconsign() for directories diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index aa9dccb..bcaf1a0 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -206,6 +206,15 @@ class NodeTestCase(unittest.TestCase): node.set_csig('zzz') assert node.get_csig() == 'zzz' + def test_set_precious(self): + """Test setting a Node's precious value + """ + node = SCons.Node.Node() + node.set_precious() + assert node.precious + node.set_precious(7) + assert node.precious == 7 + def test_add_dependency(self): """Test adding dependencies to a Node's list. """ diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 03705f7..02c14bb 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -70,11 +70,14 @@ class Node: self.bsig = None self.csig = None self.use_signature = 1 + self.precious = None def build(self): """Actually build the node. Return the status from the build.""" if not self.builder: return None + if not self.precious: + self.remove() try: stat = self.builder.execute(env = self.env.Dictionary(), target = self, source = self.sources) @@ -164,6 +167,14 @@ class Node: """Set the signature of the node's content.""" self.csig = csig + def set_precious(self, precious = 1): + """Set the Node's precious value.""" + self.precious = precious + + def remove(self): + """Remove this Node's external object: no-op by default.""" + pass + def add_dependency(self, depend): """Adds dependencies. The depend argument must be a list.""" self._add_child(self.depends, depend) |
