test_threadlocal_garbage (test_refleaks.ReferenceTests) ... skipped skipped (tidy not found)
ERROR: expected body:
''
actual body:
'\nToo many Request references (4).\nReferrers for <cherrypy._cprequest.Request object at 0x47e990>:\n {\'load\': <function load at 0x24afb0>, \'__module__\': \'cherrypy\', \'__metaclass__\': <class \'cherrypy._AttributeDocstrings\'>, \'clear\': <function clear at 0x26e0b0>, \'request\': <cherrypy._cprequest.Request object at 0x47e990>, \'response\': <cherrypy._cprequest.Response object at 0x47eb50>, \'__doc__\': \'An interface for registering request and response objects.\\n \\n Rather than have a separate "thread local" object for the request and\\n the response, this class works as a single threadlocal container for\\n both objects (and any others which developers wish to define). In this\\n way, we can easily dump those objects when we stop/start a new HTTP\\n conversation, yet still refer to them as module-level globals in a\\n thread-safe way.\\n \\n\\nrequest [= <cherrypy._cprequest.Request object at 0x47e990>]:\\n The request object for the current thread. In the main thread,\\n and any threads which are not receiving HTTP requests, this is None.\\n\\nresponse [= <cherrypy._cprequest.Response object at 0x47eb50>]:\\n The response object for the current thread. In the main thread,\\n and any threads which are not receiving HTTP requests, this is None.\'}\n <frame object at 0x369160>\nReferrers for <cherrypy._cprequest.Request object at 0x645150>:\n {\'request\': <cherrypy._cprequest.Request object at 0x645150>, \'response\': <cherrypy._cprequest.Response object at 0x645b70>}\n {\'recursive\': False, \'start_response\': <bound method CPHTTPRequest.start_response of <cherrypy._cpwsgi.CPHTTPRequest object at 0x690850>>, \'request\': <cherrypy._cprequest.Request object at 0x645150>, \'redirections\': [], \'environ\': {\'AUTH_TYPE\': \'\', \'wsgi.multithread\': True, \'SERVER_SOFTWARE\': \'CherryPy/3.1beta WSGI Server\', \'SCRIPT_NAME\': \'\', \'ACTUAL_SERVER_PROTOCOL\': \'HTTP/1.1\', \'wsgi.input\': <cherrypy.wsgiserver.SizeCheckWrapper object at 0x73af70>, \'REQUEST_METHOD\': \'GET\', \'HTTP_HOST\': \'127.0.0.1:8080\', \'PATH_INFO\': \'/gc_stats\', \'SERVER_PROTOCOL\': \'HTTP/1.1\', \'QUERY_STRING\': \'\', \'REMOTE_ADDR\': \'127.0.0.1\', \'wsgi.version\': (1, 0), \'SERVER_NAME\': \'127.0.0.1\', \'REMOTE_PORT\': \'52243\', \'wsgi.run_once\': False, \'wsgi.errors\': <open file \'<stderr>\', mode \'w\' at 0x2a0a0>, \'wsgi.multiprocess\': False, \'wsgi.url_scheme\': \'http\', \'SERVER_PORT\': \'8080\'}, \'cpapp\': <cherrypy._cptree.Application object at 0x735af0>}\n (<cherrypy._cprequest.Request object at 0x645150>, <cherrypy._cprequest.Response object at 0x645b70>)\n <frame object at 0x387100>\n <frame object at 0x3b8110>\n <frame object at 0x369160>\nReferrers for <cherrypy._cprequest.Request object at 0x66fad0>:\n <frame object at 0x369160>\n (<cherrypy._cprequest.Request object at 0x66fad0>, <cherrypy._cprequest.Response object at 0x66fd50>)\nReferrers for <cherrypy._cprequest.Request object at 0x630d30>:\n <frame object at 0x369160>\n (<cherrypy._cprequest.Request object at 0x630d30>, <cherrypy._cprequest.Response object at 0x630210>)\n\nToo many Response references (4).\nReferrers for <cherrypy._cprequest.Response object at 0x47eb50>:\n {\'load\': <function load at 0x24afb0>, \'__module__\': \'cherrypy\', \'__metaclass__\': <class \'cherrypy._AttributeDocstrings\'>, \'clear\': <function clear at 0x26e0b0>, \'request\': <cherrypy._cprequest.Request object at 0x47e990>, \'response\': <cherrypy._cprequest.Response object at 0x47eb50>, \'__doc__\': \'An interface for registering request and response objects.\\n \\n Rather than have a separate "thread local" object for the request and\\n the response, this class works as a single threadlocal container for\\n both objects (and any others which developers wish to define). In this\\n way, we can easily dump those objects when we stop/start a new HTTP\\n conversation, yet still refer to them as module-level globals in a\\n thread-safe way.\\n \\n\\nrequest [= <cherrypy._cprequest.Request object at 0x47e990>]:\\n The request object for the current thread. In the main thread,\\n and any threads which are not receiving HTTP requests, this is None.\\n\\nresponse [= <cherrypy._cprequest.Response object at 0x47eb50>]:\\n The response object for the current thread. In the main thread,\\n and any threads which are not receiving HTTP requests, this is None.\'}\n <frame object at 0x369160>\nReferrers for <cherrypy._cprequest.Response object at 0x645b70>:\n {\'request\': <cherrypy._cprequest.Request object at 0x645150>, \'response\': <cherrypy._cprequest.Response object at 0x645b70>}\n (<cherrypy._cprequest.Request object at 0x645150>, <cherrypy._cprequest.Response object at 0x645b70>)\n <frame object at 0x369160>\nReferrers for <cherrypy._cprequest.Response object at 0x66fd50>:\n <frame object at 0x369160>\n (<cherrypy._cprequest.Request object at 0x66fad0>, <cherrypy._cprequest.Response object at 0x66fd50>)\nReferrers for <cherrypy._cprequest.Response object at 0x630210>:\n <frame object at 0x369160>\n (<cherrypy._cprequest.Request object at 0x630d30>, <cherrypy._cprequest.Response object at 0x630210>)'
Show: [B]ody [H]eaders [S]tatus [U]RL; [I]gnore, [R]aise, or sys.e[X]it >>