bpo-22831: Use "with" to avoid possible fd leaks in tests (part 2). (… · python/cpython@5b10b98 (original) (raw)

`@@ -205,31 +205,28 @@ def make_script(script_dir, script_basename, source, omit_suffix=False):

`

205

205

`script_filename += os.extsep + 'py'

`

206

206

`script_name = os.path.join(script_dir, script_filename)

`

207

207

`# The script should be encoded to UTF-8, the default string encoding

`

208

``

`-

script_file = open(script_name, 'w', encoding='utf-8')

`

209

``

`-

script_file.write(source)

`

210

``

`-

script_file.close()

`

``

208

`+

with open(script_name, 'w', encoding='utf-8') as script_file:

`

``

209

`+

script_file.write(source)

`

211

210

`importlib.invalidate_caches()

`

212

211

`return script_name

`

213

212

``

214

213

`def make_zip_script(zip_dir, zip_basename, script_name, name_in_zip=None):

`

215

214

`zip_filename = zip_basename+os.extsep+'zip'

`

216

215

`zip_name = os.path.join(zip_dir, zip_filename)

`

217

``

`-

zip_file = zipfile.ZipFile(zip_name, 'w')

`

218

``

`-

if name_in_zip is None:

`

219

``

`-

parts = script_name.split(os.sep)

`

220

``

`-

if len(parts) >= 2 and parts[-2] == 'pycache':

`

221

``

`-

legacy_pyc = make_legacy_pyc(source_from_cache(script_name))

`

222

``

`-

name_in_zip = os.path.basename(legacy_pyc)

`

223

``

`-

script_name = legacy_pyc

`

224

``

`-

else:

`

225

``

`-

name_in_zip = os.path.basename(script_name)

`

226

``

`-

zip_file.write(script_name, name_in_zip)

`

227

``

`-

zip_file.close()

`

``

216

`+

with zipfile.ZipFile(zip_name, 'w') as zip_file:

`

``

217

`+

if name_in_zip is None:

`

``

218

`+

parts = script_name.split(os.sep)

`

``

219

`+

if len(parts) >= 2 and parts[-2] == 'pycache':

`

``

220

`+

legacy_pyc = make_legacy_pyc(source_from_cache(script_name))

`

``

221

`+

name_in_zip = os.path.basename(legacy_pyc)

`

``

222

`+

script_name = legacy_pyc

`

``

223

`+

else:

`

``

224

`+

name_in_zip = os.path.basename(script_name)

`

``

225

`+

zip_file.write(script_name, name_in_zip)

`

228

226

`#if test.support.verbose:

`

229

``

`-

zip_file = zipfile.ZipFile(zip_name, 'r')

`

230

``

`-

print 'Contents of %r:' % zip_name

`

231

``

`-

zip_file.printdir()

`

232

``

`-

zip_file.close()

`

``

227

`+

with zipfile.ZipFile(zip_name, 'r') as zip_file:

`

``

228

`+

print 'Contents of %r:' % zip_name

`

``

229

`+

zip_file.printdir()

`

233

230

`return zip_name, os.path.join(zip_name, name_in_zip)

`

234

231

``

235

232

`def make_pkg(pkg_dir, init_source=''):

`

`@@ -252,17 +249,15 @@ def make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,

`

252

249

`script_name_in_zip = os.path.join(pkg_names[-1], os.path.basename(script_name))

`

253

250

`zip_filename = zip_basename+os.extsep+'zip'

`

254

251

`zip_name = os.path.join(zip_dir, zip_filename)

`

255

``

`-

zip_file = zipfile.ZipFile(zip_name, 'w')

`

256

``

`-

for name in pkg_names:

`

257

``

`-

init_name_in_zip = os.path.join(name, init_basename)

`

258

``

`-

zip_file.write(init_name, init_name_in_zip)

`

259

``

`-

zip_file.write(script_name, script_name_in_zip)

`

260

``

`-

zip_file.close()

`

``

252

`+

with zipfile.ZipFile(zip_name, 'w') as zip_file:

`

``

253

`+

for name in pkg_names:

`

``

254

`+

init_name_in_zip = os.path.join(name, init_basename)

`

``

255

`+

zip_file.write(init_name, init_name_in_zip)

`

``

256

`+

zip_file.write(script_name, script_name_in_zip)

`

261

257

`for name in unlink:

`

262

258

`os.unlink(name)

`

263

259

`#if test.support.verbose:

`

264

``

`-

zip_file = zipfile.ZipFile(zip_name, 'r')

`

265

``

`-

print 'Contents of %r:' % zip_name

`

266

``

`-

zip_file.printdir()

`

267

``

`-

zip_file.close()

`

``

260

`+

with zipfile.ZipFile(zip_name, 'r') as zip_file:

`

``

261

`+

print 'Contents of %r:' % zip_name

`

``

262

`+

zip_file.printdir()

`

268

263

`return zip_name, os.path.join(zip_name, script_name_in_zip)

`