File: test_dists.py

package info (click to toggle)
python-gitlab 1%3A4.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 3,048 kB
  • sloc: python: 24,168; makefile: 171; ruby: 27; javascript: 3
file content (47 lines) | stat: -rw-r--r-- 1,513 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import subprocess
import sys
import tarfile
import zipfile
from pathlib import Path

import pytest

from gitlab._version import __title__, __version__

DOCS_DIR = "docs"
TEST_DIR = "tests"
DIST_NORMALIZED_TITLE = f"{__title__.replace('-', '_')}-{__version__}"
SDIST_FILE = f"{DIST_NORMALIZED_TITLE}.tar.gz"
WHEEL_FILE = f"{DIST_NORMALIZED_TITLE}-py{sys.version_info.major}-none-any.whl"
PY_TYPED = "gitlab/py.typed"


@pytest.fixture(scope="session")
def build(tmp_path_factory: pytest.TempPathFactory):
    temp_dir = tmp_path_factory.mktemp("build")
    subprocess.run([sys.executable, "-m", "build", "--outdir", temp_dir], check=True)
    return temp_dir


def test_sdist_includes_correct_files(build: Path) -> None:
    sdist = tarfile.open(build / SDIST_FILE, "r:gz")

    docs_dir = sdist.getmember(f"{DIST_NORMALIZED_TITLE}/{DOCS_DIR}")
    test_dir = sdist.getmember(f"{DIST_NORMALIZED_TITLE}/{TEST_DIR}")
    readme = sdist.getmember(f"{DIST_NORMALIZED_TITLE}/README.rst")
    py_typed = sdist.getmember(f"{DIST_NORMALIZED_TITLE}/{PY_TYPED}")

    assert docs_dir.isdir()
    assert test_dir.isdir()
    assert py_typed.isfile()
    assert readme.isfile()


def test_wheel_includes_correct_files(build: Path) -> None:
    wheel = zipfile.ZipFile(build / WHEEL_FILE)
    assert PY_TYPED in wheel.namelist()


def test_wheel_excludes_docs_and_tests(build: Path) -> None:
    wheel = zipfile.ZipFile(build / WHEEL_FILE)
    assert not any(file.startswith((DOCS_DIR, TEST_DIR)) for file in wheel.namelist())