diff --git a/Lib/test/test_codecencodings_cn.py b/Lib/test/test_codecencodings_cn.py
index 6d71218..0638f4f 100644
--- a/Lib/test/test_codecencodings_cn.py
+++ b/Lib/test/test_codecencodings_cn.py
@@ -27,8 +27,8 @@
     tstring = test_multibytecodec_support.load_teststring('gbk')
     codectests = (
         # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),  
-        ("abc\xc8", "strict",  None),  
+        ("abc\x80\x80\xc1\xc4", "strict",  None),
+        ("abc\xc8", "strict",  None),
         ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"),
         ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
         ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u804a"),
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
index 6f001de..ba6f94d 100644
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -110,12 +110,12 @@
         """Create a .pth file with a comment, blank lines, an ``import
         <self.imported>``, a line with self.good_dirname, and a line with
         self.bad_dirname.
-        
+
         Creation of the directory for self.good_dir_path (based off of
         self.good_dirname) is also performed.
 
         Make sure to call self.cleanup() to undo anything done by this method.
-        
+
         """
         FILE = open(self.file_path, 'wU')
         try:
diff --git a/Lib/test/test_transformer.py b/Lib/test/test_transformer.py
index 2b0f1e8..6a8c98a 100644
--- a/Lib/test/test_transformer.py
+++ b/Lib/test/test_transformer.py
@@ -4,29 +4,29 @@
 from compiler import compile
 
 class Tests(unittest.TestCase):
-  
-  def testMultipleLHS(self):
-    """ Test multiple targets on the left hand side. """
-    
-    snippets = ['a, b = 1, 2',
-                '(a, b) = 1, 2',
-                '((a, b), c) = (1, 2), 3']
 
-    for s in snippets:
-      a = transformer.parse(s)
-      assert isinstance(a, ast.Module)
-      child1 = a.getChildNodes()[0]
-      assert isinstance(child1, ast.Stmt)
-      child2 = child1.getChildNodes()[0]
-      assert isinstance(child2, ast.Assign)
-      
-      # This actually tests the compiler, but it's a way to assure the ast 
-      # is correct
-      c = compile(s, '<string>', 'single')
-      vals = {}
-      exec c in vals
-      assert vals['a'] == 1
-      assert vals['b'] == 2
+    def testMultipleLHS(self):
+        """ Test multiple targets on the left hand side. """
+
+        snippets = ['a, b = 1, 2',
+                    '(a, b) = 1, 2',
+                    '((a, b), c) = (1, 2), 3']
+
+        for s in snippets:
+            a = transformer.parse(s)
+            assert isinstance(a, ast.Module)
+            child1 = a.getChildNodes()[0]
+            assert isinstance(child1, ast.Stmt)
+            child2 = child1.getChildNodes()[0]
+            assert isinstance(child2, ast.Assign)
+
+            # This actually tests the compiler, but it's a way to assure the ast
+            # is correct
+            c = compile(s, '<string>', 'single')
+            vals = {}
+            exec c in vals
+            assert vals['a'] == 1
+            assert vals['b'] == 2
 
 def test_main():
     test_support.run_unittest(
