From 3a9f0934c41c85ea7fa87165b9559f08814645cd Mon Sep 17 00:00:00 2001 From: Kelly Brazil <kellyjonbrazil@gmail.com> Date: Tue, 30 Nov 2021 09:56:33 -0800 Subject: [PATCH] add input type checks --- jc/parsers/ls_s.py | 6 ++++-- tests/test_ls_s.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/jc/parsers/ls_s.py b/jc/parsers/ls_s.py index 48e80d57..cb7b33f5 100644 --- a/jc/parsers/ls_s.py +++ b/jc/parsers/ls_s.py @@ -123,13 +123,15 @@ def parse(data, raw=False, quiet=False, ignore_exceptions=False): Iterator object """ - if not quiet: - jc.utils.compatibility(__name__, info.compatible) + if not quiet: jc.utils.compatibility(__name__, info.compatible) + if not hasattr(data, '__iter__') or isinstance(data, (str, bytes)): + raise TypeError("Input data must be a non-string iterable object.") parent = '' for line in data: try: + if not isinstance(line, str): raise TypeError("Input line must be a 'str' object.") # skip line if it starts with 'total 1234' if re.match(r'total [0-9]+', line): diff --git a/tests/test_ls_s.py b/tests/test_ls_s.py index 2922a487..a4fcac78 100644 --- a/tests/test_ls_s.py +++ b/tests/test_ls_s.py @@ -103,7 +103,7 @@ class MyTests(unittest.TestCase): """ Test plain 'ls' on an empty directory """ - self.assertEqual(list(jc.parsers.ls_s.parse('', quiet=True)), []) + self.assertEqual(list(jc.parsers.ls_s.parse([], quiet=True)), []) def test_ls_s_centos_7_7_raise_exception(self): """