Skip to content

Commit 511d753

Browse files
authored
Ensure list access is performed after the length check (#2265)
1 parent bf331a5 commit 511d753

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

poetry/masonry/utils/package_include.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,12 @@ def refresh(self): # type: () -> PackageInclude
3434
return self.check_elements()
3535

3636
def check_elements(self): # type: () -> PackageInclude
37-
root = self._elements[0]
38-
3937
if not self._elements:
4038
raise ValueError(
4139
"{} does not contain any element".format(self._base / self._include)
4240
)
4341

42+
root = self._elements[0]
4443
if len(self._elements) > 1:
4544
# Probably glob
4645
self._is_package = True

tests/masonry/utils/test_package_include.py

+9
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,12 @@ def test_package_include_with_no_python_files_in_dir():
4141
PackageInclude(base=with_includes, include="not_a_python_pkg")
4242

4343
assert str(e.value) == "not_a_python_pkg is not a package."
44+
45+
46+
def test_package_include_with_non_existent_directory():
47+
with pytest.raises(ValueError) as e:
48+
PackageInclude(base=with_includes, include="not_a_dir")
49+
50+
err_str = str(with_includes / "not_a_dir") + " does not contain any element"
51+
52+
assert str(e.value) == err_str

0 commit comments

Comments
 (0)