diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2013-11-21 09:04:37 (GMT) |
|---|---|---|
| committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-11-21 09:04:37 (GMT) |
| commit | 5397c97451413b544593313651964facf9502c4a (patch) | |
| tree | f27578ead62674b38de2c0405c2e3649f10a075a | |
| parent | 78ecaba4820061f1c9bef70a348c34d354c27824 (diff) | |
| download | cpython-5397c97451413b544593313651964facf9502c4a.zip cpython-5397c97451413b544593313651964facf9502c4a.tar.gz cpython-5397c97451413b544593313651964facf9502c4a.tar.bz2 | |
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.
| -rw-r--r-- | Lib/test/audiotests.py | 6 | ||||
| -rw-r--r-- | Lib/test/test_wave.py | 11 | ||||
| -rw-r--r-- | Lib/wave.py | 4 | ||||
| -rw-r--r-- | Misc/NEWS | 3 |
4 files changed, 21 insertions, 3 deletions
diff --git a/Lib/test/audiotests.py b/Lib/test/audiotests.py index 9c4ce6c..e378277 100644 --- a/Lib/test/audiotests.py +++ b/Lib/test/audiotests.py @@ -10,7 +10,8 @@ def fromhex(s): return base64.b16decode(s.replace(' ', '')) def byteswap2(data): - a = array.array('h', data) + a = array.array('h') + a.fromstring(data) a.byteswap() return a.tostring() @@ -21,7 +22,8 @@ def byteswap3(data): return bytes(ba) def byteswap4(data): - a = array.array('i', data) + a = array.array('i') + a.fromstring(data) a.byteswap() return a.tostring() diff --git a/Lib/test/test_wave.py b/Lib/test/test_wave.py index 0dd17c8..3e8ef51 100644 --- a/Lib/test/test_wave.py +++ b/Lib/test/test_wave.py @@ -48,6 +48,12 @@ class WavePCM16Test(audiotests.AudioWriteTests, if sys.byteorder != 'big': 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, audiotests.AudioTestsWithSourceFile, @@ -108,6 +114,11 @@ class WavePCM32Test(audiotests.AudioWriteTests, if sys.byteorder != 'big': frames = audiotests.byteswap4(frames) + if sys.byteorder == 'big': + @unittest.expectedFailure + def test_unseekable_incompleted_write(self): + super().test_unseekable_incompleted_write() + def test_main(): run_unittest(WavePCM8Test, WavePCM16Test, WavePCM24Test, WavePCM32Test) diff --git a/Lib/wave.py b/Lib/wave.py index c320238..8ff93c3 100644 --- a/Lib/wave.py +++ b/Lib/wave.py @@ -424,7 +424,9 @@ class Wave_write: data = self._convert(data) if self._sampwidth in (2, 4) and sys.byteorder == 'big': import array - data = array.array(_array_fmts[self._sampwidth], data) + a = array.array(_array_fmts[self._sampwidth]) + a.fromstring(data) + data = a assert data.itemsize == self._sampwidth data.byteswap() data.tofile(self._file) @@ -12,6 +12,9 @@ Core and Builtins Library ------- +- Issue #19633: Fixed writing not compressed 16- and 32-bit wave files on + big-endian platforms. + - Issue #19449: in csv's writerow, handle non-string keys when generating the error message that certain keys are not in the 'fieldnames' list. |
