diff options
| author | Steven Knight <knight@baldmt.com> | 2003-07-23 14:20:43 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2003-07-23 14:20:43 (GMT) |
| commit | 5d238601a22fa009de4df38e0257c405f9b243db (patch) | |
| tree | fb5cb1676ff40c4f66c49b4fb5893fa30d72765a /src/engine/SCons/Node | |
| parent | 628a6c6cbdbcbcceec438d2063f51b16e65f37aa (diff) | |
| download | SCons-5d238601a22fa009de4df38e0257c405f9b243db.zip SCons-5d238601a22fa009de4df38e0257c405f9b243db.tar.gz SCons-5d238601a22fa009de4df38e0257c405f9b243db.tar.bz2 | |
Fix a problem when using --cache-show.
Diffstat (limited to 'src/engine/SCons/Node')
| -rw-r--r-- | src/engine/SCons/Node/FS.py | 11 | ||||
| -rw-r--r-- | src/engine/SCons/Node/FSTests.py | 30 |
2 files changed, 34 insertions, 7 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index a17cee0..12b8869 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -1246,11 +1246,12 @@ class File(Entry): if self.fs.cache_show: if CacheRetrieveSilent(self, None, None) == 0: def do_print(action, targets, sources, env, self=self): - al = action.strfunction(targets, self.sources, env) - if not SCons.Util.is_List(al): - al = [al] - for a in al: - action.show(a) + if action.strfunction: + al = action.strfunction(targets, self.sources, env) + if not SCons.Util.is_List(al): + al = [al] + for a in al: + action.show(a) self._for_each_action(do_print) return elif CacheRetrieve(self, None, None) == 0: diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index 13f171e..a80c8f9 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -86,11 +86,11 @@ class Action: return [self] class Builder: - def __init__(self, factory): + def __init__(self, factory, action=Action()): self.factory = factory self.env = Environment() self.overrides = {} - self.action = Action() + self.action = action def get_actions(self): return [self] @@ -1499,6 +1499,32 @@ class CacheDirTestCase(unittest.TestCase): SCons.Warnings.warningAsException(old_warn_exceptions) SCons.Warnings.suppressWarningClass(SCons.Warnings.CacheWriteErrorWarning) + # Verify that we don't blow up if there's no strfunction() + # for an action. + act = Action() + act.strfunction = None + f8 = fs.File("cd.f8") + f8.builder_set(Builder(fs.File, action=act)) + f8.env_set(Environment()) + try: + SCons.Node.FS.CacheRetrieveSilent = retrieve_succeed + self.retrieved = [] + built_it = None + + f8.build() + assert self.retrieved == [f8], self.retrieved + assert built_it is None, built_it + + SCons.Node.FS.CacheRetrieveSilent = retrieve_fail + self.retrieved = [] + built_it = None + + f8.build() + assert self.retrieved == [f8], self.retrieved + assert built_it, built_it + finally: + SCons.Node.FS.CacheRetrieveSilent = save_CacheRetrieveSilent + class clearTestCase(unittest.TestCase): def runTest(self): fs = SCons.Node.FS.FS() |
