Index: Lib/test/test_audioop.py
===================================================================
--- Lib/test/test_audioop.py	(revision 58203)
+++ Lib/test/test_audioop.py	(working copy)
@@ -1,5 +1,6 @@
 # Test audioop.
 import audioop
+import traceback
 from test.test_support import verbose
 
 def gendata1():
@@ -85,12 +86,7 @@
 def testadd(data):
     if verbose:
         print('add')
-    data2 = []
-    for d in data:
-        str = bytes(len(d))
-        for i,b in enumerate(d):
-            str[i] = 2*b
-        data2.append(str)
+    data2 = [bytes(2*b for b in d) for d in data]
     if audioop.add(data[0], data[0], 1) != data2[0] or \
               audioop.add(data[1], data[1], 2) != data2[1] or \
               audioop.add(data[2], data[2], 4) != data2[2]:
@@ -175,12 +171,7 @@
 def testmul(data):
     if verbose:
         print('mul')
-    data2 = []
-    for d in data:
-        str = bytes(len(d))
-        for i,b in enumerate(d):
-            str[i] = 2*b
-        data2.append(str)
+    data2 = [bytes(2*b for b in d) for d in data]
     if audioop.mul(data[0], 1, 2) != data2[0] or \
               audioop.mul(data[1],2, 2) != data2[1] or \
               audioop.mul(data[2], 4, 2) != data2[2]:
@@ -207,10 +198,7 @@
 def testtomono(data):
     if verbose:
         print('tomono')
-    data2 = b''
-    for d in data[0]:
-        data2.append(d)
-        data2.append(d)
+    data2 = b''.join(bytes((d, d)) for d in data[0])
     if audioop.tomono(data2, 1, 0.5, 0.5) != data[0]:
         return 0
     return 1
@@ -218,10 +206,7 @@
 def testtostereo(data):
     if verbose:
         print('tostereo')
-    data2 = b''
-    for d in data[0]:
-        data2.append(d)
-        data2.append(d)
+    data2 = b''.join(bytes((d, d)) for d in data[0])
     if audioop.tostereo(data[0], 1, 1, 1) != data2:
         return 0
     return 1
@@ -266,7 +251,8 @@
     try:
         rv = func(data)
     except Exception as e:
-        print('Test FAILED for audioop.'+name+'() (with %s)' % repr(e))
+        print('Test FAILED for audioop.'+name+'():')
+        traceback.print_exc()
         return
     if not rv:
         print('Test FAILED for audioop.'+name+'()')
Index: Lib/encodings/idna.py
===================================================================
--- Lib/encodings/idna.py	(revision 58203)
+++ Lib/encodings/idna.py	(working copy)
@@ -163,8 +163,8 @@
         for label in labels:
             if result:
                 # Join with U+002E
-                result.extend(b'.')
-            result.extend(ToASCII(label))
+                result += b'.'
+            result += ToASCII(label)
         return result+trailing_dot, len(input)
 
     def decode(self, input, errors='strict'):
