diff options
| author | Steven Knight <knight@baldmt.com> | 2001-10-02 03:15:32 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2001-10-02 03:15:32 (GMT) |
| commit | 321aa365f5770b70be13631f717be8ecfeaf70f2 (patch) | |
| tree | 683c28579fef2fe9a942693357dd5ca9a46e2514 /src/engine/SCons/Node | |
| parent | 97446895b5e0d92057123a962f45856009ff6bb9 (diff) | |
| download | SCons-321aa365f5770b70be13631f717be8ecfeaf70f2.zip SCons-321aa365f5770b70be13631f717be8ecfeaf70f2.tar.gz SCons-321aa365f5770b70be13631f717be8ecfeaf70f2.tar.bz2 | |
Handle build errors.
Diffstat (limited to 'src/engine/SCons/Node')
| -rw-r--r-- | src/engine/SCons/Node/FSTests.py | 5 | ||||
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 19 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 8 |
3 files changed, 30 insertions, 2 deletions
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index 8e7e2a6..1cffd8c 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -6,17 +6,22 @@ import unittest import SCons.Node.FS + + built_it = None class Builder: def execute(self, **kw): global built_it built_it = 1 + return 0 class Environment: def Dictionary(self, *args): pass + + class FSTestCase(unittest.TestCase): def runTest(self): """Test FS (file system) Node operations diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index 738c7cc..26cf6bd 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -4,6 +4,7 @@ import os import sys import unittest +import SCons.Errors import SCons.Node @@ -14,6 +15,11 @@ class Builder: def execute(self, **kw): global built_it built_it = 1 + return 0 + +class FailBuilder: + def execute(self, **kw): + return 1 class Environment: def Dictionary(self, *args): @@ -23,6 +29,19 @@ class Environment: class NodeTestCase(unittest.TestCase): + def test_BuildException(self): + """Test throwing an exception on build failure. + """ + node = SCons.Node.Node() + node.builder_set(FailBuilder()) + node.env_set(Environment()) + try: + node.build() + except SCons.Errors.BuildError: + pass + else: + raise TestFailed, "did not catch expected BuildError" + def test_build(self): """Test building a node """ diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 4f414ec..de15712 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -8,6 +8,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" +from SCons.Errors import BuildError import string @@ -25,8 +26,11 @@ class Node: def build(self): sources_str = string.join(map(lambda x: str(x), self.sources)) - self.builder.execute(ENV = self.env.Dictionary('ENV'), - target = str(self), source = sources_str) + stat = self.builder.execute(ENV = self.env.Dictionary('ENV'), + target = str(self), source = sources_str) + if stat != 0: + raise BuildError(node = self, stat = stat) + return stat def builder_set(self, builder): self.builder = builder |
