diff --git a/IPython/core/tests/test_interactiveshell.py b/IPython/core/tests/test_interactiveshell.py
index ab94bc0..7762f89 100644
--- a/IPython/core/tests/test_interactiveshell.py
+++ b/IPython/core/tests/test_interactiveshell.py
@@ -56,9 +56,21 @@ class InteractiveShellTestCase(unittest.TestCase):
         self.assertEquals(ip.user_ns['y'], 3)
 
     def test_multiline_string_cells(self):
-        """Code sprinkled with multiline strings should execute (GH-306)"""
+        "Code sprinkled with multiline strings should execute (GH-306)"
         ip = get_ipython()
         ip.run_cell('tmp=0')
         self.assertEquals(ip.user_ns['tmp'], 0)
         ip.run_cell('tmp=1;"""a\nb"""\n')
         self.assertEquals(ip.user_ns['tmp'], 1)
+
+    def test_dont_cache_with_semicolon(self):
+        "Ending a line with semicolon should not cache the returned object (GH-307)"
+        ip = get_ipython()
+        oldlen = len(ip.user_ns['Out'])
+        a = ip.run_cell('1;')
+        newlen = len(ip.user_ns['Out'])
+        self.assertEquals(oldlen, newlen)
+        #also test the default caching behavior
+        a = ip.run_cell('1')
+        newlen = len(ip.user_ns['Out'])
+        self.assertEquals(oldlen+1, newlen)