The Usual
diff --git a/Lib/dos-8x3/test_min.py b/Lib/dos-8x3/test_min.py
index 73c8ac4..8a63535 100644
--- a/Lib/dos-8x3/test_min.py
+++ b/Lib/dos-8x3/test_min.py
@@ -5,6 +5,7 @@
 import os.path
 import sys
 import traceback
+from test_support import verbose
 
 if __name__ == "__main__":
     base = sys.argv[0]
@@ -13,15 +14,28 @@
 tstfile = os.path.join(os.path.dirname(base), "test.xml")
 del base
 
+def confirm( test, testname="Test" ):
+    if test: 
+        print "Passed " + testname
+    else: 
+        print "Failed " + testname
+        raise Exception
+
 Node._debug=1
 
+def testParseFromFile():
+    from StringIO import StringIO
+    dom=parse( StringIO( open( tstfile ).read() ) )
+    dom.unlink()
+    confirm(isinstance(dom,Document))
+
 def testGetElementsByTagName( ):
     dom=parse( tstfile )
-    assert dom.getElementsByTagName( "LI" )==\
-            dom.documentElement.getElementsByTagName( "LI" )
+    confirm( dom.getElementsByTagName( "LI" )==\
+            dom.documentElement.getElementsByTagName( "LI" ) )
     dom.unlink()
     dom=None
-    assert( len( Node.allnodes ))==0
+    confirm (len( Node.allnodes )==0)
 
 def testInsertBefore( ):
     dom=parse( tstfile )
@@ -32,44 +46,44 @@
     #docel.insertBefore( dom.createProcessingInstruction("a", "b"),
     #                        docel.childNodes[0])
 
-    #assert docel.childNodes[0].target=="a"
-    #assert docel.childNodes[2].target=="a"
+    #confirm( docel.childNodes[0].tet=="a" )
+    #confirm( docel.childNodes[2].tet=="a" )
     dom.unlink()
     del dom
     del docel
-    assert( len( Node.allnodes ))==0
+    confirm( len( Node.allnodes )==0)
 
 def testAppendChild():
     dom=parse( tstfile )
     dom.documentElement.appendChild( dom.createComment( u"Hello" ))
-    assert dom.documentElement.childNodes[-1].nodeName=="#comment"
-    assert dom.documentElement.childNodes[-1].data=="Hello"
+    confirm( dom.documentElement.childNodes[-1].nodeName=="#comment" )
+    confirm( dom.documentElement.childNodes[-1].data=="Hello" )
     dom.unlink()
     dom=None
-    assert( len( Node.allnodes ))==0
+    confirm( len( Node.allnodes )==0 )
 
 def testNonZero():
     dom=parse( tstfile )
-    assert dom # should not be zero
+    confirm( dom )# should not be zero
     dom.appendChild( dom.createComment( "foo" ) )
-    assert not dom.childNodes[-1].childNodes
+    confirm( not dom.childNodes[-1].childNodes )
     dom.unlink()
     dom=None
-    assert( len( Node.allnodes ))==0
+    confirm( len( Node.allnodes )==0 )
 
 def testUnlink():
     dom=parse( tstfile )
     dom.unlink()
     dom=None
-    assert( len( Node.allnodes ))==0
+    confirm( len( Node.allnodes )==0 )
 
 def testElement():
     dom=Document()
     dom.appendChild( dom.createElement( "abc" ) )
-    assert dom.documentElement
+    confirm( dom.documentElement )
     dom.unlink()
     dom=None
-    assert( len( Node.allnodes ))==0
+    confirm( len( Node.allnodes )==0 )
 
 def testAAA():
     dom=parseString( "<abc/>" )
@@ -91,20 +105,20 @@
     child=dom.appendChild( dom.createElement( "abc" ) )
 
     child.setAttribute( "def", "ghi" )
-    assert child.getAttribute( "def" )=="ghi"
-    assert child.attributes["def"].value=="ghi"
+    confirm( child.getAttribute( "def" )=="ghi" )
+    confirm( child.attributes["def"].value=="ghi" )
 
     child.setAttribute( "jkl", "mno" )
-    assert child.getAttribute( "jkl" )=="mno"
-    assert child.attributes["jkl"].value=="mno"
+    confirm( child.getAttribute( "jkl" )=="mno" )
+    confirm( child.attributes["jkl"].value=="mno" )
 
-    assert len( child.attributes )==2
+    confirm( len( child.attributes )==2 )
 
     child.setAttribute( "def", "newval" )
-    assert child.getAttribute( "def" )=="newval"
-    assert child.attributes["def"].value=="newval"
+    confirm( child.getAttribute( "def" )=="newval" )
+    confirm( child.attributes["def"].value=="newval" )
 
-    assert len( child.attributes )==2
+    confirm( len( child.attributes )==2 )
 
     dom.unlink()
     dom=None
@@ -114,22 +128,22 @@
     dom=Document()
     child=dom.appendChild( dom.createElement( "abc" ) )
 
-    assert len( child.attributes)==0
+    confirm( len( child.attributes)==0 )
     child.setAttribute( "def", "ghi" )
-    assert len( child.attributes)==1
+    confirm( len( child.attributes)==1 )
     del child.attributes["def"]
-    assert len( child.attributes)==0
+    confirm( len( child.attributes)==0 )
     dom.unlink()
-    assert( len( Node.allnodes ))==0
+    confirm( len( Node.allnodes )==0 )
 
 def testRemoveAttr():
     dom=Document()
     child=dom.appendChild( dom.createElement( "abc" ) )
 
     child.setAttribute( "def", "ghi" )
-    assert len( child.attributes)==1
+    confirm( len( child.attributes)==1 )
     child.removeAttribute("def" )
-    assert len( child.attributes)==0
+    confirm( len( child.attributes)==0 )
 
     dom.unlink()
 
@@ -140,9 +154,9 @@
     child.setAttributeNS( "http://www.w3.org", "xmlns:python", 
                                             "http://www.python.org" )
     child.setAttributeNS( "http://www.python.org", "python:abcattr", "foo" )
-    assert len( child.attributes )==2
+    confirm( len( child.attributes )==2 )
     child.removeAttributeNS( "http://www.python.org", "abcattr" )
-    assert len( child.attributes )==1
+    confirm( len( child.attributes )==1 )
 
     dom.unlink()
     dom=None
@@ -151,31 +165,31 @@
     dom=Document()
     child=dom.appendChild( dom.createElement( "foo" ) )
     child.setAttribute( "spam", "jam" )
-    assert len( child.attributes )==1
+    confirm( len( child.attributes )==1 )
     node=child.getAttributeNode( "spam" )
     child.removeAttributeNode( node )
-    assert len( child.attributes )==0
+    confirm( len( child.attributes )==0 )
 
     dom.unlink()
     dom=None
-    assert len( Node.allnodes )==0
+    confirm( len( Node.allnodes )==0 )
 
 def testChangeAttr():
     dom=parseString( "<abc/>" )
     el=dom.documentElement
     el.setAttribute( "spam", "jam" )
-    assert len( el.attributes )==1
+    confirm( len( el.attributes )==1 )
     el.setAttribute( "spam", "bam" )
-    assert len( el.attributes )==1
+    confirm( len( el.attributes )==1 )
     el.attributes["spam"]="ham"
-    assert len( el.attributes )==1
+    confirm( len( el.attributes )==1 )
     el.setAttribute( "spam2", "bam" )
-    assert len( el.attributes )==2
+    confirm( len( el.attributes )==2 )
     el.attributes[ "spam2"]= "bam2"
-    assert len( el.attributes )==2
+    confirm( len( el.attributes )==2 )
     dom.unlink()
     dom=None
-    assert len( Node.allnodes )==0
+    confirm( len( Node.allnodes )==0 )
 
 def testGetAttrList():
     pass
@@ -199,7 +213,7 @@
     el=dom.appendChild( dom.createElement( "abc" ) )
     string1=repr( el )
     string2=str( el )
-    assert string1==string2
+    confirm( string1==string2 )
     dom.unlink()
 
 # commented out until Fredrick's fix is checked in
@@ -208,25 +222,25 @@
     el=dom.appendChild( dom.createElement( u"abc" ) )
     string1=repr( el )
     string2=str( el )
-    assert string1==string2
+    confirm( string1==string2 )
     dom.unlink()
 
 # commented out until Fredrick's fix is checked in
 def _testElementReprAndStrUnicodeNS():
     dom=Document()
     el=dom.appendChild(
-	 dom.createElementNS( u"http://www.slashdot.org", u"slash:abc" ))
+        dom.createElementNS( u"http://www.slashdot.org", u"slash:abc" ))
     string1=repr( el )
     string2=str( el )
-    assert string1==string2
-    assert string1.find("slash:abc" )!=-1
+    confirm( string1==string2 )
+    confirm( string1.find("slash:abc" )!=-1 )
     dom.unlink()
 
 def testAttributeRepr():
     dom=Document()
     el=dom.appendChild( dom.createElement( u"abc" ) )
     node=el.setAttribute( "abc", "def" )
-    assert str( node ) == repr( node )
+    confirm( str( node ) == repr( node ) )
     dom.unlink()
 
 def testTextNodeRepr(): pass
@@ -312,6 +326,9 @@
 
 names=globals().keys()
 names.sort()
+
+works=1
+
 for name in names:
     if name.startswith( "test" ):
         func=globals()[name]
@@ -320,12 +337,24 @@
             print "Test Succeeded", name
             if len( Node.allnodes ):
                 print "Garbage left over:"
-                print Node.allnodes.items()[0:10]
+                if verbose:
+                    print Node.allnodes.items()[0:10]
+                else:
+                    # Don't print specific nodes if repeatable results
+                    # are needed
+                    print len(Node.allnodes)
             Node.allnodes={}
         except Exception, e :
+            works=0
             print "Test Failed: ", name
             apply( traceback.print_exception, sys.exc_info() )
             print `e`
             Node.allnodes={}
-            raise
 
+if works:
+    print "All tests succeeded"
+else:
+    print "\n\n\n\n************ Check for failures!"
+
+Node.debug = None # Delete debug output collected in a StringIO object
+Node._debug = 0   # And reset debug mode