Commit f4fd257a authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #19633: Fixed writing not compressed 16- and 32-bit wave files on

big-endian platforms.

Temporary forbidden test_unseekable_incompleted_write fornot compressed 16-
and 32-bit wave file  on big-endian platforms.
parents bd3a7f90 d9a01822
...@@ -6,7 +6,8 @@ import pickle ...@@ -6,7 +6,8 @@ import pickle
import sys import sys
def byteswap2(data): def byteswap2(data):
a = array.array('h', data) a = array.array('h')
a.frombytes(data)
a.byteswap() a.byteswap()
return a.tobytes() return a.tobytes()
...@@ -17,7 +18,8 @@ def byteswap3(data): ...@@ -17,7 +18,8 @@ def byteswap3(data):
return bytes(ba) return bytes(ba)
def byteswap4(data): def byteswap4(data):
a = array.array('i', data) a = array.array('i')
a.frombytes(data)
a.byteswap() a.byteswap()
return a.tobytes() return a.tobytes()
......
...@@ -48,6 +48,12 @@ class WavePCM16Test(audiotests.AudioWriteTests, ...@@ -48,6 +48,12 @@ class WavePCM16Test(audiotests.AudioWriteTests,
if sys.byteorder != 'big': if sys.byteorder != 'big':
frames = audiotests.byteswap2(frames) frames = audiotests.byteswap2(frames)
if sys.byteorder == 'big':
@unittest.expectedFailure
def test_unseekable_incompleted_write(self):
super().test_unseekable_incompleted_write()
class WavePCM24Test(audiotests.AudioWriteTests, class WavePCM24Test(audiotests.AudioWriteTests,
audiotests.AudioTestsWithSourceFile, audiotests.AudioTestsWithSourceFile,
...@@ -108,6 +114,11 @@ class WavePCM32Test(audiotests.AudioWriteTests, ...@@ -108,6 +114,11 @@ class WavePCM32Test(audiotests.AudioWriteTests,
if sys.byteorder != 'big': if sys.byteorder != 'big':
frames = audiotests.byteswap4(frames) frames = audiotests.byteswap4(frames)
if sys.byteorder == 'big':
@unittest.expectedFailure
def test_unseekable_incompleted_write(self):
super().test_unseekable_incompleted_write()
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
...@@ -443,7 +443,9 @@ class Wave_write: ...@@ -443,7 +443,9 @@ class Wave_write:
data = self._convert(data) data = self._convert(data)
if self._sampwidth in (2, 4) and sys.byteorder == 'big': if self._sampwidth in (2, 4) and sys.byteorder == 'big':
import array import array
data = array.array(_array_fmts[self._sampwidth], data) a = array.array(_array_fmts[self._sampwidth])
a.frombytes(data)
data = a
assert data.itemsize == self._sampwidth assert data.itemsize == self._sampwidth
data.byteswap() data.byteswap()
data.tofile(self._file) data.tofile(self._file)
......
...@@ -59,6 +59,9 @@ Core and Builtins ...@@ -59,6 +59,9 @@ Core and Builtins
Library Library
------- -------
- Issue #19633: Fixed writing not compressed 16- and 32-bit wave files on
big-endian platforms.
- Issue #18379: SSLSocket.getpeercert() returns CA issuer AIA fields, OCSP - Issue #18379: SSLSocket.getpeercert() returns CA issuer AIA fields, OCSP
and CRL distribution points. and CRL distribution points.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment