Salome HOME
[EDF30062] : Forward of current directory mecanism
[modules/kernel.git] / src / Container / Test / testProxy.py
index 962e2ab0721c0b4552bc9ad1fda2bf52c27270f5..1be8344fefa996202909149da99f41183898a649 100644 (file)
@@ -25,6 +25,7 @@ import Engines
 import pickle
 import tempfile
 import pylauncher
+import KernelBasis
 
 class TestProxy(unittest.TestCase):
     def testProxy(self):
@@ -104,6 +105,65 @@ with open("{}","w") as f:
                 self.assertTrue(f.read()=="coucou")
             os.unlink( tmpFileName.name ) # context manager do not clean file
 
+    def testWorkingDirectoryForward(self):
+        """
+        [EDF30062] test of forward of current directory overriding entry in Catalog
+        """
+        KernelBasis.SetForwardCurrentDirectoryStatus( True ) # key point
+        hostname = "localhost"
+        cp = pylauncher.GetRequestForGiveContainer(hostname,"container_test")
+
+        with tempfile.TemporaryDirectory() as tmpdirname:
+            os.chdir( str( tmpdirname ) )
+            cp = pylauncher.GetRequestForGiveContainer("localhost","gg")
+            cont = salome.cm.GiveContainer(cp)
+
+            pyscript2 = cont.createPyScriptNode("testScript","""import os
+ret = os.getcwd()
+""")
+            #
+            import SALOME_PyNode
+            poa = salome.orb.resolve_initial_references("RootPOA")
+            obj = SALOME_PyNode.SenderByte_i(poa,pickle.dumps( ([],{}) ))
+            id_o = poa.activate_object(obj)
+            refPtr = poa.id_to_reference(id_o)
+            #
+            pyscript2.executeFirst(refPtr)
+            ret2 = pyscript2.executeSecond(["ret"])
+            #
+            ret2 = ret2[0]
+            ret3 = pickle.loads( SALOME_PyNode.SeqByteReceiver(ret2).data() )
+            self.assertEqual(ret3,str(tmpdirname)) # key point
+            #
+            cont.Shutdown()
+        ################
+        KernelBasis.SetForwardCurrentDirectoryStatus( False ) # key point
+        cp = pylauncher.GetRequestForGiveContainer(hostname,"container_test")
+
+        with tempfile.TemporaryDirectory() as tmpdirname:
+            os.chdir( str( tmpdirname ) )
+            cp = pylauncher.GetRequestForGiveContainer("localhost","gg")
+            cont = salome.cm.GiveContainer(cp)
+
+            pyscript2 = cont.createPyScriptNode("testScript","""import os
+ret = os.getcwd()
+""")
+            #
+            import SALOME_PyNode
+            poa = salome.orb.resolve_initial_references("RootPOA")
+            obj = SALOME_PyNode.SenderByte_i(poa,pickle.dumps( ([],{}) ))
+            id_o = poa.activate_object(obj)
+            refPtr = poa.id_to_reference(id_o)
+            #
+            pyscript2.executeFirst(refPtr)
+            ret2 = pyscript2.executeSecond(["ret"])
+            #
+            ret2 = ret2[0]
+            ret3 = pickle.loads( SALOME_PyNode.SeqByteReceiver(ret2).data() )
+            self.assertNotEqual(ret3,str(tmpdirname)) # key point
+            #
+            cont.Shutdown()
+
 if __name__ == '__main__':
     salome.standalone()
     salome.salome_init()