summaryrefslogtreecommitdiffstats
path: root/tests/conftest.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/conftest.py')
-rw-r--r--tests/conftest.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..029cb8f
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,75 @@
+import textwrap
+import zipfile
+
+import pytest
+
+
+@pytest.fixture
+def fancy_wheel(tmp_path):
+ path = tmp_path / "fancy-1.0.0-py2.py3-none-any.whl"
+ files = {
+ "fancy/": b"""""",
+ "fancy/__init__.py": b"""\
+ def main():
+ print("I'm fancy.")
+ """,
+ "fancy/__main__.py": b"""\
+ if __name__ == "__main__":
+ from . import main
+ main()
+ """,
+ "fancy-1.0.0.data/data/fancy/": b"""""",
+ "fancy-1.0.0.data/data/fancy/data.py": b"""\
+ # put me in data
+ """,
+ "fancy-1.0.0.dist-info/": b"""""",
+ "fancy-1.0.0.dist-info/top_level.txt": b"""\
+ fancy
+ """,
+ "fancy-1.0.0.dist-info/entry_points.txt": b"""\
+ [console_scripts]
+ fancy = fancy:main
+
+ [gui_scripts]
+ fancy-gui = fancy:main
+ """,
+ "fancy-1.0.0.dist-info/WHEEL": b"""\
+ Wheel-Version: 1.0
+ Generator: magic (1.0.0)
+ Root-Is-Purelib: true
+ Tag: py3-none-any
+ """,
+ "fancy-1.0.0.dist-info/METADATA": b"""\
+ Metadata-Version: 2.1
+ Name: fancy
+ Version: 1.0.0
+ Summary: A fancy package
+ Author: Agendaless Consulting
+ Author-email: nobody@example.com
+ License: MIT
+ Keywords: fancy amazing
+ Platform: UNKNOWN
+ Classifier: Intended Audience :: Developers
+ """,
+ # The RECORD file is indirectly validated by the WheelFile, since it only
+ # provides the items that are a part of the wheel.
+ "fancy-1.0.0.dist-info/RECORD": b"""\
+ fancy/__init__.py,,
+ fancy/__main__.py,,
+ fancy-1.0.0.data/data/fancy/data.py,,
+ fancy-1.0.0.dist-info/top_level.txt,,
+ fancy-1.0.0.dist-info/entry_points.txt,,
+ fancy-1.0.0.dist-info/WHEEL,,
+ fancy-1.0.0.dist-info/METADATA,,
+ fancy-1.0.0.dist-info/RECORD,,
+ """,
+ }
+
+ with zipfile.ZipFile(path, "w") as archive:
+ for name, indented_content in files.items():
+ archive.writestr(
+ name,
+ textwrap.dedent(indented_content.decode("utf-8")).encode("utf-8"),
+ )
+
+ return path