From c85f3486e003b0beb666cf472e7f1e37d759afd5 Mon Sep 17 00:00:00 2001 From: Michael Krebs Date: Fri, 17 Jun 2022 11:24:09 -0400 Subject: [PATCH 1/2] Fix globbing of filenames that contain special glob characters --- coverage/data.py | 2 +- coverage/sqldata.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coverage/data.py b/coverage/data.py index f605e1644..e3dcab4de 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 = os.path.join(os.path.abspath(p), f"{glob.escape(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..465e113a0 100644 --- a/coverage/sqldata.py +++ b/coverage/sqldata.py @@ -774,7 +774,7 @@ def erase(self, parallel=False): file_be_gone(self._filename) if parallel: data_dir, local = os.path.split(self._filename) - localdot = local + ".*" + localdot = glob.escape(local) + ".*" pattern = os.path.join(os.path.abspath(data_dir), localdot) for filename in glob.glob(pattern): if self._debug.should("dataio"): From a69241c62e22855c15cadf081c21f2b453f7c723 Mon Sep 17 00:00:00 2001 From: Michael Krebs Date: Mon, 1 Aug 2022 12:19:16 -0400 Subject: [PATCH 2/2] 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 e3dcab4de..8906cd251 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"{glob.escape(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 465e113a0..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 = glob.escape(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}")