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