From d53b7d9daa7732b5070b2fd9f272775fd6ae96bf Mon Sep 17 00:00:00 2001 From: Joshua Cannon Date: Tue, 15 Dec 2020 15:00:31 -0600 Subject: [PATCH 1/5] Simplify temporary_directory and use safe_rmtree --- poetry/core/utils/helpers.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/poetry/core/utils/helpers.py b/poetry/core/utils/helpers.py index 920e14288..f2de92592 100644 --- a/poetry/core/utils/helpers.py +++ b/poetry/core/utils/helpers.py @@ -34,17 +34,9 @@ def normalize_version(version): # type: (str) -> str @contextmanager def temporary_directory(*args, **kwargs): - try: - from tempfile import TemporaryDirectory - - with TemporaryDirectory(*args, **kwargs) as name: - yield name - except ImportError: - name = tempfile.mkdtemp(*args, **kwargs) - try: - yield name - finally: - shutil.rmtree(name) + name = tempfile.mkdtemp(*args, **kwargs) + yield name + safe_rmtree(name) def parse_requires(requires): # type: (str) -> List[str] From 38792f381a2fff8a26e7b85d64a427975399251e Mon Sep 17 00:00:00 2001 From: Joshua Cannon Date: Tue, 15 Dec 2020 15:08:05 -0600 Subject: [PATCH 2/5] Add unit test --- tests/utils/test_helpers.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/utils/test_helpers.py b/tests/utils/test_helpers.py index 267e83296..5b622ac99 100644 --- a/tests/utils/test_helpers.py +++ b/tests/utils/test_helpers.py @@ -1,7 +1,12 @@ +import os +import pathlib +from stat import S_IREAD + import pytest from poetry.core.utils.helpers import canonicalize_name from poetry.core.utils.helpers import parse_requires +from poetry.core.utils.helpers import temporary_directory def test_parse_requires(): @@ -62,3 +67,10 @@ def test_parse_requires(): ) def test_utils_helpers_canonical_names(raw): assert canonicalize_name(raw) == "a-b-c" + + +def test_utils_helpers_temporary_directory_readonly_file(): + with temporary_directory() as temp_dir: + readonly_file = pathlib.Path(temp_dir, "file.txt") + readonly_file.touch() + os.chmod(str(readonly_file), S_IREAD) From a2829f8361154e643b42eaa46ac7e3f24740cef1 Mon Sep 17 00:00:00 2001 From: Joshua Cannon Date: Tue, 15 Dec 2020 15:09:34 -0600 Subject: [PATCH 3/5] Fix flake8 error --- tests/utils/test_helpers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/utils/test_helpers.py b/tests/utils/test_helpers.py index 5b622ac99..eb21a0de5 100644 --- a/tests/utils/test_helpers.py +++ b/tests/utils/test_helpers.py @@ -1,5 +1,6 @@ import os import pathlib + from stat import S_IREAD import pytest From 0ac50801a313b20f2dc247e5393dcd7f756e1a21 Mon Sep 17 00:00:00 2001 From: Joshua Cannon Date: Tue, 15 Dec 2020 15:12:43 -0600 Subject: [PATCH 4/5] Fix python 2.7 --- tests/utils/test_helpers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/utils/test_helpers.py b/tests/utils/test_helpers.py index eb21a0de5..9bff98188 100644 --- a/tests/utils/test_helpers.py +++ b/tests/utils/test_helpers.py @@ -1,5 +1,4 @@ import os -import pathlib from stat import S_IREAD @@ -72,6 +71,7 @@ def test_utils_helpers_canonical_names(raw): def test_utils_helpers_temporary_directory_readonly_file(): with temporary_directory() as temp_dir: - readonly_file = pathlib.Path(temp_dir, "file.txt") - readonly_file.touch() - os.chmod(str(readonly_file), S_IREAD) + readonly_filename = os.path.join(temp_dir, "file.txt") + with open(readonly_filename, "w+") as readonly_file: + readonly_file.write("Poetry rocks!") + os.chmod(str(readonly_filename), S_IREAD) From 6ea5c188dd99dc037a55aa5573a14ce58408f874 Mon Sep 17 00:00:00 2001 From: Joshua Cannon Date: Mon, 21 Dec 2020 11:09:16 -0600 Subject: [PATCH 5/5] Assert the paths no longer exist --- tests/utils/test_helpers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/utils/test_helpers.py b/tests/utils/test_helpers.py index 9bff98188..8ca49b9a5 100644 --- a/tests/utils/test_helpers.py +++ b/tests/utils/test_helpers.py @@ -75,3 +75,6 @@ def test_utils_helpers_temporary_directory_readonly_file(): with open(readonly_filename, "w+") as readonly_file: readonly_file.write("Poetry rocks!") os.chmod(str(readonly_filename), S_IREAD) + + assert not os.path.exists(temp_dir) + assert not os.path.exists(readonly_filename)