diff --git a/Lib/test/test_trace.py b/Lib/test/test_trace.py
new file mode 100644
index 0000000..247c49c
--- /dev/null
+++ b/Lib/test/test_trace.py
@@ -0,0 +1,47 @@
+# Testing the trace module
+
+from test.support import run_unittest, TESTFN, rmtree, unlink, captured_stdout
+import unittest
+import trace
+import os, sys
+
+class TestCoverage(unittest.TestCase):
+    def tearDown(self):
+        rmtree(TESTFN)
+        unlink(TESTFN)
+
+    def _coverage(self, tracer):
+        tracer.run('from test import test_pprint; test_pprint.test_main()')
+        r = tracer.results()
+        r.write_results(show_missing=True, summary=True, coverdir=TESTFN)
+
+    def test_coverage(self):
+        tracer = trace.Trace(trace=0, count=1)
+        with captured_stdout() as stdout:
+            self._coverage(tracer)
+        stdout = stdout.getvalue()
+        self.assertTrue("pprint.py" in stdout)
+        self.assertTrue("case.py" in stdout)   # from unittest
+        files = os.listdir(TESTFN)
+        self.assertTrue("pprint.cover" in files)
+        self.assertTrue("unittest.case.cover" in files)
+
+    def test_coverage_ignore(self):
+        # Ignore all files, nothing should be traced nor printed
+        libpath = os.path.normpath(os.path.dirname(os.__file__))
+        # sys.prefix does not work when running from a checkout
+        tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix, libpath],
+                             trace=0, count=1)
+        with captured_stdout() as stdout:
+            self._coverage(tracer)
+        self.assertEquals(stdout.getvalue(), "")
+        if os.path.exists(TESTFN):
+            files = os.listdir(TESTFN)
+            self.assertEquals(files, [])
+
+
+def test_main():
+    run_unittest(__name__)
+
+if __name__ == "__main__":
+    test_main()
