Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions stub_uploader/build_wheel.py
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ def generate_long_description(

def main(
typeshed_dir: str, distribution: str, version: str, build_dir: str | None = None
) -> str:
) -> Path:
"""Generate a wheel for a third-party distribution in typeshed.

Return the path to directory where wheel is created.
Expand Down Expand Up @@ -470,7 +470,7 @@ def main(
[sys.executable, "-m", "build", "--no-isolation"],
cwd=tmpdir,
)
return f"{tmpdir}/dist"
return Path(tmpdir) / "dist"


if __name__ == "__main__":
Expand All @@ -480,7 +480,7 @@ def main(
parser.add_argument("distribution", help="Third-party distribution to build")
parser.add_argument("version", help="New stub version")
args = parser.parse_args()
print(
"Wheel is built in:",
main(args.typeshed_dir, args.distribution, args.version, args.build_dir),
build_path = main(
args.typeshed_dir, args.distribution, args.version, args.build_dir
)
print(f"Wheel is built in: {build_path}")
3 changes: 1 addition & 2 deletions stub_uploader/upload.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from __future__ import annotations

import os
import subprocess

from stub_uploader import build_wheel
Expand Down Expand Up @@ -47,7 +46,7 @@ def upload_distribution(
if dry_run or not metadata.upload:
print("skipped")
else:
subprocess.run(["twine", "upload", os.path.join(temp_dir, "*")], check=True)
subprocess.run(["twine", "upload", str(temp_dir / "*")], check=True)
uploaded_packages.add(distribution)
print("ok")
print()
32 changes: 29 additions & 3 deletions tests/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import os
from pathlib import Path
from tempfile import TemporaryDirectory
from zipfile import ZipFile

import pytest
from packaging.requirements import Requirement
Expand Down Expand Up @@ -40,9 +42,33 @@ def test_fetch_pypi_versions() -> None:
@pytest.mark.parametrize("distribution", os.listdir(THIRD_PARTY_PATH))
def test_build_wheel(distribution: str) -> None:
"""Check that we can build wheels for all distributions."""
tmp_dir = build_wheel.main(TYPESHED, distribution, version="1.1.1")
assert tmp_dir.endswith("/dist")
assert list(os.listdir(tmp_dir)) # check it is not empty
with TemporaryDirectory(prefix="stub-uploader-") as tmp_dir:
build_path = build_wheel.main(
TYPESHED, distribution, version="1.1.1", build_dir=tmp_dir
)
assert build_path.name == "dist"
assert list(build_path.iterdir()) # check it is not empty


@pytest.mark.parametrize(
"distribution,file_list",
[
("flake8", [Path("flake8-stubs") / "checker.pyi"]),
("protobuf", [Path("google-stubs") / "protobuf" / "__init__.pyi"]),
],
)
def test_build_wheel_files(distribution: str, file_list: list[Path]) -> None:
"""Assert that a wheel contains certain files."""
with TemporaryDirectory(prefix="stub-uploader-") as tmp_dir:
build_path = build_wheel.main(
TYPESHED, distribution, version="1.1.1", build_dir=tmp_dir
)
wheels = list(build_path.glob("*.whl"))
assert len(wheels) == 1
with ZipFile(wheels[0], "r") as zip_file:
zip_file.extractall(build_path)
for file_path in file_list:
assert build_path.joinpath(file_path).exists()


@pytest.mark.parametrize("distribution", os.listdir(THIRD_PARTY_PATH))
Expand Down