summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_struct.py
diff options
context:
space:
mode:
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>2010-06-11 16:04:59 (GMT)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>2010-06-11 16:04:59 (GMT)
commit177e8530cbf5ece4264d48da3c11a7e1fc45dcb4 (patch)
tree3c0fa69fff00f24eb799f7cfad03669e73d7bf7f /Lib/test/test_struct.py
parent9b88b916a903d97e3125b4436ac5c14620a78238 (diff)
downloadcpython-177e8530cbf5ece4264d48da3c11a7e1fc45dcb4.zip
cpython-177e8530cbf5ece4264d48da3c11a7e1fc45dcb4.tar.gz
cpython-177e8530cbf5ece4264d48da3c11a7e1fc45dcb4.tar.bz2
Issue #3129: Trailing digits in format string are no longer ignored.
Diffstat (limited to 'Lib/test/test_struct.py')
-rw-r--r--Lib/test/test_struct.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py
index 0c8cd2c..b9faa28 100644
--- a/Lib/test/test_struct.py
+++ b/Lib/test/test_struct.py
@@ -443,7 +443,7 @@ class StructTest(unittest.TestCase):
# Test bogus offset (issue 3694)
sb = small_buf
- self.assertRaises(TypeError, struct.pack_into, b'1', sb, None)
+ self.assertRaises(TypeError, struct.pack_into, b'', sb, None)
def test_pack_into_fn(self):
test_string = b'Reykjavik rocks, eow!'
@@ -510,6 +510,32 @@ class StructTest(unittest.TestCase):
def test_crasher(self):
self.assertRaises(MemoryError, struct.pack, "357913941b", "a")
+ def test_trailing_counter(self):
+ store = array.array('b', b' '*100)
+
+ # format lists containing only count spec should result in an error
+ self.assertRaises(struct.error, struct.pack, '12345')
+ self.assertRaises(struct.error, struct.unpack, '12345', '')
+ self.assertRaises(struct.error, struct.pack_into, '12345', store, 0)
+ self.assertRaises(struct.error, struct.unpack_from, '12345', store, 0)
+
+ # Format lists with trailing count spec should result in an error
+ self.assertRaises(struct.error, struct.pack, 'c12345', 'x')
+ self.assertRaises(struct.error, struct.unpack, 'c12345', 'x')
+ self.assertRaises(struct.error, struct.pack_into, 'c12345', store, 0,
+ 'x')
+ self.assertRaises(struct.error, struct.unpack_from, 'c12345', store,
+ 0)
+
+ # Mixed format tests
+ self.assertRaises(struct.error, struct.pack, '14s42', 'spam and eggs')
+ self.assertRaises(struct.error, struct.unpack, '14s42',
+ 'spam and eggs')
+ self.assertRaises(struct.error, struct.pack_into, '14s42', store, 0,
+ 'spam and eggs')
+ self.assertRaises(struct.error, struct.unpack_from, '14s42', store, 0)
+
+
def test_main():
run_unittest(StructTest)