merge heads

This commit is contained in:
Senthil Kumaran 2012-03-13 00:14:59 -07:00
commit 784ddb08a6
6 changed files with 177 additions and 29 deletions

View File

@ -1,7 +1,8 @@
from test.support import findfile, run_unittest, TESTFN from test.support import findfile, run_unittest, TESTFN, captured_stdout, unlink
import unittest import unittest
import os import os
import io import io
import struct
import aifc import aifc
@ -20,10 +21,8 @@ class AIFCTest(unittest.TestCase):
self.fout.close() self.fout.close()
except (aifc.Error, AttributeError): except (aifc.Error, AttributeError):
pass pass
try: unlink(TESTFN)
os.remove(TESTFN) unlink(TESTFN + '.aiff')
except OSError:
pass
def test_skipunknown(self): def test_skipunknown(self):
#Issue 2245 #Issue 2245
@ -32,6 +31,7 @@ class AIFCTest(unittest.TestCase):
def test_params(self): def test_params(self):
f = self.f = aifc.open(self.sndfilepath) f = self.f = aifc.open(self.sndfilepath)
self.assertEqual(f.getfp().name, self.sndfilepath)
self.assertEqual(f.getnchannels(), 2) self.assertEqual(f.getnchannels(), 2)
self.assertEqual(f.getsampwidth(), 2) self.assertEqual(f.getsampwidth(), 2)
self.assertEqual(f.getframerate(), 48000) self.assertEqual(f.getframerate(), 48000)
@ -45,6 +45,7 @@ class AIFCTest(unittest.TestCase):
def test_read(self): def test_read(self):
f = self.f = aifc.open(self.sndfilepath) f = self.f = aifc.open(self.sndfilepath)
self.assertEqual(f.readframes(0), b'')
self.assertEqual(f.tell(), 0) self.assertEqual(f.tell(), 0)
self.assertEqual(f.readframes(2), b'\x00\x00\x00\x00\x0b\xd4\x0b\xd4') self.assertEqual(f.readframes(2), b'\x00\x00\x00\x00\x0b\xd4\x0b\xd4')
f.rewind() f.rewind()
@ -58,6 +59,10 @@ class AIFCTest(unittest.TestCase):
self.assertEqual(f.readframes(2), b'\x17t\x17t"\xad"\xad') self.assertEqual(f.readframes(2), b'\x17t\x17t"\xad"\xad')
f.setpos(pos0) f.setpos(pos0)
self.assertEqual(f.readframes(2), b'\x00\x00\x00\x00\x0b\xd4\x0b\xd4') self.assertEqual(f.readframes(2), b'\x00\x00\x00\x00\x0b\xd4\x0b\xd4')
with self.assertRaises(aifc.Error):
f.setpos(-1)
with self.assertRaises(aifc.Error):
f.setpos(f.getnframes() + 1)
def test_write(self): def test_write(self):
f = self.f = aifc.open(self.sndfilepath) f = self.f = aifc.open(self.sndfilepath)
@ -92,8 +97,6 @@ class AIFCTest(unittest.TestCase):
self.assertEqual(f.getparams()[0:3], fout.getparams()[0:3]) self.assertEqual(f.getparams()[0:3], fout.getparams()[0:3])
self.assertEqual(fout.getcomptype(), b'ULAW') self.assertEqual(fout.getcomptype(), b'ULAW')
self.assertEqual(fout.getcompname(), b'foo') self.assertEqual(fout.getcompname(), b'foo')
# XXX: this test fails, not sure if it should succeed or not
# self.assertEqual(f.readframes(5), fout.readframes(5))
def test_close(self): def test_close(self):
class Wrapfile(object): class Wrapfile(object):
@ -112,7 +115,7 @@ class AIFCTest(unittest.TestCase):
def test_write_header_comptype_sampwidth(self): def test_write_header_comptype_sampwidth(self):
for comptype in (b'ULAW', b'ulaw', b'ALAW', b'alaw', b'G722'): for comptype in (b'ULAW', b'ulaw', b'ALAW', b'alaw', b'G722'):
fout = self.fout = aifc.open(io.BytesIO(), 'wb') fout = aifc.open(io.BytesIO(), 'wb')
fout.setnchannels(1) fout.setnchannels(1)
fout.setframerate(1) fout.setframerate(1)
fout.setcomptype(comptype, b'') fout.setcomptype(comptype, b'')
@ -121,7 +124,7 @@ class AIFCTest(unittest.TestCase):
fout.initfp(None) fout.initfp(None)
def test_write_markers_values(self): def test_write_markers_values(self):
fout = self.fout = aifc.open(io.BytesIO(), 'wb') fout = aifc.open(io.BytesIO(), 'wb')
self.assertEqual(fout.getmarkers(), None) self.assertEqual(fout.getmarkers(), None)
fout.setmark(1, 0, b'foo1') fout.setmark(1, 0, b'foo1')
fout.setmark(1, 1, b'foo2') fout.setmark(1, 1, b'foo2')
@ -179,6 +182,148 @@ class AIFCLowLevelTest(unittest.TestCase):
with self.assertRaises(ValueError): with self.assertRaises(ValueError):
aifc._write_string(f, b'too long' * 255) aifc._write_string(f, b'too long' * 255)
def test_wrong_open_mode(self):
with self.assertRaises(aifc.Error):
aifc.open(TESTFN, 'wrong_mode')
def test_read_wrong_form(self):
b1 = io.BytesIO(b'WRNG' + struct.pack('>L', 0))
b2 = io.BytesIO(b'FORM' + struct.pack('>L', 4) + b'WRNG')
self.assertRaises(aifc.Error, aifc.open, b1)
self.assertRaises(aifc.Error, aifc.open, b2)
def test_read_no_comm_chunk(self):
b = io.BytesIO(b'FORM' + struct.pack('>L', 4) + b'AIFF')
self.assertRaises(aifc.Error, aifc.open, b)
def test_read_wrong_compression_type(self):
b = b'FORM' + struct.pack('>L', 4) + b'AIFC'
b += b'COMM' + struct.pack('>LhlhhLL', 23, 0, 0, 0, 0, 0, 0)
b += b'WRNG' + struct.pack('B', 0)
self.assertRaises(aifc.Error, aifc.open, io.BytesIO(b))
def test_read_wrong_marks(self):
b = b'FORM' + struct.pack('>L', 4) + b'AIFF'
b += b'COMM' + struct.pack('>LhlhhLL', 18, 0, 0, 0, 0, 0, 0)
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
b += b'MARK' + struct.pack('>LhB', 3, 1, 1)
with captured_stdout() as s:
f = aifc.open(io.BytesIO(b))
self.assertEqual(
s.getvalue(),
'Warning: MARK chunk contains only 0 markers instead of 1\n')
self.assertEqual(f.getmarkers(), None)
def test_read_comm_kludge_compname_even(self):
b = b'FORM' + struct.pack('>L', 4) + b'AIFC'
b += b'COMM' + struct.pack('>LhlhhLL', 18, 0, 0, 0, 0, 0, 0)
b += b'NONE' + struct.pack('B', 4) + b'even' + b'\x00'
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
with captured_stdout() as s:
f = aifc.open(io.BytesIO(b))
self.assertEqual(s.getvalue(), 'Warning: bad COMM chunk size\n')
self.assertEqual(f.getcompname(), b'even')
def test_read_comm_kludge_compname_odd(self):
b = b'FORM' + struct.pack('>L', 4) + b'AIFC'
b += b'COMM' + struct.pack('>LhlhhLL', 18, 0, 0, 0, 0, 0, 0)
b += b'NONE' + struct.pack('B', 3) + b'odd'
b += b'SSND' + struct.pack('>L', 8) + b'\x00' * 8
with captured_stdout() as s:
f = aifc.open(io.BytesIO(b))
self.assertEqual(s.getvalue(), 'Warning: bad COMM chunk size\n')
self.assertEqual(f.getcompname(), b'odd')
def test_write_params_raises(self):
fout = aifc.open(io.BytesIO(), 'wb')
wrong_params = (0, 0, 0, 0, b'WRNG', '')
self.assertRaises(aifc.Error, fout.setparams, wrong_params)
self.assertRaises(aifc.Error, fout.getparams)
self.assertRaises(aifc.Error, fout.setnchannels, 0)
self.assertRaises(aifc.Error, fout.getnchannels)
self.assertRaises(aifc.Error, fout.setsampwidth, 0)
self.assertRaises(aifc.Error, fout.getsampwidth)
self.assertRaises(aifc.Error, fout.setframerate, 0)
self.assertRaises(aifc.Error, fout.getframerate)
self.assertRaises(aifc.Error, fout.setcomptype, b'WRNG', '')
fout.aiff()
fout.setnchannels(1)
fout.setsampwidth(1)
fout.setframerate(1)
fout.setnframes(1)
fout.writeframes(b'\x00')
self.assertRaises(aifc.Error, fout.setparams, (1, 1, 1, 1, 1, 1))
self.assertRaises(aifc.Error, fout.setnchannels, 1)
self.assertRaises(aifc.Error, fout.setsampwidth, 1)
self.assertRaises(aifc.Error, fout.setframerate, 1)
self.assertRaises(aifc.Error, fout.setnframes, 1)
self.assertRaises(aifc.Error, fout.setcomptype, b'NONE', '')
self.assertRaises(aifc.Error, fout.aiff)
self.assertRaises(aifc.Error, fout.aifc)
def test_write_params_singles(self):
fout = aifc.open(io.BytesIO(), 'wb')
fout.aifc()
fout.setnchannels(1)
fout.setsampwidth(2)
fout.setframerate(3)
fout.setnframes(4)
fout.setcomptype(b'NONE', b'name')
self.assertEqual(fout.getnchannels(), 1)
self.assertEqual(fout.getsampwidth(), 2)
self.assertEqual(fout.getframerate(), 3)
self.assertEqual(fout.getnframes(), 0)
self.assertEqual(fout.tell(), 0)
self.assertEqual(fout.getcomptype(), b'NONE')
self.assertEqual(fout.getcompname(), b'name')
fout.writeframes(b'\x00' * 4 * fout.getsampwidth() * fout.getnchannels())
self.assertEqual(fout.getnframes(), 4)
self.assertEqual(fout.tell(), 4)
def test_write_params_bunch(self):
fout = aifc.open(io.BytesIO(), 'wb')
fout.aifc()
p = (1, 2, 3, 4, b'NONE', b'name')
fout.setparams(p)
self.assertEqual(fout.getparams(), p)
fout.initfp(None)
def test_write_header_raises(self):
fout = aifc.open(io.BytesIO(), 'wb')
self.assertRaises(aifc.Error, fout.close)
fout.setnchannels(1)
self.assertRaises(aifc.Error, fout.close)
fout.setsampwidth(1)
self.assertRaises(aifc.Error, fout.close)
fout.initfp(None)
def test_write_header_comptype_raises(self):
for comptype in (b'ULAW', b'ulaw', b'ALAW', b'alaw', b'G722'):
fout = aifc.open(io.BytesIO(), 'wb')
fout.setsampwidth(1)
fout.setcomptype(comptype, b'')
self.assertRaises(aifc.Error, fout.close)
fout.initfp(None)
def test_write_markers_raises(self):
fout = aifc.open(io.BytesIO(), 'wb')
self.assertRaises(aifc.Error, fout.setmark, 0, 0, b'')
self.assertRaises(aifc.Error, fout.setmark, 1, -1, b'')
self.assertRaises(aifc.Error, fout.setmark, 1, 0, None)
self.assertRaises(aifc.Error, fout.getmark, 1)
fout.initfp(None)
def test_write_aiff_by_extension(self):
sampwidth = 2
fout = self.fout = aifc.open(TESTFN + '.aiff', 'wb')
fout.setparams((1, sampwidth, 1, 1, b'ULAW', b''))
frames = b'\x00' * fout.getnchannels() * sampwidth
fout.writeframes(frames)
fout.close()
f = self.f = aifc.open(TESTFN + '.aiff', 'rb')
self.assertEqual(f.getcomptype(), b'NONE')
f.close()
def test_main(): def test_main():
run_unittest(AIFCTest) run_unittest(AIFCTest)

View File

@ -195,12 +195,6 @@ class AST_Tests(unittest.TestCase):
with self.assertRaises(AttributeError): with self.assertRaises(AttributeError):
x.vararg x.vararg
with self.assertRaises(AttributeError):
x.foobar = 21
with self.assertRaises(AttributeError):
ast.AST(lineno=2)
with self.assertRaises(TypeError): with self.assertRaises(TypeError):
# "_ast.AST constructor takes 0 positional arguments" # "_ast.AST constructor takes 0 positional arguments"
ast.AST(2) ast.AST(2)

View File

@ -818,6 +818,16 @@ class ReTests(unittest.TestCase):
self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow])
self.assertRaises(TypeError, _sre.compile, {}, 0, []) self.assertRaises(TypeError, _sre.compile, {}, 0, [])
def test_compile(self):
# Test return value when given string and pattern as parameter
pattern = re.compile('random pattern')
self.assertIsInstance(pattern, re._pattern_type)
same_pattern = re.compile(pattern)
self.assertIsInstance(same_pattern, re._pattern_type)
self.assertIs(same_pattern, pattern)
# Test behaviour when not given a string or pattern as parameter
self.assertRaises(TypeError, re.compile, 0)
def run_re_tests(): def run_re_tests():
from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR
if verbose: if verbose:

View File

@ -891,12 +891,15 @@ class UnicodeTest(string_tests.CommonTest,
self.assertEqual('{foo._x}'.format_map({'foo': C(20)}), '20') self.assertEqual('{foo._x}'.format_map({'foo': C(20)}), '20')
# test various errors # test various errors
self.assertRaises(TypeError, '{'.format_map) self.assertRaises(TypeError, ''.format_map)
self.assertRaises(TypeError, '}'.format_map) self.assertRaises(TypeError, 'a'.format_map)
self.assertRaises(TypeError, 'a{'.format_map)
self.assertRaises(TypeError, 'a}'.format_map) self.assertRaises(ValueError, '{'.format_map, {})
self.assertRaises(TypeError, '{a'.format_map) self.assertRaises(ValueError, '}'.format_map, {})
self.assertRaises(TypeError, '}a'.format_map) self.assertRaises(ValueError, 'a{'.format_map, {})
self.assertRaises(ValueError, 'a}'.format_map, {})
self.assertRaises(ValueError, '{a'.format_map, {})
self.assertRaises(ValueError, '}a'.format_map, {})
# issue #12579: can't supply positional params to format_map # issue #12579: can't supply positional params to format_map
self.assertRaises(ValueError, '{}'.format_map, {'a' : 2}) self.assertRaises(ValueError, '{}'.format_map, {'a' : 2})

View File

@ -552,6 +552,7 @@ John Lenton
Christopher Tur Lesniewski-Laas Christopher Tur Lesniewski-Laas
Mark Levinson Mark Levinson
William Lewis William Lewis
Akira Li
Xuanji Li Xuanji Li
Robert van Liere Robert van Liere
Ross Light Ross Light
@ -628,6 +629,7 @@ Roman Milner
Andrii V. Mishkovskyi Andrii V. Mishkovskyi
Dustin J. Mitchell Dustin J. Mitchell
Dom Mitchell Dom Mitchell
Florian Mladitsch
Doug Moen Doug Moen
The Dragon De Monsyne The Dragon De Monsyne
Skip Montanaro Skip Montanaro

View File

@ -645,7 +645,7 @@ seq_for_testlist(struct compiling *c, const node *n)
} }
static arg_ty static arg_ty
compiler_arg(struct compiling *c, const node *n) ast_for_arg(struct compiling *c, const node *n)
{ {
identifier name; identifier name;
expr_ty annotation = NULL; expr_ty annotation = NULL;
@ -666,12 +666,6 @@ compiler_arg(struct compiling *c, const node *n)
} }
return arg(name, annotation, c->c_arena); return arg(name, annotation, c->c_arena);
#if 0
result = Tuple(args, Store, LINENO(n), n->n_col_offset, c->c_arena);
if (!set_context(c, result, Store, n))
return NULL;
return result;
#endif
} }
/* returns -1 if failed to handle keyword only arguments /* returns -1 if failed to handle keyword only arguments
@ -859,7 +853,7 @@ ast_for_arguments(struct compiling *c, const node *n)
"non-default argument follows default argument"); "non-default argument follows default argument");
return NULL; return NULL;
} }
arg = compiler_arg(c, ch); arg = ast_for_arg(c, ch);
if (!arg) if (!arg)
return NULL; return NULL;
asdl_seq_SET(posargs, k++, arg); asdl_seq_SET(posargs, k++, arg);