diff options
author | Ludwig Hähne <pankrat@tigris.org> | 2008-09-05 16:28:48 (GMT) |
---|---|---|
committer | Ludwig Hähne <pankrat@tigris.org> | 2008-09-05 16:28:48 (GMT) |
commit | 587587669d48a2cc6ccfc8295b573d225fe3cb60 (patch) | |
tree | bf934b697ada84dbfc66f744c5a6596f0f230792 | |
parent | 0dc55878f15880c32ace0c7d63b215b92587714f (diff) | |
download | SCons-587587669d48a2cc6ccfc8295b573d225fe3cb60.zip SCons-587587669d48a2cc6ccfc8295b573d225fe3cb60.tar.gz SCons-587587669d48a2cc6ccfc8295b573d225fe3cb60.tar.bz2 |
Issue 2176: BuilderWrapper __getattr__ should not raise KeyError
-rw-r--r-- | src/engine/SCons/Environment.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/EnvironmentTests.py | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/engine/SCons/Environment.py b/src/engine/SCons/Environment.py index 67881eb..1a4f5f5 100644 --- a/src/engine/SCons/Environment.py +++ b/src/engine/SCons/Environment.py @@ -230,7 +230,7 @@ class BuilderWrapper(MethodWrapper): elif name == 'builder': return self.method else: - return self.__dict__[name] + raise AttributeError, name def __setattr__(self, name, value): if name == 'env': diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py index 7e6d4ca..01e7e06 100644 --- a/src/engine/SCons/EnvironmentTests.py +++ b/src/engine/SCons/EnvironmentTests.py @@ -916,7 +916,28 @@ class BaseTestCase(unittest.TestCase,TestEnvironmentFixture): assert called_it['target'] == None, called_it assert called_it['source'] == None, called_it + def test_BuilderWrapper_attributes(self): + """Test getting and setting of BuilderWrapper attributes + """ + b1 = Builder() + b2 = Builder() + e1 = Environment() + e2 = Environment() + + e1.Replace(BUILDERS = {'b' : b1}) + bw = e1.b + + assert bw.env is e1 + bw.env = e2 + assert bw.env is e2 + + assert bw.builder is b1 + bw.builder = b2 + assert bw.builder is b2 + self.assertRaises(AttributeError, getattr, bw, 'foobar') + bw.foobar = 42 + assert bw.foobar is 42 # This unit test is currently disabled because we don't think the # underlying method it tests (Environment.BuilderWrapper.execute()) |