Skip to content

Commit

Permalink
712 Handle EOFErrror with malformed file (#714)
Browse files Browse the repository at this point in the history
* Handle EOFError on package upload

* Linting
  • Loading branch information
nicholasserra committed Nov 12, 2020
1 parent 099ae0e commit 668f4db
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
Binary file added tests/fixtures/malformed.tar.gz
Binary file not shown.
10 changes: 10 additions & 0 deletions tests/test_package.py
Expand Up @@ -254,3 +254,13 @@ def EmptyDist(filename):
package_file.PackageFile.from_filename(filename, comment=None)

assert "Invalid distribution metadata" in err.value.args[0]


def test_malformed_from_file(monkeypatch):
"""Raise an exception when malformed package file triggers EOFError."""
filename = "tests/fixtures/malformed.tar.gz"

with pytest.raises(exceptions.InvalidDistribution) as err:
package_file.PackageFile.from_filename(filename, comment=None)

assert "Invalid distribution file" in err.value.args[0]
10 changes: 8 additions & 2 deletions twine/package.py
Expand Up @@ -76,8 +76,14 @@ def from_filename(cls, filename: str, comment: Optional[str]) -> "PackageFile":
# Extract the metadata from the package
for ext, dtype in DIST_EXTENSIONS.items():
if filename.endswith(ext):
meta = DIST_TYPES[dtype](filename)
break
try:
meta = DIST_TYPES[dtype](filename)
except EOFError:
raise exceptions.InvalidDistribution(
"Invalid distribution file: '%s'" % os.path.basename(filename)
)
else:
break
else:
raise exceptions.InvalidDistribution(
"Unknown distribution format: '%s'" % os.path.basename(filename)
Expand Down

0 comments on commit 668f4db

Please sign in to comment.