Skip to content

Commit 89a539e

Browse files
committed
test that RECORD matches built wheel
1 parent bd02368 commit 89a539e

File tree

1 file changed

+35
-13
lines changed

1 file changed

+35
-13
lines changed

tests/masonry/builders/test_complete.py

+35-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import csv
34
import os
45
import platform
56
import re
@@ -89,12 +90,18 @@ def test_wheel_c_extension() -> None:
8990
is not None
9091
)
9192

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]
9396

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
9598
finally:
9699
zip.close()
97100

101+
# Files in RECORD should match files in wheel.
102+
zip_files = sorted(zip.namelist())
103+
assert zip_files == sorted(record_files)
104+
98105

99106
@pytest.mark.skipif(
100107
sys.platform == "win32"
@@ -144,12 +151,18 @@ def test_wheel_c_extension_with_no_setup() -> None:
144151
is not None
145152
)
146153

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]
148157

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
150159
finally:
151160
zip.close()
152161

162+
# Files in RECORD should match files in wheel.
163+
zip_files = sorted(zip.namelist())
164+
assert zip_files == sorted(record_files)
165+
153166

154167
@pytest.mark.skipif(
155168
sys.platform == "win32"
@@ -199,12 +212,18 @@ def test_wheel_c_extension_src_layout() -> None:
199212
is not None
200213
)
201214

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]
203218

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
205220
finally:
206221
zip.close()
207222

223+
# Files in RECORD should match files in wheel.
224+
zip_files = sorted(zip.namelist())
225+
assert zip_files == sorted(record_files)
226+
208227

209228
def test_complete() -> None:
210229
module_path = fixtures_dir / "complete"
@@ -297,20 +316,23 @@ def test_complete() -> None:
297316
# vary per operating systems and Python versions.
298317
# So instead of 1:1 assertion, let's do a bit clunkier one:
299318

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",
301327
"my_package/__init__.py",
302328
"my_package/data1/test.json",
303329
"my_package/sub_pkg1/__init__.py",
304330
"my_package/sub_pkg2/__init__.py",
305331
"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"
310333
]
311334

312-
for expected_record in expected_records:
313-
assert expected_record in actual_records
335+
assert sorted(expected_files) == sorted(actual_files)
314336

315337
finally:
316338
zip.close()

0 commit comments

Comments
 (0)