diff --git a/src/coredumpy/utils.py b/src/coredumpy/utils.py index 86c9e1e..7c4fd05 100644 --- a/src/coredumpy/utils.py +++ b/src/coredumpy/utils.py @@ -4,6 +4,7 @@ import datetime import os +import re def get_dump_filename(frame, path, directory): @@ -15,6 +16,8 @@ def get_dump_filename(frame, path, directory): return os.path.abspath(path) funcname = os.path.basename(frame.f_code.co_name) + funcname = re.sub(r"[^a-zA-Z0-9_]", "", funcname) + d = datetime.datetime.now() filename = f"coredumpy_{funcname}_{d.strftime('%Y%m%d_%H%M%S_%f')}.dump" diff --git a/tests/base.py b/tests/base.py index 056e187..21f05e8 100644 --- a/tests/base.py +++ b/tests/base.py @@ -40,8 +40,8 @@ def run_script(self, script, expected_returncode=0): process = subprocess.Popen(normalize_commands(["python", f"{tmpdir}/script.py"]), stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() - self.assertEqual(process.returncode, expected_returncode, - f"script failed with return code {process.returncode}\n{stderr}") stdout = stdout.decode() stderr = stderr.decode() + self.assertEqual(process.returncode, expected_returncode, + f"script failed with return code {process.returncode}\n{stderr}") return stdout, stderr diff --git a/tests/test_utils.py b/tests/test_utils.py index 412c1fb..8613d70 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -8,16 +8,19 @@ from .base import TestBase -class TestUtils(TestBase): - def test_get_dump_filename(self): - class FakeFrame: - def __init__(self, name): - self.f_code = FakeCode(name) +class FakeCode: + def __init__(self, name): + self.co_name = name + - class FakeCode: - def __init__(self, name): - self.co_name = name +class FakeFrame: + def __init__(self, name): + self.f_code = FakeCode(name) + +class TestUtils(TestBase): + + def test_get_dump_filename(self): frame = FakeFrame("test_get_dump_filename") filename = get_dump_filename(frame, None, None) self.assertEqual(filename, os.path.abspath(filename)) @@ -36,3 +39,9 @@ def __init__(self, name): with self.assertRaises(ValueError): filename = get_dump_filename(frame, "test.dump", "dir") + + def test_escape_name(self): + frame = FakeFrame("") + filename = get_dump_filename(frame, None, None) + self.assertNotIn("<", filename) + self.assertNotIn(">", filename)