[svn r63139] make _rinfo() cache results by default
--HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									8d8a73784c
								
							
						
					
					
						commit
						265e7c5dc2
					
				| 
						 | 
				
			
			@ -241,16 +241,18 @@ class Gateway(object):
 | 
			
		|||
        chan.setcallback(callback)
 | 
			
		||||
        return chan.id 
 | 
			
		||||
 | 
			
		||||
    def _rinfo(self):
 | 
			
		||||
    def _rinfo(self, update=False):
 | 
			
		||||
        """ return some sys/env information from remote. """
 | 
			
		||||
        return RInfo(**self.remote_exec("""
 | 
			
		||||
            import sys, os
 | 
			
		||||
            channel.send(dict(
 | 
			
		||||
                executable = sys.executable, 
 | 
			
		||||
                version_info = sys.version_info, 
 | 
			
		||||
                curdir = os.getcwd(),
 | 
			
		||||
            ))
 | 
			
		||||
        """).receive())
 | 
			
		||||
        if update or not hasattr(self, '_cache_rinfo'):
 | 
			
		||||
            self._cache_rinfo = RInfo(**self.remote_exec("""
 | 
			
		||||
                import sys, os
 | 
			
		||||
                channel.send(dict(
 | 
			
		||||
                    executable = sys.executable, 
 | 
			
		||||
                    version_info = sys.version_info, 
 | 
			
		||||
                    cwd = os.getcwd(),
 | 
			
		||||
                ))
 | 
			
		||||
            """).receive())
 | 
			
		||||
        return self._cache_rinfo
 | 
			
		||||
 | 
			
		||||
    # _____________________________________________________________________
 | 
			
		||||
    #
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -444,9 +444,22 @@ class BasicRemoteExecution:
 | 
			
		|||
    def test__rinfo(self):
 | 
			
		||||
        rinfo = self.gw._rinfo()
 | 
			
		||||
        assert rinfo.executable 
 | 
			
		||||
        assert rinfo.curdir 
 | 
			
		||||
        assert rinfo.cwd 
 | 
			
		||||
        assert rinfo.version_info 
 | 
			
		||||
        
 | 
			
		||||
        old = self.gw.remote_exec("""
 | 
			
		||||
            import os.path
 | 
			
		||||
            cwd = os.getcwd()
 | 
			
		||||
            channel.send(os.path.basename(cwd))
 | 
			
		||||
            os.chdir('..')
 | 
			
		||||
        """).receive()
 | 
			
		||||
        try:
 | 
			
		||||
            rinfo2 = self.gw._rinfo()
 | 
			
		||||
            assert rinfo2.cwd == rinfo.cwd
 | 
			
		||||
            rinfo3 = self.gw._rinfo(update=True)
 | 
			
		||||
            assert rinfo3.cwd != rinfo2.cwd
 | 
			
		||||
        finally:
 | 
			
		||||
            self.gw._cache_rinfo = rinfo
 | 
			
		||||
            self.gw.remote_exec("import os ; os.chdir(%r)" % old).waitclose()
 | 
			
		||||
 | 
			
		||||
class BasicCmdbasedRemoteExecution(BasicRemoteExecution):
 | 
			
		||||
    def test_cmdattr(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -487,10 +500,11 @@ def test_channel_endmarker_remote_killterm():
 | 
			
		|||
#        assert x == 17 
 | 
			
		||||
 | 
			
		||||
class TestPopenGateway(PopenGatewayTestSetup, BasicRemoteExecution):
 | 
			
		||||
    def test_remote_info_popen(self):
 | 
			
		||||
    def test_rinfo_popen(self):
 | 
			
		||||
        #rinfo = py.execnet.PopenGateway()._rinfo()
 | 
			
		||||
        rinfo = self.gw._rinfo()
 | 
			
		||||
        assert rinfo.executable == py.std.sys.executable 
 | 
			
		||||
        assert rinfo.curdir == py.std.os.getcwd()
 | 
			
		||||
        assert rinfo.cwd == py.std.os.getcwd()
 | 
			
		||||
        assert rinfo.version_info == py.std.sys.version_info
 | 
			
		||||
 | 
			
		||||
    def test_chdir_separation(self):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue