summaryrefslogtreecommitdiff
path: root/sys/lib/python/test/output
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/lib/python/test/output
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/lib/python/test/output')
-rw-r--r--sys/lib/python/test/output/test_MimeWriter110
-rw-r--r--sys/lib/python/test/output/test_cProfile79
-rw-r--r--sys/lib/python/test/output/test_cgi42
-rw-r--r--sys/lib/python/test/output/test_class101
-rw-r--r--sys/lib/python/test/output/test_cookie32
-rw-r--r--sys/lib/python/test/output/test_extcall112
-rw-r--r--sys/lib/python/test/output/test_frozen4
-rw-r--r--sys/lib/python/test/output/test_global5
-rw-r--r--sys/lib/python/test/output/test_grammar69
-rw-r--r--sys/lib/python/test/output/test_httplib13
-rw-r--r--sys/lib/python/test/output/test_linuxaudiodev7
-rw-r--r--sys/lib/python/test/output/test_logging525
-rw-r--r--sys/lib/python/test/output/test_math28
-rw-r--r--sys/lib/python/test/output/test_mmap38
-rw-r--r--sys/lib/python/test/output/test_new7
-rw-r--r--sys/lib/python/test/output/test_nis2
-rw-r--r--sys/lib/python/test/output/test_opcodes6
-rw-r--r--sys/lib/python/test/output/test_openpty2
-rw-r--r--sys/lib/python/test/output/test_operations21
-rw-r--r--sys/lib/python/test/output/test_ossaudiodev2
-rw-r--r--sys/lib/python/test/output/test_pep2773
-rw-r--r--sys/lib/python/test/output/test_pkg45
-rw-r--r--sys/lib/python/test/output/test_poll19
-rw-r--r--sys/lib/python/test/output/test_popen3
-rw-r--r--sys/lib/python/test/output/test_popen29
-rw-r--r--sys/lib/python/test/output/test_profile84
-rw-r--r--sys/lib/python/test/output/test_pty3
-rw-r--r--sys/lib/python/test/output/test_pyexpat110
-rw-r--r--sys/lib/python/test/output/test_regex29
-rw-r--r--sys/lib/python/test/output/test_resource2
-rw-r--r--sys/lib/python/test/output/test_rgbimg2
-rw-r--r--sys/lib/python/test/output/test_scope24
-rw-r--r--sys/lib/python/test/output/test_signal2
-rw-r--r--sys/lib/python/test/output/test_thread18
-rw-r--r--sys/lib/python/test/output/test_threadedtempfile5
-rw-r--r--sys/lib/python/test/output/test_tokenize659
-rw-r--r--sys/lib/python/test/output/test_types15
-rw-r--r--sys/lib/python/test/output/test_winreg3
-rw-r--r--sys/lib/python/test/output/test_xdrlib19
-rw-r--r--sys/lib/python/test/output/xmltests364
40 files changed, 2623 insertions, 0 deletions
diff --git a/sys/lib/python/test/output/test_MimeWriter b/sys/lib/python/test/output/test_MimeWriter
new file mode 100644
index 000000000..9b97d93ee
--- /dev/null
+++ b/sys/lib/python/test/output/test_MimeWriter
@@ -0,0 +1,110 @@
+test_MimeWriter
+From: bwarsaw@cnri.reston.va.us
+Date: Mon Feb 12 17:21:48 EST 1996
+To: kss-submit@cnri.reston.va.us
+MIME-Version: 1.0
+Content-Type: multipart/knowbot;
+ boundary="801spam999";
+ version="0.1"
+
+This is a multi-part message in MIME format.
+
+--801spam999
+Content-Type: multipart/knowbot-metadata;
+ boundary="802spam999"
+
+
+--802spam999
+Content-Type: message/rfc822
+KP-Metadata-Type: simple
+KP-Access: read-only
+
+KPMD-Interpreter: python
+KPMD-Interpreter-Version: 1.3
+KPMD-Owner-Name: Barry Warsaw
+KPMD-Owner-Rendezvous: bwarsaw@cnri.reston.va.us
+KPMD-Home-KSS: kss.cnri.reston.va.us
+KPMD-Identifier: hdl://cnri.kss/my_first_knowbot
+KPMD-Launch-Date: Mon Feb 12 16:39:03 EST 1996
+
+--802spam999
+Content-Type: text/isl
+KP-Metadata-Type: complex
+KP-Metadata-Key: connection
+KP-Access: read-only
+KP-Connection-Description: Barry's Big Bass Business
+KP-Connection-Id: B4
+KP-Connection-Direction: client
+
+INTERFACE Seller-1;
+
+TYPE Seller = OBJECT
+ DOCUMENTATION "A simple Seller interface to test ILU"
+ METHODS
+ price():INTEGER,
+ END;
+
+--802spam999
+Content-Type: message/external-body;
+ access-type="URL";
+ URL="hdl://cnri.kss/generic-knowbot"
+
+Content-Type: text/isl
+KP-Metadata-Type: complex
+KP-Metadata-Key: generic-interface
+KP-Access: read-only
+KP-Connection-Description: Generic Interface for All Knowbots
+KP-Connection-Id: generic-kp
+KP-Connection-Direction: client
+
+
+--802spam999--
+
+--801spam999
+Content-Type: multipart/knowbot-code;
+ boundary="803spam999"
+
+
+--803spam999
+Content-Type: text/plain
+KP-Module-Name: BuyerKP
+
+class Buyer:
+ def __setup__(self, maxprice):
+ self._maxprice = maxprice
+
+ def __main__(self, kos):
+ """Entry point upon arrival at a new KOS."""
+ broker = kos.broker()
+ # B4 == Barry's Big Bass Business :-)
+ seller = broker.lookup('Seller_1.Seller', 'B4')
+ if seller:
+ price = seller.price()
+ print 'Seller wants $', price, '... '
+ if price > self._maxprice:
+ print 'too much!'
+ else:
+ print "I'll take it!"
+ else:
+ print 'no seller found here'
+
+--803spam999--
+
+--801spam999
+Content-Type: multipart/knowbot-state;
+ boundary="804spam999"
+KP-Main-Module: main
+
+
+--804spam999
+Content-Type: text/plain
+KP-Module-Name: main
+
+# instantiate a buyer instance and put it in a magic place for the KOS
+# to find.
+__kp__ = Buyer()
+__kp__.__setup__(500)
+
+--804spam999--
+
+--801spam999--
diff --git a/sys/lib/python/test/output/test_cProfile b/sys/lib/python/test/output/test_cProfile
new file mode 100644
index 000000000..fff3568ff
--- /dev/null
+++ b/sys/lib/python/test/output/test_cProfile
@@ -0,0 +1,79 @@
+test_cProfile
+ 126 function calls (106 primitive calls) in 1.000 CPU seconds
+
+ Ordered by: standard name
+
+ ncalls tottime percall cumtime percall filename:lineno(function)
+ 1 0.000 0.000 1.000 1.000 <string>:1(<module>)
+ 8 0.064 0.008 0.080 0.010 test_cProfile.py:103(subhelper)
+ 28 0.028 0.001 0.028 0.001 test_cProfile.py:115(__getattr__)
+ 1 0.270 0.270 1.000 1.000 test_cProfile.py:30(testfunc)
+ 23/3 0.150 0.007 0.170 0.057 test_cProfile.py:40(factorial)
+ 20 0.020 0.001 0.020 0.001 test_cProfile.py:53(mul)
+ 2 0.040 0.020 0.600 0.300 test_cProfile.py:60(helper)
+ 4 0.116 0.029 0.120 0.030 test_cProfile.py:78(helper1)
+ 2 0.000 0.000 0.140 0.070 test_cProfile.py:89(helper2_indirect)
+ 8 0.312 0.039 0.400 0.050 test_cProfile.py:93(helper2)
+ 12 0.000 0.000 0.012 0.001 {hasattr}
+ 4 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects}
+ 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
+ 8 0.000 0.000 0.000 0.000 {range}
+ 4 0.000 0.000 0.000 0.000 {sys.exc_info}
+
+
+ Ordered by: standard name
+
+Function called...
+ ncalls tottime cumtime
+<string>:1(<module>) -> 1 0.270 1.000 test_cProfile.py:30(testfunc)
+test_cProfile.py:103(subhelper) -> 16 0.016 0.016 test_cProfile.py:115(__getattr__)
+ 8 0.000 0.000 {range}
+test_cProfile.py:115(__getattr__) ->
+test_cProfile.py:30(testfunc) -> 1 0.014 0.130 test_cProfile.py:40(factorial)
+ 2 0.040 0.600 test_cProfile.py:60(helper)
+test_cProfile.py:40(factorial) -> 20/3 0.130 0.147 test_cProfile.py:40(factorial)
+ 20 0.020 0.020 test_cProfile.py:53(mul)
+test_cProfile.py:53(mul) ->
+test_cProfile.py:60(helper) -> 4 0.116 0.120 test_cProfile.py:78(helper1)
+ 2 0.000 0.140 test_cProfile.py:89(helper2_indirect)
+ 6 0.234 0.300 test_cProfile.py:93(helper2)
+test_cProfile.py:78(helper1) -> 4 0.000 0.004 {hasattr}
+ 4 0.000 0.000 {method 'append' of 'list' objects}
+ 4 0.000 0.000 {sys.exc_info}
+test_cProfile.py:89(helper2_indirect) -> 2 0.006 0.040 test_cProfile.py:40(factorial)
+ 2 0.078 0.100 test_cProfile.py:93(helper2)
+test_cProfile.py:93(helper2) -> 8 0.064 0.080 test_cProfile.py:103(subhelper)
+ 8 0.000 0.008 {hasattr}
+{hasattr} -> 12 0.012 0.012 test_cProfile.py:115(__getattr__)
+{method 'append' of 'list' objects} ->
+{method 'disable' of '_lsprof.Profiler' objects} ->
+{range} ->
+{sys.exc_info} ->
+
+
+ Ordered by: standard name
+
+Function was called by...
+ ncalls tottime cumtime
+<string>:1(<module>) <-
+test_cProfile.py:103(subhelper) <- 8 0.064 0.080 test_cProfile.py:93(helper2)
+test_cProfile.py:115(__getattr__) <- 16 0.016 0.016 test_cProfile.py:103(subhelper)
+ 12 0.012 0.012 {hasattr}
+test_cProfile.py:30(testfunc) <- 1 0.270 1.000 <string>:1(<module>)
+test_cProfile.py:40(factorial) <- 1 0.014 0.130 test_cProfile.py:30(testfunc)
+ 20/3 0.130 0.147 test_cProfile.py:40(factorial)
+ 2 0.006 0.040 test_cProfile.py:89(helper2_indirect)
+test_cProfile.py:53(mul) <- 20 0.020 0.020 test_cProfile.py:40(factorial)
+test_cProfile.py:60(helper) <- 2 0.040 0.600 test_cProfile.py:30(testfunc)
+test_cProfile.py:78(helper1) <- 4 0.116 0.120 test_cProfile.py:60(helper)
+test_cProfile.py:89(helper2_indirect) <- 2 0.000 0.140 test_cProfile.py:60(helper)
+test_cProfile.py:93(helper2) <- 6 0.234 0.300 test_cProfile.py:60(helper)
+ 2 0.078 0.100 test_cProfile.py:89(helper2_indirect)
+{hasattr} <- 4 0.000 0.004 test_cProfile.py:78(helper1)
+ 8 0.000 0.008 test_cProfile.py:93(helper2)
+{method 'append' of 'list' objects} <- 4 0.000 0.000 test_cProfile.py:78(helper1)
+{method 'disable' of '_lsprof.Profiler' objects} <-
+{range} <- 8 0.000 0.000 test_cProfile.py:103(subhelper)
+{sys.exc_info} <- 4 0.000 0.000 test_cProfile.py:78(helper1)
+
+
diff --git a/sys/lib/python/test/output/test_cgi b/sys/lib/python/test/output/test_cgi
new file mode 100644
index 000000000..26eddfa91
--- /dev/null
+++ b/sys/lib/python/test/output/test_cgi
@@ -0,0 +1,42 @@
+test_cgi
+'' => []
+'&' => []
+'&&' => []
+'=' => [('', '')]
+'=a' => [('', 'a')]
+'a' => [('a', '')]
+'a=' => [('a', '')]
+'a=' => [('a', '')]
+'&a=b' => [('a', 'b')]
+'a=a+b&b=b+c' => [('a', 'a b'), ('b', 'b c')]
+'a=1&a=2' => [('a', '1'), ('a', '2')]
+''
+'&'
+'&&'
+';'
+';&;'
+'='
+'=&='
+'=;='
+'=a'
+'&=a'
+'=a&'
+'=&a'
+'b=a'
+'b+=a'
+'a=b=a'
+'a=+b=a'
+'&b=a'
+'b&=a'
+'a=a+b&b=b+c'
+'a=a+b&a=b+a'
+'x=1&y=2.0&z=2-3.%2b0'
+'x=1;y=2.0&z=2-3.%2b0'
+'x=1;y=2.0;z=2-3.%2b0'
+'Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env'
+'group_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=Browse'
+Testing log
+Testing initlog 1
+Testing log 2
+Test FieldStorage methods that use readline
+Test basic FieldStorage multipart parsing
diff --git a/sys/lib/python/test/output/test_class b/sys/lib/python/test/output/test_class
new file mode 100644
index 000000000..93827f17e
--- /dev/null
+++ b/sys/lib/python/test/output/test_class
@@ -0,0 +1,101 @@
+test_class
+__init__: ()
+__coerce__: (1,)
+__add__: (1,)
+__coerce__: (1,)
+__radd__: (1,)
+__coerce__: (1,)
+__sub__: (1,)
+__coerce__: (1,)
+__rsub__: (1,)
+__coerce__: (1,)
+__mul__: (1,)
+__coerce__: (1,)
+__rmul__: (1,)
+__coerce__: (1,)
+__div__: (1,)
+__coerce__: (1,)
+__rdiv__: (1,)
+__coerce__: (1,)
+__mod__: (1,)
+__coerce__: (1,)
+__rmod__: (1,)
+__coerce__: (1,)
+__divmod__: (1,)
+__coerce__: (1,)
+__rdivmod__: (1,)
+__coerce__: (1,)
+__pow__: (1,)
+__coerce__: (1,)
+__rpow__: (1,)
+__coerce__: (1,)
+__rshift__: (1,)
+__coerce__: (1,)
+__rrshift__: (1,)
+__coerce__: (1,)
+__lshift__: (1,)
+__coerce__: (1,)
+__rlshift__: (1,)
+__coerce__: (1,)
+__and__: (1,)
+__coerce__: (1,)
+__rand__: (1,)
+__coerce__: (1,)
+__or__: (1,)
+__coerce__: (1,)
+__ror__: (1,)
+__coerce__: (1,)
+__xor__: (1,)
+__coerce__: (1,)
+__rxor__: (1,)
+__contains__: (1,)
+__getitem__: (1,)
+__setitem__: (1, 1)
+__delitem__: (1,)
+__getslice__: (0, 42)
+__setslice__: (0, 42, 'The Answer')
+__delslice__: (0, 42)
+__getitem__: (slice(2, 1024, 10),)
+__setitem__: (slice(2, 1024, 10), 'A lot')
+__delitem__: (slice(2, 1024, 10),)
+__getitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),)
+__setitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100), 'Strange')
+__delitem__: ((slice(None, 42, None), Ellipsis, slice(None, 24, None), 24, 100),)
+__getitem__: (slice(0, 42, None),)
+__setitem__: (slice(0, 42, None), 'The Answer')
+__delitem__: (slice(0, 42, None),)
+__neg__: ()
+__pos__: ()
+__abs__: ()
+__int__: ()
+__long__: ()
+__float__: ()
+__oct__: ()
+__hex__: ()
+__hash__: ()
+__repr__: ()
+__str__: ()
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__coerce__: (1,)
+__cmp__: (1,)
+__del__: ()
+__getattr__: ('spam',)
+__setattr__: ('eggs', 'spam, spam, spam and ham')
+__delattr__: ('cardinal',)
diff --git a/sys/lib/python/test/output/test_cookie b/sys/lib/python/test/output/test_cookie
new file mode 100644
index 000000000..95c73283b
--- /dev/null
+++ b/sys/lib/python/test/output/test_cookie
@@ -0,0 +1,32 @@
+test_cookie
+<SimpleCookie: chips='ahoy' vienna='finger'>
+Set-Cookie: chips=ahoy
+Set-Cookie: vienna=finger
+ chips 'ahoy' 'ahoy'
+Set-Cookie: chips=ahoy
+ vienna 'finger' 'finger'
+Set-Cookie: vienna=finger
+<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\n;'>
+Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"
+ keebler 'E=mc2; L="Loves"; fudge=\n;' 'E=mc2; L="Loves"; fudge=\n;'
+Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"
+<SimpleCookie: keebler='E=mc2'>
+Set-Cookie: keebler=E=mc2
+ keebler 'E=mc2' 'E=mc2'
+Set-Cookie: keebler=E=mc2
+Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme
+
+ <script type="text/javascript">
+ <!-- begin hiding
+ document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme; Version=1";
+ // end hiding -->
+ </script>
+
+
+ <script type="text/javascript">
+ <!-- begin hiding
+ document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme";
+ // end hiding -->
+ </script>
+
+If anything blows up after this line, it's from Cookie's doctest.
diff --git a/sys/lib/python/test/output/test_extcall b/sys/lib/python/test/output/test_extcall
new file mode 100644
index 000000000..cb93b0d83
--- /dev/null
+++ b/sys/lib/python/test/output/test_extcall
@@ -0,0 +1,112 @@
+test_extcall
+() {}
+(1,) {}
+(1, 2) {}
+(1, 2, 3) {}
+(1, 2, 3, 4, 5) {}
+(1, 2, 3, 4, 5) {}
+(1, 2, 3, 4, 5) {}
+(1, 2, 3) {'a': 4, 'b': 5}
+(1, 2, 3, 4, 5) {'a': 6, 'b': 7}
+(1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
+TypeError: g() takes at least 1 argument (0 given)
+TypeError: g() takes at least 1 argument (0 given)
+TypeError: g() takes at least 1 argument (0 given)
+1 () {}
+1 (2,) {}
+1 (2, 3) {}
+1 (2, 3, 4, 5) {}
+0 (1, 2) {}
+0 (1, 2, 3) {}
+1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4}
+{'a': 1, 'b': 2, 'c': 3}
+{'a': 1, 'b': 2, 'c': 3}
+g() got multiple values for keyword argument 'x'
+g() got multiple values for keyword argument 'b'
+f() keywords must be strings
+h() got an unexpected keyword argument 'e'
+h() argument after * must be a sequence
+dir() argument after * must be a sequence
+NoneType object argument after * must be a sequence
+h() argument after ** must be a dictionary
+dir() argument after ** must be a dictionary
+NoneType object argument after ** must be a dictionary
+dir() got multiple values for keyword argument 'b'
+3 512 True
+3
+3
+za () {} -> za() takes exactly 1 argument (0 given)
+za () {'a': 'aa'} -> ok za aa B D E V a
+za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd'
+za () {'a': 'aa', 'd': 'dd'} -> za() got an unexpected keyword argument 'd'
+za () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() got an unexpected keyword argument 'b'
+za (1, 2) {} -> za() takes exactly 1 argument (2 given)
+za (1, 2) {'a': 'aa'} -> za() takes exactly 1 non-keyword argument (2 given)
+za (1, 2) {'d': 'dd'} -> za() takes exactly 1 non-keyword argument (2 given)
+za (1, 2) {'a': 'aa', 'd': 'dd'} -> za() takes exactly 1 non-keyword argument (2 given)
+za (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() takes exactly 1 non-keyword argument (2 given)
+za (1, 2, 3, 4, 5) {} -> za() takes exactly 1 argument (5 given)
+za (1, 2, 3, 4, 5) {'a': 'aa'} -> za() takes exactly 1 non-keyword argument (5 given)
+za (1, 2, 3, 4, 5) {'d': 'dd'} -> za() takes exactly 1 non-keyword argument (5 given)
+za (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> za() takes exactly 1 non-keyword argument (5 given)
+za (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> za() takes exactly 1 non-keyword argument (5 given)
+zade () {} -> zade() takes at least 1 argument (0 given)
+zade () {'a': 'aa'} -> ok zade aa B d e V a
+zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given)
+zade () {'a': 'aa', 'd': 'dd'} -> ok zade aa B dd e V d
+zade () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got an unexpected keyword argument 'b'
+zade (1, 2) {} -> ok zade 1 B 2 e V e
+zade (1, 2) {'a': 'aa'} -> zade() got multiple values for keyword argument 'a'
+zade (1, 2) {'d': 'dd'} -> zade() got multiple values for keyword argument 'd'
+zade (1, 2) {'a': 'aa', 'd': 'dd'} -> zade() got multiple values for keyword argument 'a'
+zade (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() got multiple values for keyword argument 'a'
+zade (1, 2, 3, 4, 5) {} -> zade() takes at most 3 arguments (5 given)
+zade (1, 2, 3, 4, 5) {'a': 'aa'} -> zade() takes at most 3 non-keyword arguments (5 given)
+zade (1, 2, 3, 4, 5) {'d': 'dd'} -> zade() takes at most 3 non-keyword arguments (5 given)
+zade (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zade() takes at most 3 non-keyword arguments (5 given)
+zade (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zade() takes at most 3 non-keyword arguments (5 given)
+zabk () {} -> zabk() takes exactly 2 arguments (0 given)
+zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given)
+zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given)
+zabk () {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (1 given)
+zabk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'}
+zabk (1, 2) {} -> ok zabk 1 2 D E V {}
+zabk (1, 2) {'a': 'aa'} -> zabk() got multiple values for keyword argument 'a'
+zabk (1, 2) {'d': 'dd'} -> ok zabk 1 2 D E V {'d': 'dd'}
+zabk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabk() got multiple values for keyword argument 'a'
+zabk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() got multiple values for keyword argument 'a'
+zabk (1, 2, 3, 4, 5) {} -> zabk() takes exactly 2 arguments (5 given)
+zabk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
+zabk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
+zabk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
+zabk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabk() takes exactly 2 non-keyword arguments (5 given)
+zabdv () {} -> zabdv() takes at least 2 arguments (0 given)
+zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given)
+zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given)
+zabdv () {'a': 'aa', 'd': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (1 given)
+zabdv () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got an unexpected keyword argument 'e'
+zabdv (1, 2) {} -> ok zabdv 1 2 d E () e
+zabdv (1, 2) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a'
+zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d
+zabdv (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a'
+zabdv (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a'
+zabdv (1, 2, 3, 4, 5) {} -> ok zabdv 1 2 3 E (4, 5) e
+zabdv (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a'
+zabdv (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdv() got multiple values for keyword argument 'd'
+zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdv() got multiple values for keyword argument 'a'
+zabdv (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdv() got multiple values for keyword argument 'a'
+zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given)
+zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given)
+zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given)
+zabdevk () {'a': 'aa', 'd': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (1 given)
+zabdevk () {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> ok zabdevk aa bb dd ee () {}
+zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {}
+zabdevk (1, 2) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a'
+zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {}
+zabdevk (1, 2) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a'
+zabdevk (1, 2) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a'
+zabdevk (1, 2, 3, 4, 5) {} -> ok zabdevk 1 2 3 4 (5,) {}
+zabdevk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a'
+zabdevk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdevk() got multiple values for keyword argument 'd'
+zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'd': 'dd'} -> zabdevk() got multiple values for keyword argument 'a'
+zabdevk (1, 2, 3, 4, 5) {'a': 'aa', 'b': 'bb', 'd': 'dd', 'e': 'ee'} -> zabdevk() got multiple values for keyword argument 'a'
diff --git a/sys/lib/python/test/output/test_frozen b/sys/lib/python/test/output/test_frozen
new file mode 100644
index 000000000..76f17dbfd
--- /dev/null
+++ b/sys/lib/python/test/output/test_frozen
@@ -0,0 +1,4 @@
+test_frozen
+Hello world...
+Hello world...
+Hello world...
diff --git a/sys/lib/python/test/output/test_global b/sys/lib/python/test/output/test_global
new file mode 100644
index 000000000..a427a29cb
--- /dev/null
+++ b/sys/lib/python/test/output/test_global
@@ -0,0 +1,5 @@
+test_global
+got SyntaxError as expected
+got SyntaxError as expected
+got SyntaxError as expected
+as expected, no SyntaxError
diff --git a/sys/lib/python/test/output/test_grammar b/sys/lib/python/test/output/test_grammar
new file mode 100644
index 000000000..4fa9cb03c
--- /dev/null
+++ b/sys/lib/python/test/output/test_grammar
@@ -0,0 +1,69 @@
+test_grammar
+1. Parser
+1.1 Tokens
+1.1.1 Backslashes
+1.1.2 Numeric literals
+1.1.2.1 Plain integers
+1.1.2.2 Long integers
+1.1.2.3 Floating point
+1.1.3 String literals
+1.2 Grammar
+single_input
+file_input
+expr_input
+eval_input
+funcdef
+lambdef
+simple_stmt
+expr_stmt
+print_stmt
+1 2 3
+1 2 3
+1 1 1
+extended print_stmt
+1 2 3
+1 2 3
+1 1 1
+hello world
+del_stmt
+pass_stmt
+flow_stmt
+break_stmt
+continue_stmt
+continue + try/except ok
+continue + try/finally ok
+testing continue and break in try/except in loop
+return_stmt
+yield_stmt
+raise_stmt
+import_name
+import_from
+global_stmt
+exec_stmt
+assert_stmt
+if_stmt
+while_stmt
+for_stmt
+try_stmt
+suite
+test
+comparison
+binary mask ops
+shift ops
+additive ops
+multiplicative ops
+unary ops
+selectors
+
+[1, (1,), (1, 2), (1, 2, 3)]
+atoms
+classdef
+['Apple', 'Banana', 'Coco nut']
+[3, 6, 9, 12, 15]
+[3, 4, 5]
+[(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'), (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'), (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'), (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'), (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')]
+[(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'), (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'), (5, 'Banana'), (5, 'Coconut')]
+[[1], [1, 1], [1, 2, 4], [1, 3, 9, 27], [1, 4, 16, 64, 256]]
+[False, False, False]
+[[1, 2], [3, 4], [5, 6]]
+[('Boeing', 'Airliner'), ('Boeing', 'Engine'), ('Ford', 'Engine'), ('Macdonalds', 'Cheeseburger')]
diff --git a/sys/lib/python/test/output/test_httplib b/sys/lib/python/test/output/test_httplib
new file mode 100644
index 000000000..302b876d7
--- /dev/null
+++ b/sys/lib/python/test/output/test_httplib
@@ -0,0 +1,13 @@
+test_httplib
+reply: 'HTTP/1.1 200 Ok\r\n'
+Text
+reply: 'HTTP/1.1 400.100 Not Ok\r\n'
+BadStatusLine raised as expected
+InvalidURL raised as expected
+InvalidURL raised as expected
+reply: 'HTTP/1.1 200 OK\r\n'
+header: Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
+header: Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"
+reply: 'HTTP/1.1 200 OK\r\n'
+header: Content-Length: 14432
+
diff --git a/sys/lib/python/test/output/test_linuxaudiodev b/sys/lib/python/test/output/test_linuxaudiodev
new file mode 100644
index 000000000..3e8c69107
--- /dev/null
+++ b/sys/lib/python/test/output/test_linuxaudiodev
@@ -0,0 +1,7 @@
+test_linuxaudiodev
+expected rate >= 0, not -1
+expected sample size >= 0, not -2
+nchannels must be 1 or 2, not 3
+unknown audio encoding: 177
+for linear unsigned 16-bit little-endian audio, expected sample size 16, not 8
+for linear unsigned 8-bit audio, expected sample size 8, not 16
diff --git a/sys/lib/python/test/output/test_logging b/sys/lib/python/test/output/test_logging
new file mode 100644
index 000000000..c0d6e0645
--- /dev/null
+++ b/sys/lib/python/test/output/test_logging
@@ -0,0 +1,525 @@
+test_logging
+-- log_test0 begin ---------------------------------------------------
+CRITICAL:ERR:Message 0
+ERROR:ERR:Message 1
+CRITICAL:INF:Message 2
+ERROR:INF:Message 3
+WARNING:INF:Message 4
+INFO:INF:Message 5
+CRITICAL:INF.UNDEF:Message 6
+ERROR:INF.UNDEF:Message 7
+WARNING:INF.UNDEF:Message 8
+INFO:INF.UNDEF:Message 9
+CRITICAL:INF.ERR:Message 10
+ERROR:INF.ERR:Message 11
+CRITICAL:INF.ERR.UNDEF:Message 12
+ERROR:INF.ERR.UNDEF:Message 13
+CRITICAL:DEB:Message 14
+ERROR:DEB:Message 15
+WARNING:DEB:Message 16
+INFO:DEB:Message 17
+DEBUG:DEB:Message 18
+CRITICAL:UNDEF:Message 19
+ERROR:UNDEF:Message 20
+WARNING:UNDEF:Message 21
+INFO:UNDEF:Message 22
+CRITICAL:INF.BADPARENT.UNDEF:Message 23
+CRITICAL:INF.BADPARENT:Message 24
+INFO:INF:Finish up, it's closing time. Messages should bear numbers 0 through 24.
+-- log_test0 end ---------------------------------------------------
+-- log_test1 begin ---------------------------------------------------
+-- setting logging level to 'Boring' -----
+Boring:root:This should only be seen at the 'Boring' logging level (or lower)
+Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
+Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower)
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Chatterbox' -----
+Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
+Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower)
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Garrulous' -----
+Garrulous:root:This should only be seen at the 'Garrulous' logging level (or lower)
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Talkative' -----
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Verbose' -----
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Sociable' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Effusive' -----
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Terse' -----
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Taciturn' -----
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Silent' -----
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- Filtering at handler level to SOCIABLE --
+-- setting logging level to 'Boring' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Chatterbox' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Garrulous' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Talkative' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Verbose' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Sociable' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Effusive' -----
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Terse' -----
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Taciturn' -----
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Silent' -----
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- Filtering using GARRULOUS filter --
+-- setting logging level to 'Boring' -----
+Boring:root:This should only be seen at the 'Boring' logging level (or lower)
+Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Chatterbox' -----
+Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Garrulous' -----
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Talkative' -----
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Verbose' -----
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Sociable' -----
+Sociable:root:This should only be seen at the 'Sociable' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Effusive' -----
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Terse' -----
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Taciturn' -----
+Taciturn:root:This should only be seen at the 'Taciturn' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Silent' -----
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- Filtering using specific filter for SOCIABLE, TACITURN --
+-- setting logging level to 'Boring' -----
+Boring:root:This should only be seen at the 'Boring' logging level (or lower)
+Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Chatterbox' -----
+Chatterbox:root:This should only be seen at the 'Chatterbox' logging level (or lower)
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Garrulous' -----
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Talkative' -----
+Talkative:root:This should only be seen at the 'Talkative' logging level (or lower)
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Verbose' -----
+Verbose:root:This should only be seen at the 'Verbose' logging level (or lower)
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Sociable' -----
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Effusive' -----
+Effusive:root:This should only be seen at the 'Effusive' logging level (or lower)
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Terse' -----
+Terse:root:This should only be seen at the 'Terse' logging level (or lower)
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Taciturn' -----
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- setting logging level to 'Silent' -----
+Silent:root:This should only be seen at the 'Silent' logging level (or lower)
+-- log_test1 end ---------------------------------------------------
+-- log_test2 begin ---------------------------------------------------
+-- logging at DEBUG, nothing should be seen yet --
+-- logging at INFO, nothing should be seen yet --
+-- logging at WARNING, 3 messages should be seen --
+DEBUG:root:Debug message
+INFO:root:Info message
+WARNING:root:Warn message
+-- logging 0 at INFO, messages should be seen every 10 events --
+-- logging 1 at INFO, messages should be seen every 10 events --
+-- logging 2 at INFO, messages should be seen every 10 events --
+-- logging 3 at INFO, messages should be seen every 10 events --
+-- logging 4 at INFO, messages should be seen every 10 events --
+-- logging 5 at INFO, messages should be seen every 10 events --
+-- logging 6 at INFO, messages should be seen every 10 events --
+-- logging 7 at INFO, messages should be seen every 10 events --
+-- logging 8 at INFO, messages should be seen every 10 events --
+-- logging 9 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 0
+INFO:root:Info index = 1
+INFO:root:Info index = 2
+INFO:root:Info index = 3
+INFO:root:Info index = 4
+INFO:root:Info index = 5
+INFO:root:Info index = 6
+INFO:root:Info index = 7
+INFO:root:Info index = 8
+INFO:root:Info index = 9
+-- logging 10 at INFO, messages should be seen every 10 events --
+-- logging 11 at INFO, messages should be seen every 10 events --
+-- logging 12 at INFO, messages should be seen every 10 events --
+-- logging 13 at INFO, messages should be seen every 10 events --
+-- logging 14 at INFO, messages should be seen every 10 events --
+-- logging 15 at INFO, messages should be seen every 10 events --
+-- logging 16 at INFO, messages should be seen every 10 events --
+-- logging 17 at INFO, messages should be seen every 10 events --
+-- logging 18 at INFO, messages should be seen every 10 events --
+-- logging 19 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 10
+INFO:root:Info index = 11
+INFO:root:Info index = 12
+INFO:root:Info index = 13
+INFO:root:Info index = 14
+INFO:root:Info index = 15
+INFO:root:Info index = 16
+INFO:root:Info index = 17
+INFO:root:Info index = 18
+INFO:root:Info index = 19
+-- logging 20 at INFO, messages should be seen every 10 events --
+-- logging 21 at INFO, messages should be seen every 10 events --
+-- logging 22 at INFO, messages should be seen every 10 events --
+-- logging 23 at INFO, messages should be seen every 10 events --
+-- logging 24 at INFO, messages should be seen every 10 events --
+-- logging 25 at INFO, messages should be seen every 10 events --
+-- logging 26 at INFO, messages should be seen every 10 events --
+-- logging 27 at INFO, messages should be seen every 10 events --
+-- logging 28 at INFO, messages should be seen every 10 events --
+-- logging 29 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 20
+INFO:root:Info index = 21
+INFO:root:Info index = 22
+INFO:root:Info index = 23
+INFO:root:Info index = 24
+INFO:root:Info index = 25
+INFO:root:Info index = 26
+INFO:root:Info index = 27
+INFO:root:Info index = 28
+INFO:root:Info index = 29
+-- logging 30 at INFO, messages should be seen every 10 events --
+-- logging 31 at INFO, messages should be seen every 10 events --
+-- logging 32 at INFO, messages should be seen every 10 events --
+-- logging 33 at INFO, messages should be seen every 10 events --
+-- logging 34 at INFO, messages should be seen every 10 events --
+-- logging 35 at INFO, messages should be seen every 10 events --
+-- logging 36 at INFO, messages should be seen every 10 events --
+-- logging 37 at INFO, messages should be seen every 10 events --
+-- logging 38 at INFO, messages should be seen every 10 events --
+-- logging 39 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 30
+INFO:root:Info index = 31
+INFO:root:Info index = 32
+INFO:root:Info index = 33
+INFO:root:Info index = 34
+INFO:root:Info index = 35
+INFO:root:Info index = 36
+INFO:root:Info index = 37
+INFO:root:Info index = 38
+INFO:root:Info index = 39
+-- logging 40 at INFO, messages should be seen every 10 events --
+-- logging 41 at INFO, messages should be seen every 10 events --
+-- logging 42 at INFO, messages should be seen every 10 events --
+-- logging 43 at INFO, messages should be seen every 10 events --
+-- logging 44 at INFO, messages should be seen every 10 events --
+-- logging 45 at INFO, messages should be seen every 10 events --
+-- logging 46 at INFO, messages should be seen every 10 events --
+-- logging 47 at INFO, messages should be seen every 10 events --
+-- logging 48 at INFO, messages should be seen every 10 events --
+-- logging 49 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 40
+INFO:root:Info index = 41
+INFO:root:Info index = 42
+INFO:root:Info index = 43
+INFO:root:Info index = 44
+INFO:root:Info index = 45
+INFO:root:Info index = 46
+INFO:root:Info index = 47
+INFO:root:Info index = 48
+INFO:root:Info index = 49
+-- logging 50 at INFO, messages should be seen every 10 events --
+-- logging 51 at INFO, messages should be seen every 10 events --
+-- logging 52 at INFO, messages should be seen every 10 events --
+-- logging 53 at INFO, messages should be seen every 10 events --
+-- logging 54 at INFO, messages should be seen every 10 events --
+-- logging 55 at INFO, messages should be seen every 10 events --
+-- logging 56 at INFO, messages should be seen every 10 events --
+-- logging 57 at INFO, messages should be seen every 10 events --
+-- logging 58 at INFO, messages should be seen every 10 events --
+-- logging 59 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 50
+INFO:root:Info index = 51
+INFO:root:Info index = 52
+INFO:root:Info index = 53
+INFO:root:Info index = 54
+INFO:root:Info index = 55
+INFO:root:Info index = 56
+INFO:root:Info index = 57
+INFO:root:Info index = 58
+INFO:root:Info index = 59
+-- logging 60 at INFO, messages should be seen every 10 events --
+-- logging 61 at INFO, messages should be seen every 10 events --
+-- logging 62 at INFO, messages should be seen every 10 events --
+-- logging 63 at INFO, messages should be seen every 10 events --
+-- logging 64 at INFO, messages should be seen every 10 events --
+-- logging 65 at INFO, messages should be seen every 10 events --
+-- logging 66 at INFO, messages should be seen every 10 events --
+-- logging 67 at INFO, messages should be seen every 10 events --
+-- logging 68 at INFO, messages should be seen every 10 events --
+-- logging 69 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 60
+INFO:root:Info index = 61
+INFO:root:Info index = 62
+INFO:root:Info index = 63
+INFO:root:Info index = 64
+INFO:root:Info index = 65
+INFO:root:Info index = 66
+INFO:root:Info index = 67
+INFO:root:Info index = 68
+INFO:root:Info index = 69
+-- logging 70 at INFO, messages should be seen every 10 events --
+-- logging 71 at INFO, messages should be seen every 10 events --
+-- logging 72 at INFO, messages should be seen every 10 events --
+-- logging 73 at INFO, messages should be seen every 10 events --
+-- logging 74 at INFO, messages should be seen every 10 events --
+-- logging 75 at INFO, messages should be seen every 10 events --
+-- logging 76 at INFO, messages should be seen every 10 events --
+-- logging 77 at INFO, messages should be seen every 10 events --
+-- logging 78 at INFO, messages should be seen every 10 events --
+-- logging 79 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 70
+INFO:root:Info index = 71
+INFO:root:Info index = 72
+INFO:root:Info index = 73
+INFO:root:Info index = 74
+INFO:root:Info index = 75
+INFO:root:Info index = 76
+INFO:root:Info index = 77
+INFO:root:Info index = 78
+INFO:root:Info index = 79
+-- logging 80 at INFO, messages should be seen every 10 events --
+-- logging 81 at INFO, messages should be seen every 10 events --
+-- logging 82 at INFO, messages should be seen every 10 events --
+-- logging 83 at INFO, messages should be seen every 10 events --
+-- logging 84 at INFO, messages should be seen every 10 events --
+-- logging 85 at INFO, messages should be seen every 10 events --
+-- logging 86 at INFO, messages should be seen every 10 events --
+-- logging 87 at INFO, messages should be seen every 10 events --
+-- logging 88 at INFO, messages should be seen every 10 events --
+-- logging 89 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 80
+INFO:root:Info index = 81
+INFO:root:Info index = 82
+INFO:root:Info index = 83
+INFO:root:Info index = 84
+INFO:root:Info index = 85
+INFO:root:Info index = 86
+INFO:root:Info index = 87
+INFO:root:Info index = 88
+INFO:root:Info index = 89
+-- logging 90 at INFO, messages should be seen every 10 events --
+-- logging 91 at INFO, messages should be seen every 10 events --
+-- logging 92 at INFO, messages should be seen every 10 events --
+-- logging 93 at INFO, messages should be seen every 10 events --
+-- logging 94 at INFO, messages should be seen every 10 events --
+-- logging 95 at INFO, messages should be seen every 10 events --
+-- logging 96 at INFO, messages should be seen every 10 events --
+-- logging 97 at INFO, messages should be seen every 10 events --
+-- logging 98 at INFO, messages should be seen every 10 events --
+-- logging 99 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 90
+INFO:root:Info index = 91
+INFO:root:Info index = 92
+INFO:root:Info index = 93
+INFO:root:Info index = 94
+INFO:root:Info index = 95
+INFO:root:Info index = 96
+INFO:root:Info index = 97
+INFO:root:Info index = 98
+INFO:root:Info index = 99
+-- logging 100 at INFO, messages should be seen every 10 events --
+-- logging 101 at INFO, messages should be seen every 10 events --
+INFO:root:Info index = 100
+INFO:root:Info index = 101
+-- log_test2 end ---------------------------------------------------
+-- log_test3 begin ---------------------------------------------------
+Unfiltered...
+INFO:a:Info 1
+INFO:a.b:Info 2
+INFO:a.c:Info 3
+INFO:a.b.c:Info 4
+INFO:a.b.c.d:Info 5
+INFO:a.bb.c:Info 6
+INFO:b:Info 7
+INFO:b.a:Info 8
+INFO:c.a.b:Info 9
+INFO:a.bb:Info 10
+Filtered with 'a.b'...
+INFO:a.b:Info 2
+INFO:a.b.c:Info 4
+INFO:a.b.c.d:Info 5
+-- log_test3 end ---------------------------------------------------
+-- log_test4 begin ---------------------------------------------------
+config0: ok.
+config1: ok.
+config2: <type 'exceptions.AttributeError'>
+config3: <type 'exceptions.KeyError'>
+-- log_test4 end ---------------------------------------------------
+-- log_test5 begin ---------------------------------------------------
+ERROR:root:just testing
+<type 'exceptions.KeyError'>... Don't panic!
+-- log_test5 end ---------------------------------------------------
+-- logrecv output begin ---------------------------------------------------
+ERR -> CRITICAL: Message 0 (via logrecv.tcp.ERR)
+ERR -> ERROR: Message 1 (via logrecv.tcp.ERR)
+INF -> CRITICAL: Message 2 (via logrecv.tcp.INF)
+INF -> ERROR: Message 3 (via logrecv.tcp.INF)
+INF -> WARNING: Message 4 (via logrecv.tcp.INF)
+INF -> INFO: Message 5 (via logrecv.tcp.INF)
+INF.UNDEF -> CRITICAL: Message 6 (via logrecv.tcp.INF.UNDEF)
+INF.UNDEF -> ERROR: Message 7 (via logrecv.tcp.INF.UNDEF)
+INF.UNDEF -> WARNING: Message 8 (via logrecv.tcp.INF.UNDEF)
+INF.UNDEF -> INFO: Message 9 (via logrecv.tcp.INF.UNDEF)
+INF.ERR -> CRITICAL: Message 10 (via logrecv.tcp.INF.ERR)
+INF.ERR -> ERROR: Message 11 (via logrecv.tcp.INF.ERR)
+INF.ERR.UNDEF -> CRITICAL: Message 12 (via logrecv.tcp.INF.ERR.UNDEF)
+INF.ERR.UNDEF -> ERROR: Message 13 (via logrecv.tcp.INF.ERR.UNDEF)
+DEB -> CRITICAL: Message 14 (via logrecv.tcp.DEB)
+DEB -> ERROR: Message 15 (via logrecv.tcp.DEB)
+DEB -> WARNING: Message 16 (via logrecv.tcp.DEB)
+DEB -> INFO: Message 17 (via logrecv.tcp.DEB)
+DEB -> DEBUG: Message 18 (via logrecv.tcp.DEB)
+UNDEF -> CRITICAL: Message 19 (via logrecv.tcp.UNDEF)
+UNDEF -> ERROR: Message 20 (via logrecv.tcp.UNDEF)
+UNDEF -> WARNING: Message 21 (via logrecv.tcp.UNDEF)
+UNDEF -> INFO: Message 22 (via logrecv.tcp.UNDEF)
+INF.BADPARENT.UNDEF -> CRITICAL: Message 23 (via logrecv.tcp.INF.BADPARENT.UNDEF)
+INF.BADPARENT -> CRITICAL: Message 24 (via logrecv.tcp.INF.BADPARENT)
+INF -> INFO: Finish up, it's closing time. Messages should bear numbers 0 through 24. (via logrecv.tcp.INF)
+-- logrecv output end ---------------------------------------------------
diff --git a/sys/lib/python/test/output/test_math b/sys/lib/python/test/output/test_math
new file mode 100644
index 000000000..4c8f77c95
--- /dev/null
+++ b/sys/lib/python/test/output/test_math
@@ -0,0 +1,28 @@
+test_math
+math module, testing with eps 1e-05
+constants
+acos
+asin
+atan
+atan2
+ceil
+cos
+cosh
+degrees
+exp
+fabs
+floor
+fmod
+frexp
+hypot
+ldexp
+log
+log10
+modf
+pow
+radians
+sin
+sinh
+sqrt
+tan
+tanh
diff --git a/sys/lib/python/test/output/test_mmap b/sys/lib/python/test/output/test_mmap
new file mode 100644
index 000000000..605f840f5
--- /dev/null
+++ b/sys/lib/python/test/output/test_mmap
@@ -0,0 +1,38 @@
+test_mmap
+<type 'mmap.mmap'>
+ Position of foo: 1.0 pages
+ Length of file: 2.0 pages
+ Contents of byte 0: '\x00'
+ Contents of first 3 bytes: '\x00\x00\x00'
+
+ Modifying file's content...
+ Contents of byte 0: '3'
+ Contents of first 3 bytes: '3\x00\x00'
+ Contents of second page: '\x00foobar\x00'
+ Regex match on mmap (page start, length of match): 1.0 6
+ Seek to zeroth byte
+ Seek to 42nd byte
+ Seek to last byte
+ Try to seek to negative position...
+ Try to seek beyond end of mmap...
+ Try to seek to negative position...
+ Attempting resize()
+ Creating 10 byte test data file.
+ Opening mmap with access=ACCESS_READ
+ Ensuring that readonly mmap can't be slice assigned.
+ Ensuring that readonly mmap can't be item assigned.
+ Ensuring that readonly mmap can't be write() to.
+ Ensuring that readonly mmap can't be write_byte() to.
+ Ensuring that readonly mmap can't be resized.
+ Opening mmap with size too big
+ Opening mmap with access=ACCESS_WRITE
+ Modifying write-through memory map.
+ Opening mmap with access=ACCESS_COPY
+ Modifying copy-on-write memory map.
+ Ensuring copy-on-write maps cannot be resized.
+ Ensuring invalid access parameter raises exception.
+ Try opening a bad file descriptor...
+ Ensuring that passing 0 as map length sets map size to current file size.
+ Ensuring that passing 0 as map length sets map size to current file size.
+ anonymous mmap.mmap(-1, PAGESIZE)...
+ Test passed
diff --git a/sys/lib/python/test/output/test_new b/sys/lib/python/test/output/test_new
new file mode 100644
index 000000000..b7f2ed97f
--- /dev/null
+++ b/sys/lib/python/test/output/test_new
@@ -0,0 +1,7 @@
+test_new
+new.module()
+new.classobj()
+new.instance()
+new.instancemethod()
+new.function()
+new.code()
diff --git a/sys/lib/python/test/output/test_nis b/sys/lib/python/test/output/test_nis
new file mode 100644
index 000000000..0853ab477
--- /dev/null
+++ b/sys/lib/python/test/output/test_nis
@@ -0,0 +1,2 @@
+test_nis
+nis.maps()
diff --git a/sys/lib/python/test/output/test_opcodes b/sys/lib/python/test/output/test_opcodes
new file mode 100644
index 000000000..4685571b4
--- /dev/null
+++ b/sys/lib/python/test/output/test_opcodes
@@ -0,0 +1,6 @@
+test_opcodes
+2. Opcodes
+XXX Not yet fully implemented
+2.1 try inside for loop
+2.2 raise class exceptions
+2.3 comparing function objects
diff --git a/sys/lib/python/test/output/test_openpty b/sys/lib/python/test/output/test_openpty
new file mode 100644
index 000000000..a8b8b5eeb
--- /dev/null
+++ b/sys/lib/python/test/output/test_openpty
@@ -0,0 +1,2 @@
+test_openpty
+Ping!
diff --git a/sys/lib/python/test/output/test_operations b/sys/lib/python/test/output/test_operations
new file mode 100644
index 000000000..8a1bc2a22
--- /dev/null
+++ b/sys/lib/python/test/output/test_operations
@@ -0,0 +1,21 @@
+test_operations
+3. Operations
+XXX Mostly not yet implemented
+3.1 Dictionary lookups fail if __cmp__() raises an exception
+raising error
+d[x2] = 2: caught the RuntimeError outside
+raising error
+z = d[x2]: caught the RuntimeError outside
+raising error
+x2 in d: caught the RuntimeError outside
+raising error
+d.has_key(x2): caught the RuntimeError outside
+raising error
+d.get(x2): caught the RuntimeError outside
+raising error
+d.setdefault(x2, 42): caught the RuntimeError outside
+raising error
+d.pop(x2): caught the RuntimeError outside
+raising error
+d.update({x2: 2}): caught the RuntimeError outside
+resize bugs not triggered.
diff --git a/sys/lib/python/test/output/test_ossaudiodev b/sys/lib/python/test/output/test_ossaudiodev
new file mode 100644
index 000000000..f0df5d2f6
--- /dev/null
+++ b/sys/lib/python/test/output/test_ossaudiodev
@@ -0,0 +1,2 @@
+test_ossaudiodev
+playing test sound file (expected running time: 2.93 sec)
diff --git a/sys/lib/python/test/output/test_pep277 b/sys/lib/python/test/output/test_pep277
new file mode 100644
index 000000000..75e50271c
--- /dev/null
+++ b/sys/lib/python/test/output/test_pep277
@@ -0,0 +1,3 @@
+test_pep277
+u'\xdf-\u66e8\u66e9\u66eb'
+[u'Gr\xfc\xdf-Gott', u'abc', u'ascii', u'\u0393\u03b5\u03b9\u03ac-\u03c3\u03b1\u03c2', u'\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435', u'\u05d4\u05e9\u05e7\u05e6\u05e5\u05e1', u'\u306b\u307d\u3093', u'\u66e8\u05e9\u3093\u0434\u0393\xdf', u'\u66e8\u66e9\u66eb']
diff --git a/sys/lib/python/test/output/test_pkg b/sys/lib/python/test/output/test_pkg
new file mode 100644
index 000000000..8a5ab8de1
--- /dev/null
+++ b/sys/lib/python/test/output/test_pkg
@@ -0,0 +1,45 @@
+test_pkg
+running test t1
+running test t2
+t2 loading
+doc for t2
+t2.sub.subsub loading
+t2 t2.sub t2.sub.subsub
+['sub', 't2']
+t2.sub t2.sub.subsub
+t2.sub.subsub
+['spam', 'sub', 'subsub', 't2']
+t2 t2.sub t2.sub.subsub
+['spam', 'sub', 'subsub', 't2']
+running test t3
+t3 loading
+t3.sub.subsub loading
+t3 t3.sub t3.sub.subsub
+t3 loading
+t3.sub.subsub loading
+running test t4
+t4 loading
+t4.sub.subsub loading
+t4.sub.subsub.spam = 1
+running test t5
+t5.foo loading
+t5.string loading
+1
+['foo', 'string', 't5']
+['__doc__', '__file__', '__name__', '__path__', 'foo', 'string', 't5']
+['__doc__', '__file__', '__name__', 'string']
+['__doc__', '__file__', '__name__', 'spam']
+running test t6
+['__all__', '__doc__', '__file__', '__name__', '__path__']
+t6.spam loading
+t6.ham loading
+t6.eggs loading
+['__all__', '__doc__', '__file__', '__name__', '__path__', 'eggs', 'ham', 'spam']
+['eggs', 'ham', 'spam', 't6']
+running test t7
+t7 loading
+['__doc__', '__file__', '__name__', '__path__']
+['__doc__', '__file__', '__name__', '__path__']
+t7.sub.subsub loading
+['__doc__', '__file__', '__name__', '__path__', 'spam']
+t7.sub.subsub.spam = 1
diff --git a/sys/lib/python/test/output/test_poll b/sys/lib/python/test/output/test_poll
new file mode 100644
index 000000000..ca61d377d
--- /dev/null
+++ b/sys/lib/python/test/output/test_poll
@@ -0,0 +1,19 @@
+test_poll
+Running poll test 1
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+ This is a test.
+Poll test 1 complete
+Running poll test 2
+Poll test 2 complete
+Running poll test 3
+Poll test 3 complete
diff --git a/sys/lib/python/test/output/test_popen b/sys/lib/python/test/output/test_popen
new file mode 100644
index 000000000..db2ac06d0
--- /dev/null
+++ b/sys/lib/python/test/output/test_popen
@@ -0,0 +1,3 @@
+test_popen
+Test popen:
+popen seemed to process the command-line correctly
diff --git a/sys/lib/python/test/output/test_popen2 b/sys/lib/python/test/output/test_popen2
new file mode 100644
index 000000000..a66cde934
--- /dev/null
+++ b/sys/lib/python/test/output/test_popen2
@@ -0,0 +1,9 @@
+test_popen2
+Test popen2 module:
+testing popen2...
+testing popen3...
+All OK
+Testing os module:
+testing popen2...
+testing popen3...
+All OK
diff --git a/sys/lib/python/test/output/test_profile b/sys/lib/python/test/output/test_profile
new file mode 100644
index 000000000..96bd77f68
--- /dev/null
+++ b/sys/lib/python/test/output/test_profile
@@ -0,0 +1,84 @@
+test_profile
+ 127 function calls (107 primitive calls) in 1.000 CPU seconds
+
+ Ordered by: standard name
+
+ ncalls tottime percall cumtime percall filename:lineno(function)
+ 4 0.000 0.000 0.000 0.000 :0(append)
+ 4 0.000 0.000 0.000 0.000 :0(exc_info)
+ 12 0.000 0.000 0.012 0.001 :0(hasattr)
+ 8 0.000 0.000 0.000 0.000 :0(range)
+ 1 0.000 0.000 0.000 0.000 :0(setprofile)
+ 1 0.000 0.000 1.000 1.000 <string>:1(<module>)
+ 0 0.000 0.000 profile:0(profiler)
+ 1 0.000 0.000 1.000 1.000 profile:0(testfunc())
+ 8 0.064 0.008 0.080 0.010 test_profile.py:103(subhelper)
+ 28 0.028 0.001 0.028 0.001 test_profile.py:115(__getattr__)
+ 1 0.270 0.270 1.000 1.000 test_profile.py:30(testfunc)
+ 23/3 0.150 0.007 0.170 0.057 test_profile.py:40(factorial)
+ 20 0.020 0.001 0.020 0.001 test_profile.py:53(mul)
+ 2 0.040 0.020 0.600 0.300 test_profile.py:60(helper)
+ 4 0.116 0.029 0.120 0.030 test_profile.py:78(helper1)
+ 2 0.000 0.000 0.140 0.070 test_profile.py:89(helper2_indirect)
+ 8 0.312 0.039 0.400 0.050 test_profile.py:93(helper2)
+
+
+ Ordered by: standard name
+
+Function called...
+:0(append) ->
+:0(exc_info) ->
+:0(hasattr) -> test_profile.py:115(__getattr__)(12) 0.028
+:0(range) ->
+:0(setprofile) ->
+<string>:1(<module>) -> test_profile.py:30(testfunc)(1) 1.000
+profile:0(profiler) -> profile:0(testfunc())(1) 1.000
+profile:0(testfunc()) -> :0(setprofile)(1) 0.000
+ <string>:1(<module>)(1) 1.000
+test_profile.py:103(subhelper) -> :0(range)(8) 0.000
+ test_profile.py:115(__getattr__)(16) 0.028
+test_profile.py:115(__getattr__) ->
+test_profile.py:30(testfunc) -> test_profile.py:40(factorial)(1) 0.170
+ test_profile.py:60(helper)(2) 0.600
+test_profile.py:40(factorial) -> test_profile.py:40(factorial)(20) 0.170
+ test_profile.py:53(mul)(20) 0.020
+test_profile.py:53(mul) ->
+test_profile.py:60(helper) -> test_profile.py:78(helper1)(4) 0.120
+ test_profile.py:89(helper2_indirect)(2) 0.140
+ test_profile.py:93(helper2)(6) 0.400
+test_profile.py:78(helper1) -> :0(append)(4) 0.000
+ :0(exc_info)(4) 0.000
+ :0(hasattr)(4) 0.012
+test_profile.py:89(helper2_indirect) -> test_profile.py:40(factorial)(2) 0.170
+ test_profile.py:93(helper2)(2) 0.400
+test_profile.py:93(helper2) -> :0(hasattr)(8) 0.012
+ test_profile.py:103(subhelper)(8) 0.080
+
+
+ Ordered by: standard name
+
+Function was called by...
+:0(append) <- test_profile.py:78(helper1)(4) 0.120
+:0(exc_info) <- test_profile.py:78(helper1)(4) 0.120
+:0(hasattr) <- test_profile.py:78(helper1)(4) 0.120
+ test_profile.py:93(helper2)(8) 0.400
+:0(range) <- test_profile.py:103(subhelper)(8) 0.080
+:0(setprofile) <- profile:0(testfunc())(1) 1.000
+<string>:1(<module>) <- profile:0(testfunc())(1) 1.000
+profile:0(profiler) <-
+profile:0(testfunc()) <- profile:0(profiler)(1) 0.000
+test_profile.py:103(subhelper) <- test_profile.py:93(helper2)(8) 0.400
+test_profile.py:115(__getattr__) <- :0(hasattr)(12) 0.012
+ test_profile.py:103(subhelper)(16) 0.080
+test_profile.py:30(testfunc) <- <string>:1(<module>)(1) 1.000
+test_profile.py:40(factorial) <- test_profile.py:30(testfunc)(1) 1.000
+ test_profile.py:40(factorial)(20) 0.170
+ test_profile.py:89(helper2_indirect)(2) 0.140
+test_profile.py:53(mul) <- test_profile.py:40(factorial)(20) 0.170
+test_profile.py:60(helper) <- test_profile.py:30(testfunc)(2) 1.000
+test_profile.py:78(helper1) <- test_profile.py:60(helper)(4) 0.600
+test_profile.py:89(helper2_indirect) <- test_profile.py:60(helper)(2) 0.600
+test_profile.py:93(helper2) <- test_profile.py:60(helper)(6) 0.600
+ test_profile.py:89(helper2_indirect)(2) 0.140
+
+
diff --git a/sys/lib/python/test/output/test_pty b/sys/lib/python/test/output/test_pty
new file mode 100644
index 000000000..b6e0e32ac
--- /dev/null
+++ b/sys/lib/python/test/output/test_pty
@@ -0,0 +1,3 @@
+test_pty
+I wish to buy a fish license.
+For my pet fish, Eric.
diff --git a/sys/lib/python/test/output/test_pyexpat b/sys/lib/python/test/output/test_pyexpat
new file mode 100644
index 000000000..61fe81d63
--- /dev/null
+++ b/sys/lib/python/test/output/test_pyexpat
@@ -0,0 +1,110 @@
+test_pyexpat
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+PI:
+ 'xml-stylesheet' 'href="stylesheet.css"'
+Comment:
+ ' comment data '
+Notation declared: ('notation', None, 'notation.jpeg', None)
+Unparsed entity decl:
+ ('unparsed_entity', None, 'entity.file', None, 'notation')
+Start element:
+ 'root' {'attr1': 'value1', 'attr2': 'value2\xe1\xbd\x80'}
+NS decl:
+ 'myns' 'http://www.python.org/namespace'
+Start element:
+ 'http://www.python.org/namespace!subelement' {}
+Character data:
+ 'Contents of subelements'
+End element:
+ 'http://www.python.org/namespace!subelement'
+End of NS decl:
+ 'myns'
+Start element:
+ 'sub2' {}
+Start of CDATA section
+Character data:
+ 'contents of CDATA section'
+End of CDATA section
+End element:
+ 'sub2'
+External entity ref: (None, 'entity.file', None)
+End element:
+ 'root'
+PI:
+ u'xml-stylesheet' u'href="stylesheet.css"'
+Comment:
+ u' comment data '
+Notation declared: (u'notation', None, u'notation.jpeg', None)
+Unparsed entity decl:
+ (u'unparsed_entity', None, u'entity.file', None, u'notation')
+Start element:
+ u'root' {u'attr1': u'value1', u'attr2': u'value2\u1f40'}
+NS decl:
+ u'myns' u'http://www.python.org/namespace'
+Start element:
+ u'http://www.python.org/namespace!subelement' {}
+Character data:
+ u'Contents of subelements'
+End element:
+ u'http://www.python.org/namespace!subelement'
+End of NS decl:
+ u'myns'
+Start element:
+ u'sub2' {}
+Start of CDATA section
+Character data:
+ u'contents of CDATA section'
+End of CDATA section
+End element:
+ u'sub2'
+External entity ref: (None, u'entity.file', None)
+End element:
+ u'root'
+PI:
+ u'xml-stylesheet' u'href="stylesheet.css"'
+Comment:
+ u' comment data '
+Notation declared: (u'notation', None, u'notation.jpeg', None)
+Unparsed entity decl:
+ (u'unparsed_entity', None, u'entity.file', None, u'notation')
+Start element:
+ u'root' {u'attr1': u'value1', u'attr2': u'value2\u1f40'}
+NS decl:
+ u'myns' u'http://www.python.org/namespace'
+Start element:
+ u'http://www.python.org/namespace!subelement' {}
+Character data:
+ u'Contents of subelements'
+End element:
+ u'http://www.python.org/namespace!subelement'
+End of NS decl:
+ u'myns'
+Start element:
+ u'sub2' {}
+Start of CDATA section
+Character data:
+ u'contents of CDATA section'
+End of CDATA section
+End element:
+ u'sub2'
+External entity ref: (None, u'entity.file', None)
+End element:
+ u'root'
+
+Testing constructor for proper handling of namespace_separator values:
+Legal values tested o.k.
+Caught expected TypeError:
+ParserCreate() argument 2 must be string or None, not int
+Caught expected ValueError:
+namespace_separator must be at most one character, omitted, or None
diff --git a/sys/lib/python/test/output/test_regex b/sys/lib/python/test/output/test_regex
new file mode 100644
index 000000000..1deb26fe4
--- /dev/null
+++ b/sys/lib/python/test/output/test_regex
@@ -0,0 +1,29 @@
+test_regex
+no match: -1
+successful search: 6
+caught expected exception
+failed awk syntax: -1
+successful awk syntax: 2
+failed awk syntax: -1
+matching with group names and compile()
+-1
+caught expected exception
+matching with group names and symcomp()
+7
+801 999
+801
+('801', '999')
+('801', '999')
+realpat: \([0-9]+\) *\([0-9]+\)
+groupindex: {'one': 1, 'two': 2}
+not case folded search: -1
+case folded search: 6
+__members__: ['last', 'regs', 'translate', 'groupindex', 'realpat', 'givenpat']
+regs: ((6, 11), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1), (-1, -1))
+last: HELLO WORLD
+translate: 256
+givenpat: world
+match with pos: -1
+search with pos: 18
+bogus group: ('world', None, None)
+no name: caught expected exception
diff --git a/sys/lib/python/test/output/test_resource b/sys/lib/python/test/output/test_resource
new file mode 100644
index 000000000..aafed8330
--- /dev/null
+++ b/sys/lib/python/test/output/test_resource
@@ -0,0 +1,2 @@
+test_resource
+True
diff --git a/sys/lib/python/test/output/test_rgbimg b/sys/lib/python/test/output/test_rgbimg
new file mode 100644
index 000000000..8244b3bbc
--- /dev/null
+++ b/sys/lib/python/test/output/test_rgbimg
@@ -0,0 +1,2 @@
+test_rgbimg
+RGBimg test suite:
diff --git a/sys/lib/python/test/output/test_scope b/sys/lib/python/test/output/test_scope
new file mode 100644
index 000000000..a439e441e
--- /dev/null
+++ b/sys/lib/python/test/output/test_scope
@@ -0,0 +1,24 @@
+test_scope
+1. simple nesting
+2. extra nesting
+3. simple nesting + rebinding
+4. nesting with global but no free
+5. nesting through class
+6. nesting plus free ref to global
+7. nearest enclosing scope
+8. mixed freevars and cellvars
+9. free variable in method
+10. recursion
+11. unoptimized namespaces
+12. lambdas
+13. UnboundLocal
+14. complex definitions
+15. scope of global statements
+16. check leaks
+17. class and global
+18. verify that locals() works
+19. var is bound and free in class
+20. interaction with trace function
+20. eval and exec with free variables
+21. list comprehension with local variables
+22. eval with free variables
diff --git a/sys/lib/python/test/output/test_signal b/sys/lib/python/test/output/test_signal
new file mode 100644
index 000000000..aa6468910
--- /dev/null
+++ b/sys/lib/python/test/output/test_signal
@@ -0,0 +1,2 @@
+test_signal
+starting pause() loop...
diff --git a/sys/lib/python/test/output/test_thread b/sys/lib/python/test/output/test_thread
new file mode 100644
index 000000000..68c6a92da
--- /dev/null
+++ b/sys/lib/python/test/output/test_thread
@@ -0,0 +1,18 @@
+test_thread
+waiting for all tasks to complete
+all tasks done
+
+*** Barrier Test ***
+all tasks done
+
+*** Changing thread stack size ***
+caught expected ValueError setting stack_size(4096)
+successfully set stack_size(262144)
+successfully set stack_size(1048576)
+successfully set stack_size(0)
+trying stack_size = 262144
+waiting for all tasks to complete
+all tasks done
+trying stack_size = 1048576
+waiting for all tasks to complete
+all tasks done
diff --git a/sys/lib/python/test/output/test_threadedtempfile b/sys/lib/python/test/output/test_threadedtempfile
new file mode 100644
index 000000000..2552877a3
--- /dev/null
+++ b/sys/lib/python/test/output/test_threadedtempfile
@@ -0,0 +1,5 @@
+test_threadedtempfile
+Creating
+Starting
+Reaping
+Done: errors 0 ok 1000
diff --git a/sys/lib/python/test/output/test_tokenize b/sys/lib/python/test/output/test_tokenize
new file mode 100644
index 000000000..b78a22347
--- /dev/null
+++ b/sys/lib/python/test/output/test_tokenize
@@ -0,0 +1,659 @@
+test_tokenize
+1,0-1,35: COMMENT "# Tests for the 'tokenize' module.\n"
+2,0-2,43: COMMENT '# Large bits stolen from test_grammar.py. \n'
+3,0-3,1: NL '\n'
+4,0-4,11: COMMENT '# Comments\n'
+5,0-5,3: STRING '"#"'
+5,3-5,4: NEWLINE '\n'
+6,0-6,3: COMMENT "#'\n"
+7,0-7,3: COMMENT '#"\n'
+8,0-8,3: COMMENT '#\\\n'
+9,7-9,9: COMMENT '#\n'
+10,4-10,10: COMMENT '# abc\n'
+11,0-12,4: STRING "'''#\n#'''"
+12,4-12,5: NEWLINE '\n'
+13,0-13,1: NL '\n'
+14,0-14,1: NAME 'x'
+14,2-14,3: OP '='
+14,4-14,5: NUMBER '1'
+14,7-14,8: COMMENT '#'
+14,8-14,9: NEWLINE '\n'
+15,0-15,1: NL '\n'
+16,0-16,25: COMMENT '# Balancing continuation\n'
+17,0-17,1: NL '\n'
+18,0-18,1: NAME 'a'
+18,2-18,3: OP '='
+18,4-18,5: OP '('
+18,5-18,6: NUMBER '3'
+18,6-18,7: OP ','
+18,8-18,9: NUMBER '4'
+18,9-18,10: OP ','
+18,10-18,11: NL '\n'
+19,2-19,3: NUMBER '5'
+19,3-19,4: OP ','
+19,5-19,6: NUMBER '6'
+19,6-19,7: OP ')'
+19,7-19,8: NEWLINE '\n'
+20,0-20,1: NAME 'y'
+20,2-20,3: OP '='
+20,4-20,5: OP '['
+20,5-20,6: NUMBER '3'
+20,6-20,7: OP ','
+20,8-20,9: NUMBER '4'
+20,9-20,10: OP ','
+20,10-20,11: NL '\n'
+21,2-21,3: NUMBER '5'
+21,3-21,4: OP ']'
+21,4-21,5: NEWLINE '\n'
+22,0-22,1: NAME 'z'
+22,2-22,3: OP '='
+22,4-22,5: OP '{'
+22,5-22,8: STRING "'a'"
+22,8-22,9: OP ':'
+22,9-22,10: NUMBER '5'
+22,10-22,11: OP ','
+22,11-22,12: NL '\n'
+23,2-23,5: STRING "'b'"
+23,5-23,6: OP ':'
+23,6-23,7: NUMBER '6'
+23,7-23,8: OP '}'
+23,8-23,9: NEWLINE '\n'
+24,0-24,1: NAME 'x'
+24,2-24,3: OP '='
+24,4-24,5: OP '('
+24,5-24,8: NAME 'len'
+24,8-24,9: OP '('
+24,9-24,10: OP '`'
+24,10-24,11: NAME 'y'
+24,11-24,12: OP '`'
+24,12-24,13: OP ')'
+24,14-24,15: OP '+'
+24,16-24,17: NUMBER '5'
+24,17-24,18: OP '*'
+24,18-24,19: NAME 'x'
+24,20-24,21: OP '-'
+24,22-24,23: NAME 'a'
+24,23-24,24: OP '['
+24,24-24,25: NL '\n'
+25,3-25,4: NUMBER '3'
+25,5-25,6: OP ']'
+25,6-25,7: NL '\n'
+26,3-26,4: OP '-'
+26,5-26,6: NAME 'x'
+26,7-26,8: OP '+'
+26,9-26,12: NAME 'len'
+26,12-26,13: OP '('
+26,13-26,14: OP '{'
+26,14-26,15: NL '\n'
+27,3-27,4: OP '}'
+27,4-27,5: NL '\n'
+28,4-28,5: OP ')'
+28,5-28,6: NL '\n'
+29,2-29,3: OP ')'
+29,3-29,4: NEWLINE '\n'
+30,0-30,1: NL '\n'
+31,0-31,37: COMMENT '# Backslash means line continuation:\n'
+32,0-32,1: NAME 'x'
+32,2-32,3: OP '='
+32,4-32,5: NUMBER '1'
+33,0-33,1: OP '+'
+33,2-33,3: NUMBER '1'
+33,3-33,4: NEWLINE '\n'
+34,0-34,1: NL '\n'
+35,0-35,55: COMMENT '# Backslash does not means continuation in comments :\\\n'
+36,0-36,1: NAME 'x'
+36,2-36,3: OP '='
+36,4-36,5: NUMBER '0'
+36,5-36,6: NEWLINE '\n'
+37,0-37,1: NL '\n'
+38,0-38,20: COMMENT '# Ordinary integers\n'
+39,0-39,4: NUMBER '0xff'
+39,5-39,7: OP '<>'
+39,8-39,11: NUMBER '255'
+39,11-39,12: NEWLINE '\n'
+40,0-40,4: NUMBER '0377'
+40,5-40,7: OP '<>'
+40,8-40,11: NUMBER '255'
+40,11-40,12: NEWLINE '\n'
+41,0-41,10: NUMBER '2147483647'
+41,13-41,15: OP '!='
+41,16-41,28: NUMBER '017777777777'
+41,28-41,29: NEWLINE '\n'
+42,0-42,1: OP '-'
+42,1-42,11: NUMBER '2147483647'
+42,11-42,12: OP '-'
+42,12-42,13: NUMBER '1'
+42,14-42,16: OP '!='
+42,17-42,29: NUMBER '020000000000'
+42,29-42,30: NEWLINE '\n'
+43,0-43,12: NUMBER '037777777777'
+43,13-43,15: OP '!='
+43,16-43,17: OP '-'
+43,17-43,18: NUMBER '1'
+43,18-43,19: NEWLINE '\n'
+44,0-44,10: NUMBER '0xffffffff'
+44,11-44,13: OP '!='
+44,14-44,15: OP '-'
+44,15-44,16: NUMBER '1'
+44,16-44,17: NEWLINE '\n'
+45,0-45,1: NL '\n'
+46,0-46,16: COMMENT '# Long integers\n'
+47,0-47,1: NAME 'x'
+47,2-47,3: OP '='
+47,4-47,6: NUMBER '0L'
+47,6-47,7: NEWLINE '\n'
+48,0-48,1: NAME 'x'
+48,2-48,3: OP '='
+48,4-48,6: NUMBER '0l'
+48,6-48,7: NEWLINE '\n'
+49,0-49,1: NAME 'x'
+49,2-49,3: OP '='
+49,4-49,23: NUMBER '0xffffffffffffffffL'
+49,23-49,24: NEWLINE '\n'
+50,0-50,1: NAME 'x'
+50,2-50,3: OP '='
+50,4-50,23: NUMBER '0xffffffffffffffffl'
+50,23-50,24: NEWLINE '\n'
+51,0-51,1: NAME 'x'
+51,2-51,3: OP '='
+51,4-51,23: NUMBER '077777777777777777L'
+51,23-51,24: NEWLINE '\n'
+52,0-52,1: NAME 'x'
+52,2-52,3: OP '='
+52,4-52,23: NUMBER '077777777777777777l'
+52,23-52,24: NEWLINE '\n'
+53,0-53,1: NAME 'x'
+53,2-53,3: OP '='
+53,4-53,35: NUMBER '123456789012345678901234567890L'
+53,35-53,36: NEWLINE '\n'
+54,0-54,1: NAME 'x'
+54,2-54,3: OP '='
+54,4-54,35: NUMBER '123456789012345678901234567890l'
+54,35-54,36: NEWLINE '\n'
+55,0-55,1: NL '\n'
+56,0-56,25: COMMENT '# Floating-point numbers\n'
+57,0-57,1: NAME 'x'
+57,2-57,3: OP '='
+57,4-57,8: NUMBER '3.14'
+57,8-57,9: NEWLINE '\n'
+58,0-58,1: NAME 'x'
+58,2-58,3: OP '='
+58,4-58,8: NUMBER '314.'
+58,8-58,9: NEWLINE '\n'
+59,0-59,1: NAME 'x'
+59,2-59,3: OP '='
+59,4-59,9: NUMBER '0.314'
+59,9-59,10: NEWLINE '\n'
+60,0-60,18: COMMENT '# XXX x = 000.314\n'
+61,0-61,1: NAME 'x'
+61,2-61,3: OP '='
+61,4-61,8: NUMBER '.314'
+61,8-61,9: NEWLINE '\n'
+62,0-62,1: NAME 'x'
+62,2-62,3: OP '='
+62,4-62,8: NUMBER '3e14'
+62,8-62,9: NEWLINE '\n'
+63,0-63,1: NAME 'x'
+63,2-63,3: OP '='
+63,4-63,8: NUMBER '3E14'
+63,8-63,9: NEWLINE '\n'
+64,0-64,1: NAME 'x'
+64,2-64,3: OP '='
+64,4-64,9: NUMBER '3e-14'
+64,9-64,10: NEWLINE '\n'
+65,0-65,1: NAME 'x'
+65,2-65,3: OP '='
+65,4-65,9: NUMBER '3e+14'
+65,9-65,10: NEWLINE '\n'
+66,0-66,1: NAME 'x'
+66,2-66,3: OP '='
+66,4-66,9: NUMBER '3.e14'
+66,9-66,10: NEWLINE '\n'
+67,0-67,1: NAME 'x'
+67,2-67,3: OP '='
+67,4-67,9: NUMBER '.3e14'
+67,9-67,10: NEWLINE '\n'
+68,0-68,1: NAME 'x'
+68,2-68,3: OP '='
+68,4-68,9: NUMBER '3.1e4'
+68,9-68,10: NEWLINE '\n'
+69,0-69,1: NL '\n'
+70,0-70,18: COMMENT '# String literals\n'
+71,0-71,1: NAME 'x'
+71,2-71,3: OP '='
+71,4-71,6: STRING "''"
+71,6-71,7: OP ';'
+71,8-71,9: NAME 'y'
+71,10-71,11: OP '='
+71,12-71,14: STRING '""'
+71,14-71,15: OP ';'
+71,15-71,16: NEWLINE '\n'
+72,0-72,1: NAME 'x'
+72,2-72,3: OP '='
+72,4-72,8: STRING "'\\''"
+72,8-72,9: OP ';'
+72,10-72,11: NAME 'y'
+72,12-72,13: OP '='
+72,14-72,17: STRING '"\'"'
+72,17-72,18: OP ';'
+72,18-72,19: NEWLINE '\n'
+73,0-73,1: NAME 'x'
+73,2-73,3: OP '='
+73,4-73,7: STRING '\'"\''
+73,7-73,8: OP ';'
+73,9-73,10: NAME 'y'
+73,11-73,12: OP '='
+73,13-73,17: STRING '"\\""'
+73,17-73,18: OP ';'
+73,18-73,19: NEWLINE '\n'
+74,0-74,1: NAME 'x'
+74,2-74,3: OP '='
+74,4-74,32: STRING '"doesn\'t \\"shrink\\" does it"'
+74,32-74,33: NEWLINE '\n'
+75,0-75,1: NAME 'y'
+75,2-75,3: OP '='
+75,4-75,31: STRING '\'doesn\\\'t "shrink" does it\''
+75,31-75,32: NEWLINE '\n'
+76,0-76,1: NAME 'x'
+76,2-76,3: OP '='
+76,4-76,32: STRING '"does \\"shrink\\" doesn\'t it"'
+76,32-76,33: NEWLINE '\n'
+77,0-77,1: NAME 'y'
+77,2-77,3: OP '='
+77,4-77,31: STRING '\'does "shrink" doesn\\\'t it\''
+77,31-77,32: NEWLINE '\n'
+78,0-78,1: NAME 'x'
+78,2-78,3: OP '='
+78,4-83,3: STRING '"""\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n"""'
+83,3-83,4: NEWLINE '\n'
+84,0-84,1: NAME 'y'
+84,2-84,3: OP '='
+84,4-84,63: STRING '\'\\nThe "quick"\\nbrown fox\\njumps over\\nthe \\\'lazy\\\' dog.\\n\''
+84,63-84,64: NEWLINE '\n'
+85,0-85,1: NAME 'y'
+85,2-85,3: OP '='
+85,4-90,3: STRING '\'\'\'\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n\'\'\''
+90,3-90,4: OP ';'
+90,4-90,5: NEWLINE '\n'
+91,0-91,1: NAME 'y'
+91,2-91,3: OP '='
+91,4-96,1: STRING '"\\n\\\nThe \\"quick\\"\\n\\\nbrown fox\\n\\\njumps over\\n\\\nthe \'lazy\' dog.\\n\\\n"'
+96,1-96,2: OP ';'
+96,2-96,3: NEWLINE '\n'
+97,0-97,1: NAME 'y'
+97,2-97,3: OP '='
+97,4-102,1: STRING '\'\\n\\\nThe \\"quick\\"\\n\\\nbrown fox\\n\\\njumps over\\n\\\nthe \\\'lazy\\\' dog.\\n\\\n\''
+102,1-102,2: OP ';'
+102,2-102,3: NEWLINE '\n'
+103,0-103,1: NAME 'x'
+103,2-103,3: OP '='
+103,4-103,9: STRING "r'\\\\'"
+103,10-103,11: OP '+'
+103,12-103,17: STRING "R'\\\\'"
+103,17-103,18: NEWLINE '\n'
+104,0-104,1: NAME 'x'
+104,2-104,3: OP '='
+104,4-104,9: STRING "r'\\''"
+104,10-104,11: OP '+'
+104,12-104,14: STRING "''"
+104,14-104,15: NEWLINE '\n'
+105,0-105,1: NAME 'y'
+105,2-105,3: OP '='
+105,4-107,6: STRING "r'''\nfoo bar \\\\\nbaz'''"
+107,7-107,8: OP '+'
+107,9-108,6: STRING "R'''\nfoo'''"
+108,6-108,7: NEWLINE '\n'
+109,0-109,1: NAME 'y'
+109,2-109,3: OP '='
+109,4-111,3: STRING 'r"""foo\nbar \\\\ baz\n"""'
+111,4-111,5: OP '+'
+111,6-112,3: STRING "R'''spam\n'''"
+112,3-112,4: NEWLINE '\n'
+113,0-113,1: NAME 'x'
+113,2-113,3: OP '='
+113,4-113,10: STRING "u'abc'"
+113,11-113,12: OP '+'
+113,13-113,19: STRING "U'ABC'"
+113,19-113,20: NEWLINE '\n'
+114,0-114,1: NAME 'y'
+114,2-114,3: OP '='
+114,4-114,10: STRING 'u"abc"'
+114,11-114,12: OP '+'
+114,13-114,19: STRING 'U"ABC"'
+114,19-114,20: NEWLINE '\n'
+115,0-115,1: NAME 'x'
+115,2-115,3: OP '='
+115,4-115,11: STRING "ur'abc'"
+115,12-115,13: OP '+'
+115,14-115,21: STRING "Ur'ABC'"
+115,22-115,23: OP '+'
+115,24-115,31: STRING "uR'ABC'"
+115,32-115,33: OP '+'
+115,34-115,41: STRING "UR'ABC'"
+115,41-115,42: NEWLINE '\n'
+116,0-116,1: NAME 'y'
+116,2-116,3: OP '='
+116,4-116,11: STRING 'ur"abc"'
+116,12-116,13: OP '+'
+116,14-116,21: STRING 'Ur"ABC"'
+116,22-116,23: OP '+'
+116,24-116,31: STRING 'uR"ABC"'
+116,32-116,33: OP '+'
+116,34-116,41: STRING 'UR"ABC"'
+116,41-116,42: NEWLINE '\n'
+117,0-117,1: NAME 'x'
+117,2-117,3: OP '='
+117,4-117,10: STRING "ur'\\\\'"
+117,11-117,12: OP '+'
+117,13-117,19: STRING "UR'\\\\'"
+117,19-117,20: NEWLINE '\n'
+118,0-118,1: NAME 'x'
+118,2-118,3: OP '='
+118,4-118,10: STRING "ur'\\''"
+118,11-118,12: OP '+'
+118,13-118,15: STRING "''"
+118,15-118,16: NEWLINE '\n'
+119,0-119,1: NAME 'y'
+119,2-119,3: OP '='
+119,4-121,6: STRING "ur'''\nfoo bar \\\\\nbaz'''"
+121,7-121,8: OP '+'
+121,9-122,6: STRING "UR'''\nfoo'''"
+122,6-122,7: NEWLINE '\n'
+123,0-123,1: NAME 'y'
+123,2-123,3: OP '='
+123,4-125,3: STRING 'Ur"""foo\nbar \\\\ baz\n"""'
+125,4-125,5: OP '+'
+125,6-126,3: STRING "uR'''spam\n'''"
+126,3-126,4: NEWLINE '\n'
+127,0-127,1: NL '\n'
+128,0-128,14: COMMENT '# Indentation\n'
+129,0-129,2: NAME 'if'
+129,3-129,4: NUMBER '1'
+129,4-129,5: OP ':'
+129,5-129,6: NEWLINE '\n'
+130,0-130,4: INDENT ' '
+130,4-130,5: NAME 'x'
+130,6-130,7: OP '='
+130,8-130,9: NUMBER '2'
+130,9-130,10: NEWLINE '\n'
+131,0-131,0: DEDENT ''
+131,0-131,2: NAME 'if'
+131,3-131,4: NUMBER '1'
+131,4-131,5: OP ':'
+131,5-131,6: NEWLINE '\n'
+132,0-132,8: INDENT ' '
+132,8-132,9: NAME 'x'
+132,10-132,11: OP '='
+132,12-132,13: NUMBER '2'
+132,13-132,14: NEWLINE '\n'
+133,0-133,0: DEDENT ''
+133,0-133,2: NAME 'if'
+133,3-133,4: NUMBER '1'
+133,4-133,5: OP ':'
+133,5-133,6: NEWLINE '\n'
+134,0-134,4: INDENT ' '
+134,4-134,9: NAME 'while'
+134,10-134,11: NUMBER '0'
+134,11-134,12: OP ':'
+134,12-134,13: NEWLINE '\n'
+135,0-135,5: INDENT ' '
+135,5-135,7: NAME 'if'
+135,8-135,9: NUMBER '0'
+135,9-135,10: OP ':'
+135,10-135,11: NEWLINE '\n'
+136,0-136,11: INDENT ' '
+136,11-136,12: NAME 'x'
+136,13-136,14: OP '='
+136,15-136,16: NUMBER '2'
+136,16-136,17: NEWLINE '\n'
+137,5-137,5: DEDENT ''
+137,5-137,6: NAME 'x'
+137,7-137,8: OP '='
+137,9-137,10: NUMBER '2'
+137,10-137,11: NEWLINE '\n'
+138,0-138,0: DEDENT ''
+138,0-138,0: DEDENT ''
+138,0-138,2: NAME 'if'
+138,3-138,4: NUMBER '0'
+138,4-138,5: OP ':'
+138,5-138,6: NEWLINE '\n'
+139,0-139,2: INDENT ' '
+139,2-139,4: NAME 'if'
+139,5-139,6: NUMBER '2'
+139,6-139,7: OP ':'
+139,7-139,8: NEWLINE '\n'
+140,0-140,3: INDENT ' '
+140,3-140,8: NAME 'while'
+140,9-140,10: NUMBER '0'
+140,10-140,11: OP ':'
+140,11-140,12: NEWLINE '\n'
+141,0-141,8: INDENT ' '
+141,8-141,10: NAME 'if'
+141,11-141,12: NUMBER '1'
+141,12-141,13: OP ':'
+141,13-141,14: NEWLINE '\n'
+142,0-142,10: INDENT ' '
+142,10-142,11: NAME 'x'
+142,12-142,13: OP '='
+142,14-142,15: NUMBER '2'
+142,15-142,16: NEWLINE '\n'
+143,0-143,1: NL '\n'
+144,0-144,12: COMMENT '# Operators\n'
+145,0-145,1: NL '\n'
+146,0-146,0: DEDENT ''
+146,0-146,0: DEDENT ''
+146,0-146,0: DEDENT ''
+146,0-146,0: DEDENT ''
+146,0-146,3: NAME 'def'
+146,4-146,7: NAME 'd22'
+146,7-146,8: OP '('
+146,8-146,9: NAME 'a'
+146,9-146,10: OP ','
+146,11-146,12: NAME 'b'
+146,12-146,13: OP ','
+146,14-146,15: NAME 'c'
+146,15-146,16: OP '='
+146,16-146,17: NUMBER '1'
+146,17-146,18: OP ','
+146,19-146,20: NAME 'd'
+146,20-146,21: OP '='
+146,21-146,22: NUMBER '2'
+146,22-146,23: OP ')'
+146,23-146,24: OP ':'
+146,25-146,29: NAME 'pass'
+146,29-146,30: NEWLINE '\n'
+147,0-147,3: NAME 'def'
+147,4-147,8: NAME 'd01v'
+147,8-147,9: OP '('
+147,9-147,10: NAME 'a'
+147,10-147,11: OP '='
+147,11-147,12: NUMBER '1'
+147,12-147,13: OP ','
+147,14-147,15: OP '*'
+147,15-147,20: NAME 'restt'
+147,20-147,21: OP ','
+147,22-147,24: OP '**'
+147,24-147,29: NAME 'restd'
+147,29-147,30: OP ')'
+147,30-147,31: OP ':'
+147,32-147,36: NAME 'pass'
+147,36-147,37: NEWLINE '\n'
+148,0-148,1: NL '\n'
+149,0-149,1: OP '('
+149,1-149,2: NAME 'x'
+149,2-149,3: OP ','
+149,4-149,5: NAME 'y'
+149,5-149,6: OP ')'
+149,7-149,9: OP '<>'
+149,10-149,11: OP '('
+149,11-149,12: OP '{'
+149,12-149,15: STRING "'a'"
+149,15-149,16: OP ':'
+149,16-149,17: NUMBER '1'
+149,17-149,18: OP '}'
+149,18-149,19: OP ','
+149,20-149,21: OP '{'
+149,21-149,24: STRING "'b'"
+149,24-149,25: OP ':'
+149,25-149,26: NUMBER '2'
+149,26-149,27: OP '}'
+149,27-149,28: OP ')'
+149,28-149,29: NEWLINE '\n'
+150,0-150,1: NL '\n'
+151,0-151,13: COMMENT '# comparison\n'
+152,0-152,2: NAME 'if'
+152,3-152,4: NUMBER '1'
+152,5-152,6: OP '<'
+152,7-152,8: NUMBER '1'
+152,9-152,10: OP '>'
+152,11-152,12: NUMBER '1'
+152,13-152,15: OP '=='
+152,16-152,17: NUMBER '1'
+152,18-152,20: OP '>='
+152,21-152,22: NUMBER '1'
+152,23-152,25: OP '<='
+152,26-152,27: NUMBER '1'
+152,28-152,30: OP '<>'
+152,31-152,32: NUMBER '1'
+152,33-152,35: OP '!='
+152,36-152,37: NUMBER '1'
+152,38-152,40: NAME 'in'
+152,41-152,42: NUMBER '1'
+152,43-152,46: NAME 'not'
+152,47-152,49: NAME 'in'
+152,50-152,51: NUMBER '1'
+152,52-152,54: NAME 'is'
+152,55-152,56: NUMBER '1'
+152,57-152,59: NAME 'is'
+152,60-152,63: NAME 'not'
+152,64-152,65: NUMBER '1'
+152,65-152,66: OP ':'
+152,67-152,71: NAME 'pass'
+152,71-152,72: NEWLINE '\n'
+153,0-153,1: NL '\n'
+154,0-154,9: COMMENT '# binary\n'
+155,0-155,1: NAME 'x'
+155,2-155,3: OP '='
+155,4-155,5: NUMBER '1'
+155,6-155,7: OP '&'
+155,8-155,9: NUMBER '1'
+155,9-155,10: NEWLINE '\n'
+156,0-156,1: NAME 'x'
+156,2-156,3: OP '='
+156,4-156,5: NUMBER '1'
+156,6-156,7: OP '^'
+156,8-156,9: NUMBER '1'
+156,9-156,10: NEWLINE '\n'
+157,0-157,1: NAME 'x'
+157,2-157,3: OP '='
+157,4-157,5: NUMBER '1'
+157,6-157,7: OP '|'
+157,8-157,9: NUMBER '1'
+157,9-157,10: NEWLINE '\n'
+158,0-158,1: NL '\n'
+159,0-159,8: COMMENT '# shift\n'
+160,0-160,1: NAME 'x'
+160,2-160,3: OP '='
+160,4-160,5: NUMBER '1'
+160,6-160,8: OP '<<'
+160,9-160,10: NUMBER '1'
+160,11-160,13: OP '>>'
+160,14-160,15: NUMBER '1'
+160,15-160,16: NEWLINE '\n'
+161,0-161,1: NL '\n'
+162,0-162,11: COMMENT '# additive\n'
+163,0-163,1: NAME 'x'
+163,2-163,3: OP '='
+163,4-163,5: NUMBER '1'
+163,6-163,7: OP '-'
+163,8-163,9: NUMBER '1'
+163,10-163,11: OP '+'
+163,12-163,13: NUMBER '1'
+163,14-163,15: OP '-'
+163,16-163,17: NUMBER '1'
+163,18-163,19: OP '+'
+163,20-163,21: NUMBER '1'
+163,21-163,22: NEWLINE '\n'
+164,0-164,1: NL '\n'
+165,0-165,17: COMMENT '# multiplicative\n'
+166,0-166,1: NAME 'x'
+166,2-166,3: OP '='
+166,4-166,5: NUMBER '1'
+166,6-166,7: OP '/'
+166,8-166,9: NUMBER '1'
+166,10-166,11: OP '*'
+166,12-166,13: NUMBER '1'
+166,14-166,15: OP '%'
+166,16-166,17: NUMBER '1'
+166,17-166,18: NEWLINE '\n'
+167,0-167,1: NL '\n'
+168,0-168,8: COMMENT '# unary\n'
+169,0-169,1: NAME 'x'
+169,2-169,3: OP '='
+169,4-169,5: OP '~'
+169,5-169,6: NUMBER '1'
+169,7-169,8: OP '^'
+169,9-169,10: NUMBER '1'
+169,11-169,12: OP '&'
+169,13-169,14: NUMBER '1'
+169,15-169,16: OP '|'
+169,17-169,18: NUMBER '1'
+169,19-169,20: OP '&'
+169,21-169,22: NUMBER '1'
+169,23-169,24: OP '^'
+169,25-169,26: OP '-'
+169,26-169,27: NUMBER '1'
+169,27-169,28: NEWLINE '\n'
+170,0-170,1: NAME 'x'
+170,2-170,3: OP '='
+170,4-170,5: OP '-'
+170,5-170,6: NUMBER '1'
+170,6-170,7: OP '*'
+170,7-170,8: NUMBER '1'
+170,8-170,9: OP '/'
+170,9-170,10: NUMBER '1'
+170,11-170,12: OP '+'
+170,13-170,14: NUMBER '1'
+170,14-170,15: OP '*'
+170,15-170,16: NUMBER '1'
+170,17-170,18: OP '-'
+170,19-170,20: OP '-'
+170,20-170,21: OP '-'
+170,21-170,22: OP '-'
+170,22-170,23: NUMBER '1'
+170,23-170,24: OP '*'
+170,24-170,25: NUMBER '1'
+170,25-170,26: NEWLINE '\n'
+171,0-171,1: NL '\n'
+172,0-172,11: COMMENT '# selector\n'
+173,0-173,6: NAME 'import'
+173,7-173,10: NAME 'sys'
+173,10-173,11: OP ','
+173,12-173,16: NAME 'time'
+173,16-173,17: NEWLINE '\n'
+174,0-174,1: NAME 'x'
+174,2-174,3: OP '='
+174,4-174,7: NAME 'sys'
+174,7-174,8: OP '.'
+174,8-174,15: NAME 'modules'
+174,15-174,16: OP '['
+174,16-174,22: STRING "'time'"
+174,22-174,23: OP ']'
+174,23-174,24: OP '.'
+174,24-174,28: NAME 'time'
+174,28-174,29: OP '('
+174,29-174,30: OP ')'
+174,30-174,31: NEWLINE '\n'
+175,0-175,1: NL '\n'
+176,0-176,1: OP '@'
+176,1-176,13: NAME 'staticmethod'
+176,13-176,14: NEWLINE '\n'
+177,0-177,3: NAME 'def'
+177,4-177,7: NAME 'foo'
+177,7-177,8: OP '('
+177,8-177,9: OP ')'
+177,9-177,10: OP ':'
+177,11-177,15: NAME 'pass'
+177,15-177,16: NEWLINE '\n'
+178,0-178,1: NL '\n'
+179,0-179,0: ENDMARKER ''
diff --git a/sys/lib/python/test/output/test_types b/sys/lib/python/test/output/test_types
new file mode 100644
index 000000000..b49ce0d3a
--- /dev/null
+++ b/sys/lib/python/test/output/test_types
@@ -0,0 +1,15 @@
+test_types
+6. Built-in types
+6.1 Truth value testing
+6.2 Boolean operations
+6.3 Comparisons
+6.4 Numeric types (mostly conversions)
+6.4.1 32-bit integers
+6.4.2 Long integers
+6.4.3 Floating point numbers
+6.5 Sequence types
+6.5.1 Strings
+6.5.2 Tuples [see test_tuple.py]
+6.5.3 Lists [see test_list.py]
+6.6 Mappings == Dictionaries [see test_dict.py]
+Buffers
diff --git a/sys/lib/python/test/output/test_winreg b/sys/lib/python/test/output/test_winreg
new file mode 100644
index 000000000..f47aa840f
--- /dev/null
+++ b/sys/lib/python/test/output/test_winreg
@@ -0,0 +1,3 @@
+test_winreg
+Local registry tests worked
+Remote registry calls can be tested using 'test_winreg.py --remote \\machine_name'
diff --git a/sys/lib/python/test/output/test_xdrlib b/sys/lib/python/test/output/test_xdrlib
new file mode 100644
index 000000000..d86caa92c
--- /dev/null
+++ b/sys/lib/python/test/output/test_xdrlib
@@ -0,0 +1,19 @@
+test_xdrlib
+pack test 0 succeeded
+pack test 1 succeeded
+pack test 2 succeeded
+pack test 3 succeeded
+pack test 4 succeeded
+pack test 5 succeeded
+pack test 6 succeeded
+pack test 7 succeeded
+pack test 8 succeeded
+unpack test 0 succeeded : 9
+unpack test 1 succeeded : True
+unpack test 2 succeeded : False
+unpack test 3 succeeded : 45
+unpack test 4 succeeded : 1.89999997616
+unpack test 5 succeeded : 1.9
+unpack test 6 succeeded : hello world
+unpack test 7 succeeded : [0, 1, 2, 3, 4]
+unpack test 8 succeeded : ['what', 'is', 'hapnin', 'doctor']
diff --git a/sys/lib/python/test/output/xmltests b/sys/lib/python/test/output/xmltests
new file mode 100644
index 000000000..c798f6e33
--- /dev/null
+++ b/sys/lib/python/test/output/xmltests
@@ -0,0 +1,364 @@
+xmltests
+Passed testAAA
+Passed setAttribute() sets ownerDocument
+Passed setAttribute() sets ownerElement
+Test Succeeded testAAA
+Passed assertion: len(Node.allnodes) == 0
+Passed testAAB
+Test Succeeded testAAB
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Passed Test
+Passed Test
+Passed Test
+Passed Test
+Passed Test
+Passed Test
+Test Succeeded testAddAttr
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Test Succeeded testAppendChild
+Passed assertion: len(Node.allnodes) == 0
+Passed appendChild(<fragment>)
+Test Succeeded testAppendChildFragment
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrListItem
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrListItemNS
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrListItems
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrListKeys
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrListKeysNS
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrListLength
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrListValues
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrList__getitem__
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testAttrList__setitem__
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Test Succeeded testAttributeRepr
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Passed Test
+Passed Test
+Passed Test
+Test Succeeded testChangeAttr
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testChildNodes
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testCloneAttributeDeep
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testCloneAttributeShallow
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testCloneDocumentDeep
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testCloneDocumentShallow
+Passed assertion: len(Node.allnodes) == 0
+Passed clone of element has same attribute keys
+Passed clone of attribute node has proper attribute values
+Passed clone of attribute node correctly owned
+Passed testCloneElementDeep
+Test Succeeded testCloneElementDeep
+Passed assertion: len(Node.allnodes) == 0
+Passed clone of element has same attribute keys
+Passed clone of attribute node has proper attribute values
+Passed clone of attribute node correctly owned
+Passed testCloneElementShallow
+Test Succeeded testCloneElementShallow
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testClonePIDeep
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testClonePIShallow
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testComment
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testCreateAttributeNS
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testCreateElementNS
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Passed Test
+Test Succeeded testDeleteAttr
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testDocumentElement
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Test Succeeded testElement
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Test Succeeded testElementReprAndStr
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testFirstChild
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testGetAttrLength
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testGetAttrList
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testGetAttrValues
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testGetAttribute
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testGetAttributeNS
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testGetAttributeNode
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Test Succeeded testGetElementsByTagName
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Test Succeeded testGetElementsByTagNameNS
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testGetEmptyNodeListFromElementsByTagNameNS
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testHasChildNodes
+Passed assertion: len(Node.allnodes) == 0
+Passed testInsertBefore -- node properly placed in tree
+Passed testInsertBefore -- node properly placed in tree
+Passed testInsertBefore -- node properly placed in tree
+Test Succeeded testInsertBefore
+Passed assertion: len(Node.allnodes) == 0
+Passed insertBefore(<fragment>, None)
+Passed insertBefore(<fragment>, orig)
+Test Succeeded testInsertBeforeFragment
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testLegalChildren
+Passed assertion: len(Node.allnodes) == 0
+Passed NamedNodeMap.__setitem__() sets ownerDocument
+Passed NamedNodeMap.__setitem__() sets ownerElement
+Passed NamedNodeMap.__setitem__() sets value
+Passed NamedNodeMap.__setitem__() sets nodeValue
+Test Succeeded testNamedNodeMapSetItem
+Passed assertion: len(Node.allnodes) == 0
+Passed test NodeList.item()
+Test Succeeded testNodeListItem
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Test Succeeded testNonZero
+Passed assertion: len(Node.allnodes) == 0
+Passed testNormalize -- preparation
+Passed testNormalize -- result
+Passed testNormalize -- single empty node removed
+Test Succeeded testNormalize
+Passed assertion: len(Node.allnodes) == 0
+Passed testParents
+Test Succeeded testParents
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testParse
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testParseAttributeNamespaces
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testParseAttributes
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testParseElement
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testParseElementNamespaces
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Test Succeeded testParseFromFile
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testParseProcessingInstructions
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testParseString
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testProcessingInstruction
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testProcessingInstructionRepr
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Test Succeeded testRemoveAttr
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Test Succeeded testRemoveAttrNS
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Test Succeeded testRemoveAttributeNode
+Passed assertion: len(Node.allnodes) == 0
+Passed replaceChild(<fragment>)
+Test Succeeded testReplaceChildFragment
+Passed assertion: len(Node.allnodes) == 0
+Passed testSAX2DOM - siblings
+Passed testSAX2DOM - parents
+Test Succeeded testSAX2DOM
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testSetAttrValueandNodeValue
+Passed assertion: len(Node.allnodes) == 0
+Passed testSiblings
+Test Succeeded testSiblings
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testTextNodeRepr
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testTextRepr
+Passed assertion: len(Node.allnodes) == 0
+Caught expected exception when adding extra document element.
+Test Succeeded testTooManyDocumentElements
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testUnlink
+Passed assertion: len(Node.allnodes) == 0
+Test Succeeded testWriteText
+Passed assertion: len(Node.allnodes) == 0
+Passed Test
+Passed Test
+Test Succeeded testWriteXML
+Passed assertion: len(Node.allnodes) == 0
+All tests succeeded
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+OK.
+PI:
+ 'xml-stylesheet' 'href="stylesheet.css"'
+Comment:
+ ' comment data '
+Notation declared: ('notation', None, 'notation.jpeg', None)
+Unparsed entity decl:
+ ('unparsed_entity', None, 'entity.file', None, 'notation')
+Start element:
+ 'root' {'attr1': 'value1', 'attr2': 'value2\xe1\xbd\x80'}
+NS decl:
+ 'myns' 'http://www.python.org/namespace'
+Start element:
+ 'http://www.python.org/namespace!subelement' {}
+Character data:
+ 'Contents of subelements'
+End element:
+ 'http://www.python.org/namespace!subelement'
+End of NS decl:
+ 'myns'
+Start element:
+ 'sub2' {}
+Start of CDATA section
+Character data:
+ 'contents of CDATA section'
+End of CDATA section
+End element:
+ 'sub2'
+External entity ref: (None, 'entity.file', None)
+End element:
+ 'root'
+PI:
+ u'xml-stylesheet' u'href="stylesheet.css"'
+Comment:
+ u' comment data '
+Notation declared: (u'notation', None, u'notation.jpeg', None)
+Unparsed entity decl:
+ (u'unparsed_entity', None, u'entity.file', None, u'notation')
+Start element:
+ u'root' {u'attr1': u'value1', u'attr2': u'value2\u1f40'}
+NS decl:
+ u'myns' u'http://www.python.org/namespace'
+Start element:
+ u'http://www.python.org/namespace!subelement' {}
+Character data:
+ u'Contents of subelements'
+End element:
+ u'http://www.python.org/namespace!subelement'
+End of NS decl:
+ u'myns'
+Start element:
+ u'sub2' {}
+Start of CDATA section
+Character data:
+ u'contents of CDATA section'
+End of CDATA section
+End element:
+ u'sub2'
+External entity ref: (None, u'entity.file', None)
+End element:
+ u'root'
+PI:
+ u'xml-stylesheet' u'href="stylesheet.css"'
+Comment:
+ u' comment data '
+Notation declared: (u'notation', None, u'notation.jpeg', None)
+Unparsed entity decl:
+ (u'unparsed_entity', None, u'entity.file', None, u'notation')
+Start element:
+ u'root' {u'attr1': u'value1', u'attr2': u'value2\u1f40'}
+NS decl:
+ u'myns' u'http://www.python.org/namespace'
+Start element:
+ u'http://www.python.org/namespace!subelement' {}
+Character data:
+ u'Contents of subelements'
+End element:
+ u'http://www.python.org/namespace!subelement'
+End of NS decl:
+ u'myns'
+Start element:
+ u'sub2' {}
+Start of CDATA section
+Character data:
+ u'contents of CDATA section'
+End of CDATA section
+End element:
+ u'sub2'
+External entity ref: (None, u'entity.file', None)
+End element:
+ u'root'
+
+Testing constructor for proper handling of namespace_separator values:
+Legal values tested o.k.
+Caught expected TypeError:
+ParserCreate() argument 2 must be string or None, not int
+Caught expected ValueError:
+namespace_separator must be at most one character, omitted, or None
+Passed test_attrs_empty
+Passed test_attrs_wattr
+Passed test_double_quoteattr
+Passed test_escape_all
+Passed test_escape_basic
+Passed test_escape_extra
+Passed test_expat_attrs_empty
+Passed test_expat_attrs_wattr
+Passed test_expat_dtdhandler
+Passed test_expat_entityresolver
+Passed test_expat_file
+Passed test_expat_incomplete
+Passed test_expat_incremental
+Passed test_expat_incremental_reset
+Passed test_expat_inpsource_filename
+Passed test_expat_inpsource_location
+Passed test_expat_inpsource_stream
+Passed test_expat_inpsource_sysid
+Passed test_expat_locator_noinfo
+Passed test_expat_locator_withinfo
+Passed test_expat_nsattrs_empty
+Passed test_expat_nsattrs_wattr
+Passed test_filter_basic
+Passed test_make_parser
+Passed test_make_parser2
+Passed test_nsattrs_empty
+Passed test_nsattrs_wattr
+Passed test_quoteattr_basic
+Passed test_single_double_quoteattr
+Passed test_single_quoteattr
+Passed test_xmlgen_attr_escape
+Passed test_xmlgen_basic
+Passed test_xmlgen_content
+Passed test_xmlgen_content_escape
+Passed test_xmlgen_ignorable
+Passed test_xmlgen_ns
+Passed test_xmlgen_pi
+37 tests, 0 failures