@@ -86,7 +86,15 @@ def setUp(self):
8686 self .fixtures .enter_context (self .add_sys_path (self .site_dir ))
8787
8888
89- class DistInfoPkg (OnSysPath , SiteDir ):
89+ class SiteBuilder (SiteDir ):
90+ def setUp (self ):
91+ super ().setUp ()
92+ for cls in self .__class__ .mro ():
93+ with contextlib .suppress (AttributeError ):
94+ build_files (cls .files , prefix = self .site_dir )
95+
96+
97+ class DistInfoPkg (OnSysPath , SiteBuilder ):
9098 files : FilesSpec = {
9199 "distinfo_pkg-1.0.0.dist-info" : {
92100 "METADATA" : """
@@ -113,10 +121,6 @@ def main():
113121 """ ,
114122 }
115123
116- def setUp (self ):
117- super ().setUp ()
118- build_files (DistInfoPkg .files , self .site_dir )
119-
120124 def make_uppercase (self ):
121125 """
122126 Rewrite metadata with everything uppercase.
@@ -148,12 +152,8 @@ class DistInfoPkgEditable(DistInfoPkg):
148152 },
149153 }
150154
151- def setUp (self ):
152- super ().setUp ()
153- build_files (DistInfoPkgEditable .files , self .site_dir )
154155
155-
156- class DistInfoPkgWithDot (OnSysPath , SiteDir ):
156+ class DistInfoPkgWithDot (OnSysPath , SiteBuilder ):
157157 files : FilesSpec = {
158158 "pkg_dot-1.0.0.dist-info" : {
159159 "METADATA" : """
@@ -163,12 +163,8 @@ class DistInfoPkgWithDot(OnSysPath, SiteDir):
163163 },
164164 }
165165
166- def setUp (self ):
167- super ().setUp ()
168- build_files (DistInfoPkgWithDot .files , self .site_dir )
169-
170166
171- class DistInfoPkgWithDotLegacy (OnSysPath , SiteDir ):
167+ class DistInfoPkgWithDotLegacy (OnSysPath , SiteBuilder ):
172168 files : FilesSpec = {
173169 "pkg.dot-1.0.0.dist-info" : {
174170 "METADATA" : """
@@ -184,18 +180,12 @@ class DistInfoPkgWithDotLegacy(OnSysPath, SiteDir):
184180 },
185181 }
186182
187- def setUp (self ):
188- super ().setUp ()
189- build_files (DistInfoPkgWithDotLegacy .files , self .site_dir )
190183
184+ class DistInfoPkgOffPath (SiteBuilder ):
185+ files = DistInfoPkg .files
191186
192- class DistInfoPkgOffPath (SiteDir ):
193- def setUp (self ):
194- super ().setUp ()
195- build_files (DistInfoPkg .files , self .site_dir )
196187
197-
198- class EggInfoPkg (OnSysPath , SiteDir ):
188+ class EggInfoPkg (OnSysPath , SiteBuilder ):
199189 files : FilesSpec = {
200190 "egginfo_pkg.egg-info" : {
201191 "PKG-INFO" : """
@@ -230,12 +220,8 @@ def main():
230220 """ ,
231221 }
232222
233- def setUp (self ):
234- super ().setUp ()
235- build_files (EggInfoPkg .files , prefix = self .site_dir )
236-
237223
238- class EggInfoPkgPipInstalledNoToplevel (OnSysPath , SiteDir ):
224+ class EggInfoPkgPipInstalledNoToplevel (OnSysPath , SiteBuilder ):
239225 files : FilesSpec = {
240226 "egg_with_module_pkg.egg-info" : {
241227 "PKG-INFO" : "Name: egg_with_module-pkg" ,
@@ -265,12 +251,8 @@ def main():
265251 """ ,
266252 }
267253
268- def setUp (self ):
269- super ().setUp ()
270- build_files (EggInfoPkgPipInstalledNoToplevel .files , prefix = self .site_dir )
271254
272-
273- class EggInfoPkgPipInstalledNoModules (OnSysPath , SiteDir ):
255+ class EggInfoPkgPipInstalledNoModules (OnSysPath , SiteBuilder ):
274256 files : FilesSpec = {
275257 "egg_with_no_modules_pkg.egg-info" : {
276258 "PKG-INFO" : "Name: egg_with_no_modules-pkg" ,
@@ -295,12 +277,8 @@ class EggInfoPkgPipInstalledNoModules(OnSysPath, SiteDir):
295277 },
296278 }
297279
298- def setUp (self ):
299- super ().setUp ()
300- build_files (EggInfoPkgPipInstalledNoModules .files , prefix = self .site_dir )
301-
302280
303- class EggInfoPkgSourcesFallback (OnSysPath , SiteDir ):
281+ class EggInfoPkgSourcesFallback (OnSysPath , SiteBuilder ):
304282 files : FilesSpec = {
305283 "sources_fallback_pkg.egg-info" : {
306284 "PKG-INFO" : "Name: sources_fallback-pkg" ,
@@ -321,12 +299,8 @@ def main():
321299 """ ,
322300 }
323301
324- def setUp (self ):
325- super ().setUp ()
326- build_files (EggInfoPkgSourcesFallback .files , prefix = self .site_dir )
327-
328302
329- class EggInfoFile (OnSysPath , SiteDir ):
303+ class EggInfoFile (OnSysPath , SiteBuilder ):
330304 files : FilesSpec = {
331305 "egginfo_file.egg-info" : """
332306 Metadata-Version: 1.0
@@ -342,10 +316,6 @@ class EggInfoFile(OnSysPath, SiteDir):
342316 """ ,
343317 }
344318
345- def setUp (self ):
346- super ().setUp ()
347- build_files (EggInfoFile .files , prefix = self .site_dir )
348-
349319
350320# dedent all text strings before writing
351321orig = _path .create .registry [str ]
0 commit comments