Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/test/test_wsgiref.py

    r2 r391  
    4040
    4141
    42 
    43 
    44 
    4542def hello_app(environ,start_response):
    4643    start_response("200 OK", [
     
    6158
    6259    return out.getvalue(), err.getvalue()
    63 
    64 
    65 
    66 
    67 
    68 
    69 
    70 
    71 
    72 
    73 
    74 
    75 
    76 
    77 
    78 
    79 
    80 
    81 
    82 
    83 
    8460
    8561
     
    12197
    12298
    123 
    124 
    125 
    126 
    12799class IntegrationTests(TestCase):
    128100
     
    152124            return ["Hello, world!"]
    153125        out, err = run_amock(validator(bad_app))
    154         self.failUnless(out.endswith(
     126        self.assertTrue(out.endswith(
    155127            "A server error occurred.  Please contact the administrator."
    156128        ))
     
    162134
    163135
    164 
    165 
    166 
    167 
    168136class UtilityTests(TestCase):
    169137
     
    180148        env = {}
    181149        util.setup_testing_defaults(env)
    182         if isinstance(value,StringIO):
    183             self.failUnless(isinstance(env[key],StringIO))
     150        if isinstance(value, StringIO):
     151            self.assertIsInstance(env[key], StringIO)
    184152        else:
    185             self.assertEqual(env[key],value)
     153            self.assertEqual(env[key], value)
    186154
    187155        # Check existing value
    188156        env = {key:alt}
    189157        util.setup_testing_defaults(env)
    190         self.failUnless(env[key] is alt)
     158        self.assertTrue(env[key] is alt)
    191159
    192160    def checkCrossDefault(self,key,value,**kw):
     
    202170        self.assertEqual(util.request_uri(kw,query),uri)
    203171
    204 
    205 
    206 
    207 
    208 
    209172    def checkFW(self,text,size,match):
    210173
     
    215178
    216179        it = make_it()
    217         self.failIf(it.filelike.closed)
     180        self.assertFalse(it.filelike.closed)
    218181
    219182        for item in it:
    220183            pass
    221184
    222         self.failIf(it.filelike.closed)
     185        self.assertFalse(it.filelike.closed)
    223186
    224187        it.close()
    225         self.failUnless(it.filelike.closed)
    226 
     188        self.assertTrue(it.filelike.closed)
    227189
    228190    def testSimpleShifts(self):
     
    232194        self.checkShift('/a','/x/y', 'x', '/a/x', '/y')
    233195        self.checkShift('/a','/x/',  'x', '/a/x', '/')
    234 
    235196
    236197    def testNormalizedShifts(self):
     
    246207        self.checkShift('/a/b', '/x//', 'x', '/a/b/x', '/')
    247208        self.checkShift('/a/b', '/.', None, '/a/b', '')
    248 
    249209
    250210    def testDefaults(self):
     
    267227            self.checkDefault(key,value)
    268228
    269 
    270229    def testCrossDefaults(self):
    271230        self.checkCrossDefault('HTTP_HOST',"foo.bar",SERVER_NAME="foo.bar")
     
    277236        self.checkCrossDefault('SERVER_PORT',"443",HTTPS="on")
    278237
    279 
    280238    def testGuessScheme(self):
    281239        self.assertEqual(util.guess_scheme({}), "http")
     
    284242        self.assertEqual(util.guess_scheme({'HTTPS':"yes"}), "https")
    285243        self.assertEqual(util.guess_scheme({'HTTPS':"1"}), "https")
    286 
    287 
    288 
    289 
    290244
    291245    def testAppURIs(self):
     
    307261        self.checkReqURI("http://127.0.0.1/spammity/spam",
    308262            SCRIPT_NAME="/spammity", PATH_INFO="/spam")
     263        self.checkReqURI("http://127.0.0.1/spammity/spam;ham",
     264            SCRIPT_NAME="/spammity", PATH_INFO="/spam;ham")
     265        self.checkReqURI("http://127.0.0.1/spammity/spam;cookie=1234,5678",
     266            SCRIPT_NAME="/spammity", PATH_INFO="/spam;cookie=1234,5678")
    309267        self.checkReqURI("http://127.0.0.1/spammity/spam?say=ni",
    310268            SCRIPT_NAME="/spammity", PATH_INFO="/spam",QUERY_STRING="say=ni")
     
    321279        ).split():
    322280            for alt in hop, hop.title(), hop.upper(), hop.lower():
    323                 self.failUnless(util.is_hop_by_hop(alt))
     281                self.assertTrue(util.is_hop_by_hop(alt))
    324282
    325283        # Not comprehensive, just a few random header names
     
    328286        ).split():
    329287            for alt in hop, hop.title(), hop.upper(), hop.lower():
    330                 self.failIf(util.is_hop_by_hop(alt))
     288                self.assertFalse(util.is_hop_by_hop(alt))
    331289
    332290class HeaderTests(TestCase):
     
    339297        self.assertEqual(Headers(test[:]).values(), ['y'])
    340298        self.assertEqual(Headers(test[:]).items(), test)
    341         self.failIf(Headers(test).items() is test)  # must be copy!
     299        self.assertFalse(Headers(test).items() is test)  # must be copy!
    342300
    343301        h=Headers([])
     
    346304        h['Foo'] = 'bar'
    347305        for m in h.has_key, h.__contains__, h.get, h.get_all, h.__getitem__:
    348             self.failUnless(m('foo'))
    349             self.failUnless(m('Foo'))
    350             self.failUnless(m('FOO'))
    351             self.failIf(m('bar'))
     306            self.assertTrue(m('foo'))
     307            self.assertTrue(m('Foo'))
     308            self.assertTrue(m('FOO'))
     309            self.assertFalse(m('bar'))
    352310
    353311        self.assertEqual(h['foo'],'bar')
     
    406364    def handle_error(self):
    407365        raise   # for testing, we want to see what's happening
    408 
    409 
    410 
    411 
    412 
    413 
    414 
    415 
    416 
    417366
    418367
     
    433382        from os import environ
    434383        for k,v in environ.items():
    435             if not empty.has_key(k):
     384            if k not in empty:
    436385                self.assertEqual(env[k],v)
    437386        for k,v in empty.items():
    438             self.failUnless(env.has_key(k))
     387            self.assertIn(k, env)
    439388
    440389    def testEnviron(self):
     
    449398        h.setup_environ()
    450399        for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors':
    451             self.assert_(h.environ.has_key(key))
     400            self.assertIn(key, h.environ)
    452401
    453402    def testScheme(self):
     
    456405        h=TestHandler(); h.setup_environ()
    457406        self.assertEqual(h.environ['wsgi.url_scheme'],'http')
    458 
    459407
    460408    def testAbstractMethods(self):
     
    466414        self.assertRaises(NotImplementedError, h._write, "test")
    467415
    468 
    469416    def testContentLength(self):
    470417        # Demo one reason iteration is better than write()...  ;)
     
    476423        def trivial_app2(e,s):
    477424            s('200 OK',[])(e['wsgi.url_scheme'])
     425            return []
     426
     427        def trivial_app4(e,s):
     428            # Simulate a response to a HEAD request
     429            s('200 OK',[('Content-Length', '12345')])
    478430            return []
    479431
     
    494446
    495447
    496 
    497 
    498 
    499 
     448        h = TestHandler()
     449        h.run(trivial_app4)
     450        self.assertEqual(h.stdout.getvalue(),
     451            b'Status: 200 OK\r\n'
     452            b'Content-Length: 12345\r\n'
     453            b'\r\n')
    500454
    501455    def testBasicErrorOutput(self):
     
    524478            "\r\n%s" % (h.error_status,len(h.error_body),h.error_body))
    525479
    526         self.failUnless(h.stderr.getvalue().find("AssertionError")<>-1)
     480        self.assertNotEqual(h.stderr.getvalue().find("AssertionError"), -1)
    527481
    528482    def testErrorAfterOutput(self):
     
    537491            "Status: 200 OK\r\n"
    538492            "\r\n"+MSG)
    539         self.failUnless(h.stderr.getvalue().find("AssertionError")<>-1)
    540 
     493        self.assertNotEqual(h.stderr.getvalue().find("AssertionError"), -1)
    541494
    542495    def testHeaderFormats(self):
     
    576529                        self.assertEqual(h.stdout.getvalue(),"")
    577530                    else:
    578                         self.failUnless(
     531                        self.assertTrue(
    579532                            re.match(stdpat%(version,sw), h.stdout.getvalue()),
    580533                            (stdpat%(version,sw), h.stdout.getvalue())
    581534                        )
    582535
    583 # This epilogue is needed for compatibility with the Python 2.5 regrtest module
     536    def testCloseOnError(self):
     537        side_effects = {'close_called': False}
     538        MSG = b"Some output has been sent"
     539        def error_app(e,s):
     540            s("200 OK",[])(MSG)
     541            class CrashyIterable(object):
     542                def __iter__(self):
     543                    while True:
     544                        yield b'blah'
     545                        raise AssertionError("This should be caught by handler")
     546
     547                def close(self):
     548                    side_effects['close_called'] = True
     549            return CrashyIterable()
     550
     551        h = ErrorHandler()
     552        h.run(error_app)
     553        self.assertEqual(side_effects['close_called'], True)
     554
    584555
    585556def test_main():
     
    588559if __name__ == "__main__":
    589560    test_main()
    590 
    591 
    592 
    593 
    594 
    595 
    596 
    597 
    598 
    599 
    600 
    601 
    602 
    603 
    604 
    605 
    606 
    607 
    608 
    609 
    610 
    611 
    612 
    613 
    614 
    615 
    616 
    617 
    618 
    619 # the above lines intentionally left blank
Note: See TracChangeset for help on using the changeset viewer.