diff options
author | INADA Naoki <methane@users.noreply.github.com> | 2017-02-26 21:11:58 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-26 21:11:58 +0900 |
commit | 5dc33eea538361f8a218255f83db2e9298dd8c53 (patch) | |
tree | 994d30279dcae5fff4522fc5b190ba0f844207ac | |
parent | 5aa3856b4f325457e8ec1ccf669369f543e1f6b5 (diff) | |
download | cpython-git-5dc33eea538361f8a218255f83db2e9298dd8c53.tar.gz |
bpo-29110: add test for Aifc_write. (GH-293)
follow up of GH-162
-rw-r--r-- | Lib/aifc.py | 4 | ||||
-rw-r--r-- | Lib/test/test_aifc.py | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/Lib/aifc.py b/Lib/aifc.py index 380adc8d0d..13ad7dc5ca 100644 --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -303,6 +303,8 @@ class Aifc_read: # _ssnd_chunk -- instantiation of a chunk class for the SSND chunk # _framesize -- size of one frame in the file + _file = None # Set here since __del__ checks it + def initfp(self, file): self._version = 0 self._convert = None @@ -547,6 +549,8 @@ class Aifc_write: # _datalength -- the size of the audio samples written to the header # _datawritten -- the size of the audio samples actually written + _file = None # Set here since __del__ checks it + def __init__(self, f): if isinstance(f, str): file_object = builtins.open(f, 'wb') diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py index 989df93a3a..a731a5136b 100644 --- a/Lib/test/test_aifc.py +++ b/Lib/test/test_aifc.py @@ -1,5 +1,6 @@ from test.support import check_no_resource_warning, findfile, TESTFN, unlink import unittest +from unittest import mock from test import audiotests from audioop import byteswap import io @@ -155,7 +156,14 @@ class AifcMiscTest(audiotests.AudioTests, unittest.TestCase): with self.assertRaises(aifc.Error): # Try opening a non-AIFC file, with the expectation that # `aifc.open` will fail (without raising a ResourceWarning) - f = self.f = aifc.open(non_aifc_file, 'rb') + self.f = aifc.open(non_aifc_file, 'rb') + + # Aifc_write.initfp() won't raise in normal case. But some errors + # (e.g. MemoryError, KeyboardInterrupt, etc..) can happen. + with mock.patch.object(aifc.Aifc_write, 'initfp', + side_effect=RuntimeError): + with self.assertRaises(RuntimeError): + self.fout = aifc.open(TESTFN, 'wb') def test_params_added(self): f = self.f = aifc.open(TESTFN, 'wb') |