improved test()
diff --git a/Lib/htmllib.py b/Lib/htmllib.py
index b689f9c..840d783 100644
--- a/Lib/htmllib.py
+++ b/Lib/htmllib.py
@@ -385,16 +385,40 @@
         pass
 
 
-def test():
-    import sys
-    file = 'test.html'
-    if sys.argv[1:]: file = sys.argv[1]
-    fp = open(file, 'r')
-    data = fp.read()
-    fp.close()
-    from formatter import DumbWriter, AbstractFormatter
-    w = DumbWriter()
-    f = AbstractFormatter(w)
+def test(args = None):
+    import sys, formatter
+
+    if not args:
+	args = sys.argv[1:]
+
+    silent = args and args[0] == '-s'
+    if silent:
+	del args[0]
+
+    if args:
+	file = args[0]
+    else:
+	file = 'test.html'
+
+    if file == '-':
+	f = sys.stdin
+    else:
+	try:
+	    f = open(file, 'r')
+	except IOError, msg:
+	    print file, ":", msg
+	    sys.exit(1)
+
+    data = f.read()
+
+    if f is not sys.stdin:
+	f.close()
+    
+    if silent:
+	f = formatter.NullFormatter()
+    else:
+	f = formatter.AbstractFormatter(formatter.DumbWriter())
+
     p = HTMLParser(f)
     p.feed(data)
     p.close()