| Index: tools/code_coverage/croc.py
|
| ===================================================================
|
| --- tools/code_coverage/croc.py (revision 39945)
|
| +++ tools/code_coverage/croc.py (working copy)
|
| @@ -52,6 +52,14 @@
|
| class CoverageStats(dict):
|
| """Coverage statistics."""
|
|
|
| + # Default dictionary values for this stat.
|
| + DEFAULTS = { 'files_covered': 0,
|
| + 'files_instrumented': 0,
|
| + 'files_executable': 0,
|
| + 'lines_covered': 0,
|
| + 'lines_instrumented': 0,
|
| + 'lines_executable': 0 }
|
| +
|
| def Add(self, coverage_stats):
|
| """Adds a contribution from another coverage stats dict.
|
|
|
| @@ -64,6 +72,15 @@
|
| else:
|
| self[k] = v
|
|
|
| + def AddDefaults(self):
|
| + """Add some default stats which might be assumed present.
|
| +
|
| + Do not clobber if already present. Adds resilience when evaling a
|
| + croc file which expects certain stats to exist."""
|
| + for k, v in self.DEFAULTS.iteritems():
|
| + if not k in self:
|
| + self[k] = v
|
| +
|
| #------------------------------------------------------------------------------
|
|
|
|
|
| @@ -399,6 +416,10 @@
|
| return default
|
|
|
| stats = self.tree.stats_by_group[group]
|
| + # Unit tests use real dicts, not CoverageStats objects,
|
| + # so we can't AddDefaults() on them.
|
| + if group == 'all' and hasattr(stats, 'AddDefaults'):
|
| + stats.AddDefaults()
|
| try:
|
| return eval(stat, {'__builtins__': {'S': self.GetStat}}, stats)
|
| except Exception, e:
|
|
|