From 36f508f98f74b44a1f7aed23f2beecb4189025ca Mon Sep 17 00:00:00 2001 From: earthman1 <30826762+earthman1@users.noreply.github.com> Date: Sat, 6 Aug 2022 14:57:19 -0400 Subject: [PATCH] fix: filenames can contain special glob characters (#1405) * Fix globbing of filenames that contain special glob characters * glob the path as well as the filename --- coverage/data.py | 2 +- coverage/sqldata.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/coverage/data.py b/coverage/data.py index b209cf157..4bdfe3010 100644 --- a/coverage/data.py +++ b/coverage/data.py @@ -70,7 +70,7 @@ def combinable_files(data_file, data_paths=None): if os.path.isfile(p): files_to_combine.append(os.path.abspath(p)) elif os.path.isdir(p): - pattern = os.path.join(os.path.abspath(p), f"{local}.*") + pattern = glob.escape(os.path.join(os.path.abspath(p), local)) +".*" files_to_combine.extend(glob.glob(pattern)) else: raise NoDataError(f"Couldn't combine from non-existent path '{p}'") diff --git a/coverage/sqldata.py b/coverage/sqldata.py index 8d2ed73a5..564d4ec93 100644 --- a/coverage/sqldata.py +++ b/coverage/sqldata.py @@ -774,8 +774,8 @@ def erase(self, parallel=False): file_be_gone(self._filename) if parallel: data_dir, local = os.path.split(self._filename) - localdot = local + ".*" - pattern = os.path.join(os.path.abspath(data_dir), localdot) + local_abs_path = os.path.join(os.path.abspath(data_dir), local) + pattern = glob.escape(local_abs_path) + ".*" for filename in glob.glob(pattern): if self._debug.should("dataio"): self._debug.write(f"Erasing parallel data file {filename!r}")