diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index 5cd08ee..0708f81 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -8,6 +8,16 @@
 
 import traceback
 
+try:
+    raise KeyError
+except KeyError:
+    type_, value, tb = sys.exc_info()
+    file_ = StringIO()
+    traceback_print(tb, file_)
+    example_traceback = file_.getvalue()
+else:
+    raise Error("unable to create test traceback string")
+
 
 class TracebackCases(unittest.TestCase):
     # For now, a very minimal set of tests.  I want to be sure that
@@ -152,24 +162,9 @@
 
 class TracebackFormatTests(unittest.TestCase):
 
-    def test_traceback_format(self):
-        try:
-            raise KeyError('blah')
-        except KeyError:
-            type_, value, tb = sys.exc_info()
-            traceback_fmt = 'Traceback (most recent call last):\n' + \
-                            ''.join(traceback.format_tb(tb))
-            file_ = StringIO()
-            traceback_print(tb, file_)
-            python_fmt  = file_.getvalue()
-        else:
-            raise Error("unable to create test traceback string")
-
-        # Make sure that Python and the traceback module format the same thing
-        self.assertEquals(traceback_fmt, python_fmt)
-
+    def test_traceback_indentation(self):
         # Make sure that the traceback is properly indented.
-        tb_lines = python_fmt.splitlines()
+        tb_lines = example_traceback.splitlines()
         self.assertEquals(len(tb_lines), 3)
         banner, location, source_line = tb_lines
         self.assert_(banner.startswith('Traceback'))
diff --git a/Lib/traceback.py b/Lib/traceback.py
index ea3d51a..3d877ee 100644
--- a/Lib/traceback.py
+++ b/Lib/traceback.py
@@ -64,7 +64,7 @@
         filename = co.co_filename
         name = co.co_name
         _print(file,
-               '  File "%s", line %d, in %s' % (filename, lineno, name))
+               '  File "%s", line %d, in %s' % (filename,lineno,name))
         linecache.checkcache(filename)
         line = linecache.getline(filename, lineno, f.f_globals)
         if line: _print(file, '    ' + line.strip())
@@ -124,8 +124,9 @@
         _print(file, 'Traceback (most recent call last):')
         print_tb(tb, limit, file)
     lines = format_exception_only(etype, value)
-    for line in lines:
-        _print(file, line, '')
+    for line in lines[:-1]:
+        _print(file, line, ' ')
+    _print(file, lines[-1], '')
 
 def format_exception(etype, value, tb, limit = None):
     """Format a stack trace and the exception information.
@@ -194,7 +195,7 @@
                 caretspace = ((c.isspace() and c or ' ') for c in caretspace)
                 # only three spaces to account for offset1 == pos 0
                 lines.append('   %s^\n' % ''.join(caretspace))
-        value = msg
+            value = msg
 
     lines.append(_format_final_exc_line(stype, value))
     return lines
