|
1 | 1 | from __future__ import annotations
|
2 | 2 |
|
| 3 | +import csv |
3 | 4 | import os
|
4 | 5 | import platform
|
5 | 6 | import re
|
@@ -89,12 +90,18 @@ def test_wheel_c_extension() -> None:
|
89 | 90 | is not None
|
90 | 91 | )
|
91 | 92 |
|
92 |
| - records = zip.read("extended-0.1.dist-info/RECORD").decode() |
| 93 | + record = zip.read("extended-0.1.dist-info/RECORD").decode() |
| 94 | + records = csv.reader(record.splitlines()) |
| 95 | + record_files = [row[0] for row in records] |
93 | 96 |
|
94 |
| - assert re.search(r"\s+extended/extended.*\.(so|pyd)", records) is not None |
| 97 | + assert re.search(r"\s+extended/extended.*\.(so|pyd)", record) is not None |
95 | 98 | finally:
|
96 | 99 | zip.close()
|
97 | 100 |
|
| 101 | + # Files in RECORD should match files in wheel. |
| 102 | + zip_files = sorted(zip.namelist()) |
| 103 | + assert zip_files == sorted(record_files) |
| 104 | + |
98 | 105 |
|
99 | 106 | @pytest.mark.skipif(
|
100 | 107 | sys.platform == "win32"
|
@@ -144,12 +151,18 @@ def test_wheel_c_extension_with_no_setup() -> None:
|
144 | 151 | is not None
|
145 | 152 | )
|
146 | 153 |
|
147 |
| - records = zip.read("extended-0.1.dist-info/RECORD").decode() |
| 154 | + record = zip.read("extended-0.1.dist-info/RECORD").decode() |
| 155 | + records = csv.reader(record.splitlines()) |
| 156 | + record_files = [row[0] for row in records] |
148 | 157 |
|
149 |
| - assert re.search(r"\s+extended/extended.*\.(so|pyd)", records) is not None |
| 158 | + assert re.search(r"\s+extended/extended.*\.(so|pyd)", record) is not None |
150 | 159 | finally:
|
151 | 160 | zip.close()
|
152 | 161 |
|
| 162 | + # Files in RECORD should match files in wheel. |
| 163 | + zip_files = sorted(zip.namelist()) |
| 164 | + assert zip_files == sorted(record_files) |
| 165 | + |
153 | 166 |
|
154 | 167 | @pytest.mark.skipif(
|
155 | 168 | sys.platform == "win32"
|
@@ -199,12 +212,18 @@ def test_wheel_c_extension_src_layout() -> None:
|
199 | 212 | is not None
|
200 | 213 | )
|
201 | 214 |
|
202 |
| - records = zip.read("extended-0.1.dist-info/RECORD").decode() |
| 215 | + record = zip.read("extended-0.1.dist-info/RECORD").decode() |
| 216 | + records = csv.reader(record.splitlines()) |
| 217 | + record_files = [row[0] for row in records] |
203 | 218 |
|
204 |
| - assert re.search(r"\s+extended/extended.*\.(so|pyd)", records) is not None |
| 219 | + assert re.search(r"\s+extended/extended.*\.(so|pyd)", record) is not None |
205 | 220 | finally:
|
206 | 221 | zip.close()
|
207 | 222 |
|
| 223 | + # Files in RECORD should match files in wheel. |
| 224 | + zip_files = sorted(zip.namelist()) |
| 225 | + assert zip_files == sorted(record_files) |
| 226 | + |
208 | 227 |
|
209 | 228 | def test_complete() -> None:
|
210 | 229 | module_path = fixtures_dir / "complete"
|
@@ -297,20 +316,23 @@ def test_complete() -> None:
|
297 | 316 | # vary per operating systems and Python versions.
|
298 | 317 | # So instead of 1:1 assertion, let's do a bit clunkier one:
|
299 | 318 |
|
300 |
| - expected_records = [ |
| 319 | + actual_files = [row[0] for row in csv.reader(actual_records.splitlines())] |
| 320 | + expected_files = [ |
| 321 | + "my_package-1.2.3.data/scripts/script.sh", |
| 322 | + "my_package-1.2.3.dist-info/LICENSE", |
| 323 | + "my_package-1.2.3.dist-info/METADATA", |
| 324 | + "my_package-1.2.3.dist-info/RECORD", |
| 325 | + "my_package-1.2.3.dist-info/WHEEL", |
| 326 | + "my_package-1.2.3.dist-info/entry_points.txt", |
301 | 327 | "my_package/__init__.py",
|
302 | 328 | "my_package/data1/test.json",
|
303 | 329 | "my_package/sub_pkg1/__init__.py",
|
304 | 330 | "my_package/sub_pkg2/__init__.py",
|
305 | 331 | "my_package/sub_pkg2/data2/data.json",
|
306 |
| - "my_package-1.2.3.dist-info/entry_points.txt", |
307 |
| - "my_package-1.2.3.dist-info/LICENSE", |
308 |
| - "my_package-1.2.3.dist-info/WHEEL", |
309 |
| - "my_package-1.2.3.dist-info/METADATA", |
| 332 | + "my_package/sub_pkg3/foo.py" |
310 | 333 | ]
|
311 | 334 |
|
312 |
| - for expected_record in expected_records: |
313 |
| - assert expected_record in actual_records |
| 335 | + assert sorted(expected_files) == sorted(actual_files) |
314 | 336 |
|
315 | 337 | finally:
|
316 | 338 | zip.close()
|
|
0 commit comments