summaryrefslogtreecommitdiffstats
path: root/tests/test_self_packaging.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-29 04:20:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-29 04:20:41 +0000
commitb49f1524e250764592ff132af8fb0d39182620f7 (patch)
treea2c4da0c1bfc3be79c9b80180d8958804e91a07d /tests/test_self_packaging.py
parentInitial commit. (diff)
downloadpython-build-b49f1524e250764592ff132af8fb0d39182620f7.tar.xz
python-build-b49f1524e250764592ff132af8fb0d39182620f7.zip
Adding upstream version 0.9.0.upstream/0.9.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/test_self_packaging.py')
-rw-r--r--tests/test_self_packaging.py103
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/test_self_packaging.py b/tests/test_self_packaging.py
new file mode 100644
index 0000000..abe09f8
--- /dev/null
+++ b/tests/test_self_packaging.py
@@ -0,0 +1,103 @@
+# These tests check the sdist, path, and wheel of build to ensure that all are valid.
+
+import subprocess
+import sys
+import tarfile
+import zipfile
+
+from pathlib import Path
+
+import pytest
+
+
+DIR = Path(__file__).parent.resolve()
+MAIN_DIR = DIR.parent
+
+sdist_files = {
+ 'LICENSE',
+ 'PKG-INFO',
+ 'README.md',
+ 'pyproject.toml',
+ 'setup.cfg',
+ 'setup.py',
+ 'src',
+ 'src/build',
+ 'src/build.egg-info',
+ 'src/build.egg-info/PKG-INFO',
+ 'src/build.egg-info/SOURCES.txt',
+ 'src/build.egg-info/dependency_links.txt',
+ 'src/build.egg-info/entry_points.txt',
+ 'src/build.egg-info/requires.txt',
+ 'src/build.egg-info/top_level.txt',
+ 'src/build/__init__.py',
+ 'src/build/__main__.py',
+ 'src/build/env.py',
+ 'src/build/py.typed',
+ 'src/build/util.py',
+}
+
+wheel_files = {
+ 'build/__init__.py',
+ 'build/__main__.py',
+ 'build/env.py',
+ 'build/py.typed',
+ 'build/util.py',
+ 'dist-info/LICENSE',
+ 'dist-info/METADATA',
+ 'dist-info/RECORD',
+ 'dist-info/WHEEL',
+ 'dist-info/entry_points.txt',
+ 'dist-info/top_level.txt',
+}
+
+
+def test_build_sdist(monkeypatch, tmpdir):
+
+ monkeypatch.chdir(MAIN_DIR)
+
+ subprocess.run(
+ [
+ sys.executable,
+ '-m',
+ 'build',
+ '--sdist',
+ '--outdir',
+ str(tmpdir),
+ ],
+ check=True,
+ ).stdout
+
+ (sdist,) = tmpdir.visit('*.tar.gz')
+
+ with tarfile.open(str(sdist), 'r:gz') as tar:
+ simpler = {n.split('/', 1)[-1] for n in tar.getnames()[1:]}
+
+ assert simpler == sdist_files
+
+
+@pytest.mark.parametrize('args', ((), ('--wheel',)), ids=('from_sdist', 'direct'))
+def test_build_wheel(monkeypatch, tmpdir, args):
+
+ monkeypatch.chdir(MAIN_DIR)
+
+ subprocess.run(
+ [
+ sys.executable,
+ '-m',
+ 'build',
+ *args,
+ '--outdir',
+ str(tmpdir),
+ ],
+ check=True,
+ )
+
+ (wheel,) = tmpdir.visit('*.whl')
+
+ with zipfile.ZipFile(str(wheel)) as z:
+ names = z.namelist()
+
+ trimmed = {n for n in names if 'dist-info' not in n}
+ trimmed |= {f"dist-info/{n.split('/', 1)[-1]}" for n in names if 'dist-info' in n}
+
+ assert trimmed == wheel_files