summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorINADA Naoki <methane@users.noreply.github.com>2017-02-26 21:11:58 +0900
committerGitHub <noreply@github.com>2017-02-26 21:11:58 +0900
commit5dc33eea538361f8a218255f83db2e9298dd8c53 (patch)
tree994d30279dcae5fff4522fc5b190ba0f844207ac
parent5aa3856b4f325457e8ec1ccf669369f543e1f6b5 (diff)
downloadcpython-git-5dc33eea538361f8a218255f83db2e9298dd8c53.tar.gz
bpo-29110: add test for Aifc_write. (GH-293)
follow up of GH-162
-rw-r--r--Lib/aifc.py4
-rw-r--r--Lib/test/test_aifc.py10
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')