diff --git a/Lib/test/output/test_sax b/Lib/test/output/test_sax
index 873ed51..19aa71c 100644
--- a/Lib/test/output/test_sax
+++ b/Lib/test/output/test_sax
@@ -6,6 +6,9 @@
 Passed test_escape_extra
 Passed test_expat_attrs_empty
 Passed test_expat_attrs_wattr
+Passed test_expat_inpsource_filename
+Passed test_expat_inpsource_stream
+Passed test_expat_inpsource_sysid
 Passed test_expat_nsattrs_empty
 Passed test_expat_nsattrs_wattr
 Passed test_filter_basic
@@ -17,4 +20,4 @@
 Passed test_xmlgen_ignorable
 Passed test_xmlgen_ns
 Passed test_xmlgen_pi
-18 tests, 0 failures
+21 tests, 0 failures
diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py
index 1e7e037..8ff3dac 100644
--- a/Lib/test/test_sax.py
+++ b/Lib/test/test_sax.py
@@ -4,7 +4,7 @@
 
 from xml.sax.saxutils import XMLGenerator, escape, XMLFilterBase
 from xml.sax.expatreader import create_parser
-from xml.sax.xmlreader import AttributesImpl, AttributesNSImpl
+from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl
 from xml.sax.handler import ContentHandler
 from cStringIO import StringIO
 from test_support import verbose, TestFailed
@@ -238,6 +238,42 @@
            attrs.getValue((ns_uri, "attr")) == "val" and \
            attrs[(ns_uri, "attr")] == "val"
 
+# ===== InputSource support
+
+xml_test_out = open("test.xml.out").read()
+
+def test_expat_inpsource_filename():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    parser.parse("test.xml")
+
+    return result.getvalue() == xml_test_out
+
+def test_expat_inpsource_sysid():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    parser.parse(InputSource("test.xml"))
+
+    return result.getvalue() == xml_test_out
+
+def test_expat_inpsource_stream():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    inpsrc = InputSource()
+    inpsrc.setByteStream(open("test.xml"))
+    parser.parse(inpsrc)
+
+    return result.getvalue() == xml_test_out
+
 # ===========================================================================
 #
 #   xmlreader tests
@@ -383,6 +419,18 @@
 
 # ===== Main program
 
+def make_test_output():
+    parser = create_parser()
+    result = StringIO()
+    xmlgen = XMLGenerator(result)
+
+    parser.setContentHandler(xmlgen)
+    parser.parse("test.xml")
+
+    outf = open("test.xml.out", "w")
+    outf.write(result.getvalue())
+    outf.close()
+
 items = locals().items()
 items.sort()
 for (name, value) in items:
@@ -392,3 +440,5 @@
 print "%d tests, %d failures" % (tests, fails)
 if fails != 0:
     raise TestFailed, "%d of %d tests failed" % (fails, tests)
+
+make_test_output()
