diff --git a/Lib/test/nocaret.py b/Lib/test/nocaret.py
new file mode 100644
index 0000000..01ec9ea
--- /dev/null
+++ b/Lib/test/nocaret.py
@@ -0,0 +1,2 @@
+def f(x):
+    [x for x in x] = x
diff --git a/Lib/test/output/test_traceback b/Lib/test/output/test_traceback
new file mode 100644
index 0000000..ebbc93b
--- /dev/null
+++ b/Lib/test/output/test_traceback
@@ -0,0 +1 @@
+test_traceback
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
new file mode 100644
index 0000000..3858aac
--- /dev/null
+++ b/Lib/test/test_traceback.py
@@ -0,0 +1,40 @@
+"""Test cases for traceback module"""
+
+import unittest
+from test_support import run_unittest
+
+import traceback
+
+class TracebackCases(unittest.TestCase):
+    # For now, a very minimal set of tests.  I want to be sure that
+    # formatting of SyntaxErrors works based on changes for 2.1.
+
+    def get_exception_format(self, func, exc):
+        try:
+            func()
+        except exc, value:
+            return traceback.format_exception_only(exc, value)
+        else:
+            raise ValueError, "call did not raise exception"
+    
+    def syntax_error_with_caret(self):
+        compile("def fact(x):\n\treturn x!\n", "?", "exec")
+
+    def syntax_error_without_caret(self):
+        # XXX why doesn't compile raise the same traceback?
+        import nocaret
+
+    def test_caret(self):
+        err = self.get_exception_format(self.syntax_error_with_caret,
+                                        SyntaxError)
+        self.assert_(len(err) == 4)
+        self.assert_("^" in err[2]) # third line has caret
+        self.assert_(err[1].strip() == "return x!")
+        
+    def test_nocaret(self):
+        err = self.get_exception_format(self.syntax_error_without_caret,
+                                        SyntaxError)
+        self.assert_(len(err) == 3)
+        self.assert_(err[1].strip() == "[x for x in x] = x")
+
+run_unittest(TracebackCases)
