tracemalloc: filter_traces() raises a TypeError if filters is not an iterable

This commit is contained in:
Victor Stinner 2014-03-10 11:05:07 +01:00
parent bcfcfc51f8
commit 8ce8ff9ac7
2 changed files with 6 additions and 1 deletions

View File

@ -346,6 +346,8 @@ class TestSnapshot(unittest.TestCase):
self.assertIsNot(snapshot5.traces, snapshot.traces)
self.assertEqual(snapshot5.traces, snapshot.traces)
self.assertRaises(TypeError, snapshot.filter_traces, filter1)
def test_snapshot_group_by_line(self):
snapshot, snapshot2 = create_snapshots()
tb_0 = traceback_lineno('<unknown>', 0)

View File

@ -1,4 +1,4 @@
from collections import Sequence
from collections import Sequence, Iterable
from functools import total_ordering
import fnmatch
import linecache
@ -382,6 +382,9 @@ class Snapshot:
is a list of Filter instances. If filters is an empty list, return a
new Snapshot instance with a copy of the traces.
"""
if not isinstance(filters, Iterable):
raise TypeError("filters must be a list of filters, not %s"
% type(filters).__name__)
if filters:
include_filters = []
exclude_filters = []