@@ -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
325299orig = _path .create .registry [str ]
0 commit comments