summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-10-02 03:15:32 (GMT)
committerSteven Knight <knight@baldmt.com>2001-10-02 03:15:32 (GMT)
commit321aa365f5770b70be13631f717be8ecfeaf70f2 (patch)
tree683c28579fef2fe9a942693357dd5ca9a46e2514 /src/engine/SCons/Node
parent97446895b5e0d92057123a962f45856009ff6bb9 (diff)
downloadSCons-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.py5
-rw-r--r--src/engine/SCons/Node/NodeTests.py19
-rw-r--r--src/engine/SCons/Node/__init__.py8
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