@@ -548,32 +548,62 @@ def handle_error(self):
548
548
549
549
550
550
class HandlerTests (TestCase ):
551
-
552
- def checkEnvironAttrs (self , handler ):
553
- env = handler .environ
554
- for attr in [
555
- 'version' ,'multithread' ,'multiprocess' ,'run_once' ,'file_wrapper'
556
- ]:
557
- if attr == 'file_wrapper' and handler .wsgi_file_wrapper is None :
558
- continue
559
- self .assertEqual (getattr (handler ,'wsgi_' + attr ),env ['wsgi.' + attr ])
560
-
561
- def checkOSEnviron (self ,handler ):
562
- empty = {}; setup_testing_defaults (empty )
563
- env = handler .environ
564
- from os import environ
565
- for k ,v in environ .items ():
566
- if k not in empty :
567
- self .assertEqual (env [k ],v )
568
- for k ,v in empty .items ():
569
- self .assertIn (k , env )
551
+ # testEnviron() can produce long error message
552
+ maxDiff = 80 * 50
570
553
571
554
def testEnviron (self ):
572
- h = TestHandler (X = "Y" )
573
- h .setup_environ ()
574
- self .checkEnvironAttrs (h )
575
- self .checkOSEnviron (h )
576
- self .assertEqual (h .environ ["X" ],"Y" )
555
+ os_environ = {
556
+ # very basic environment
557
+ 'HOME' : '/my/home' ,
558
+ 'PATH' : '/my/path' ,
559
+ 'LANG' : 'fr_FR.UTF-8' ,
560
+
561
+ # set some WSGI variables
562
+ 'SCRIPT_NAME' : 'test_script_name' ,
563
+ 'SERVER_NAME' : 'test_server_name' ,
564
+ }
565
+
566
+ with support .swap_attr (TestHandler , 'os_environ' , os_environ ):
567
+ # override X and HOME variables
568
+ handler = TestHandler (X = "Y" , HOME = "/override/home" )
569
+ handler .setup_environ ()
570
+
571
+ # Check that wsgi_xxx attributes are copied to wsgi.xxx variables
572
+ # of handler.environ
573
+ for attr in ('version' , 'multithread' , 'multiprocess' , 'run_once' ,
574
+ 'file_wrapper' ):
575
+ self .assertEqual (getattr (handler , 'wsgi_' + attr ),
576
+ handler .environ ['wsgi.' + attr ])
577
+
578
+ # Test handler.environ as a dict
579
+ expected = {}
580
+ setup_testing_defaults (expected )
581
+ # Handler inherits os_environ variables which are not overriden
582
+ # by SimpleHandler.add_cgi_vars() (SimpleHandler.base_env)
583
+ for key , value in os_environ .items ():
584
+ if key not in expected :
585
+ expected [key ] = value
586
+ expected .update ({
587
+ # X doesn't exist in os_environ
588
+ "X" : "Y" ,
589
+ # HOME is overriden by TestHandler
590
+ 'HOME' : "/override/home" ,
591
+
592
+ # overriden by setup_testing_defaults()
593
+ "SCRIPT_NAME" : "" ,
594
+ "SERVER_NAME" : "127.0.0.1" ,
595
+
596
+ # set by BaseHandler.setup_environ()
597
+ 'wsgi.input' : handler .get_stdin (),
598
+ 'wsgi.errors' : handler .get_stderr (),
599
+ 'wsgi.version' : (1 , 0 ),
600
+ 'wsgi.run_once' : False ,
601
+ 'wsgi.url_scheme' : 'http' ,
602
+ 'wsgi.multithread' : True ,
603
+ 'wsgi.multiprocess' : True ,
604
+ 'wsgi.file_wrapper' : util .FileWrapper ,
605
+ })
606
+ self .assertDictEqual (handler .environ , expected )
577
607
578
608
def testCGIEnviron (self ):
579
609
h = BaseCGIHandler (None ,None ,None ,{})
0 commit comments