Skip to content

Commit e886c99

Browse files
committed
Use a SiteBuilder class to build files in the site, traversing the class hierarchy explicitly and avoiding the need for separate setUp calls for each.
1 parent 7238302 commit e886c99

File tree

1 file changed

+18
-44
lines changed

1 file changed

+18
-44
lines changed

tests/fixtures.py

Lines changed: 18 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,15 @@ def setUp(self):
8585
self.fixtures.enter_context(self.add_sys_path(self.site_dir))
8686

8787

88-
class DistInfoPkg(OnSysPath, SiteDir):
88+
class SiteBuilder(SiteDir):
89+
def setUp(self):
90+
super().setUp()
91+
for cls in self.__class__.mro():
92+
with contextlib.suppress(AttributeError):
93+
build_files(cls.files, prefix=self.site_dir)
94+
95+
96+
class DistInfoPkg(OnSysPath, SiteBuilder):
8997
files: FilesSpec = {
9098
"distinfo_pkg-1.0.0.dist-info": {
9199
"METADATA": """
@@ -112,10 +120,6 @@ def main():
112120
""",
113121
}
114122

115-
def setUp(self):
116-
super().setUp()
117-
build_files(DistInfoPkg.files, self.site_dir)
118-
119123
def make_uppercase(self):
120124
"""
121125
Rewrite metadata with everything uppercase.
@@ -127,7 +131,7 @@ def make_uppercase(self):
127131
build_files(files, self.site_dir)
128132

129133

130-
class DistInfoPkgWithDot(OnSysPath, SiteDir):
134+
class DistInfoPkgWithDot(OnSysPath, SiteBuilder):
131135
files: FilesSpec = {
132136
"pkg_dot-1.0.0.dist-info": {
133137
"METADATA": """
@@ -137,12 +141,8 @@ class DistInfoPkgWithDot(OnSysPath, SiteDir):
137141
},
138142
}
139143

140-
def setUp(self):
141-
super().setUp()
142-
build_files(DistInfoPkgWithDot.files, self.site_dir)
143-
144144

145-
class DistInfoPkgWithDotLegacy(OnSysPath, SiteDir):
145+
class DistInfoPkgWithDotLegacy(OnSysPath, SiteBuilder):
146146
files: FilesSpec = {
147147
"pkg.dot-1.0.0.dist-info": {
148148
"METADATA": """
@@ -158,18 +158,12 @@ class DistInfoPkgWithDotLegacy(OnSysPath, SiteDir):
158158
},
159159
}
160160

161-
def setUp(self):
162-
super().setUp()
163-
build_files(DistInfoPkgWithDotLegacy.files, self.site_dir)
164161

165-
166-
class DistInfoPkgOffPath(SiteDir):
167-
def setUp(self):
168-
super().setUp()
169-
build_files(DistInfoPkg.files, self.site_dir)
162+
class DistInfoPkgOffPath(SiteBuilder):
163+
files = DistInfoPkg.files
170164

171165

172-
class EggInfoPkg(OnSysPath, SiteDir):
166+
class EggInfoPkg(OnSysPath, SiteBuilder):
173167
files: FilesSpec = {
174168
"egginfo_pkg.egg-info": {
175169
"PKG-INFO": """
@@ -204,12 +198,8 @@ def main():
204198
""",
205199
}
206200

207-
def setUp(self):
208-
super().setUp()
209-
build_files(EggInfoPkg.files, prefix=self.site_dir)
210201

211-
212-
class EggInfoPkgPipInstalledNoToplevel(OnSysPath, SiteDir):
202+
class EggInfoPkgPipInstalledNoToplevel(OnSysPath, SiteBuilder):
213203
files: FilesSpec = {
214204
"egg_with_module_pkg.egg-info": {
215205
"PKG-INFO": "Name: egg_with_module-pkg",
@@ -239,12 +229,8 @@ def main():
239229
""",
240230
}
241231

242-
def setUp(self):
243-
super().setUp()
244-
build_files(EggInfoPkgPipInstalledNoToplevel.files, prefix=self.site_dir)
245-
246232

247-
class EggInfoPkgPipInstalledNoModules(OnSysPath, SiteDir):
233+
class EggInfoPkgPipInstalledNoModules(OnSysPath, SiteBuilder):
248234
files: FilesSpec = {
249235
"egg_with_no_modules_pkg.egg-info": {
250236
"PKG-INFO": "Name: egg_with_no_modules-pkg",
@@ -269,12 +255,8 @@ class EggInfoPkgPipInstalledNoModules(OnSysPath, SiteDir):
269255
},
270256
}
271257

272-
def setUp(self):
273-
super().setUp()
274-
build_files(EggInfoPkgPipInstalledNoModules.files, prefix=self.site_dir)
275258

276-
277-
class EggInfoPkgSourcesFallback(OnSysPath, SiteDir):
259+
class EggInfoPkgSourcesFallback(OnSysPath, SiteBuilder):
278260
files: FilesSpec = {
279261
"sources_fallback_pkg.egg-info": {
280262
"PKG-INFO": "Name: sources_fallback-pkg",
@@ -295,12 +277,8 @@ def main():
295277
""",
296278
}
297279

298-
def setUp(self):
299-
super().setUp()
300-
build_files(EggInfoPkgSourcesFallback.files, prefix=self.site_dir)
301-
302280

303-
class EggInfoFile(OnSysPath, SiteDir):
281+
class EggInfoFile(OnSysPath, SiteBuilder):
304282
files: FilesSpec = {
305283
"egginfo_file.egg-info": """
306284
Metadata-Version: 1.0
@@ -316,10 +294,6 @@ class EggInfoFile(OnSysPath, SiteDir):
316294
""",
317295
}
318296

319-
def setUp(self):
320-
super().setUp()
321-
build_files(EggInfoFile.files, prefix=self.site_dir)
322-
323297

324298
# dedent all text strings before writing
325299
orig = _path.create.registry[str]

0 commit comments

Comments
 (0)