Salome HOME
Updated copyright comment
[modules/yacs.git] / src / yacsloader_swig / Test / testSave.py
index 644c8d8b427a028a8d9c26d38a1396764103e539..ccb3149bb8da4dc7e340f77e861d3abc9c643333 100755 (executable)
@@ -1,5 +1,5 @@
-#!/usr/bin/env python
-# Copyright (C) 2006-2016  CEA/DEN, EDF R&D
+#!/usr/bin/env python3
+# Copyright (C) 2006-2024  CEA, EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -21,6 +21,8 @@
 import time
 import unittest
 import threading
+import tempfile
+import os
 
 import SALOMERuntime
 import loader
@@ -30,6 +32,7 @@ class TestSave(unittest.TestCase):
 
     def setUp(self):
         SALOMERuntime.RuntimeSALOME_setRuntime(1)
+        self.workdir = tempfile.mkdtemp(suffix=".yacstest")
         pass
 
     def test0_saveAndExec(self):
@@ -53,11 +56,12 @@ class TestSave(unittest.TestCase):
         l = loader.YACSLoader()
         e = pilot.ExecutorSwig()
         for schema in schemaList:
+            print(schema)
             fileOrig = "samples/" + schema + ".xml"
-            saveSchema1 = "schema1_" + schema
-            dumpSchema1 = "dump1_" + schema
-            saveSchema2 = "schema2_" + schema
-            dumpSchema2 = "dump2_" + schema
+            saveSchema1 = os.path.join(self.workdir, "schema1_" + schema)
+            dumpSchema1 = os.path.join(self.workdir, "dump1_" + schema)
+            saveSchema2 = os.path.join(self.workdir, "schema2_" + schema)
+            dumpSchema2 = os.path.join(self.workdir, "dump2_" + schema)
             try:
                 p = l.load(fileOrig)
                 s = pilot.SchemaSave(p)
@@ -80,14 +84,15 @@ class TestSave(unittest.TestCase):
             except:
                 pb = "unknown problem on " + fileOrig
                 self.fail(pb)                
-            s1=open(saveSchema1,'r')
-            s2=open(saveSchema2,'r')
-            d1=open(dumpSchema1,'r')
-            d2=open(dumpSchema2,'r')
-            ls1 = s1.readlines().sort()
-            ls2 = s2.readlines().sort()
-            ld1 = d1.readlines().sort()
-            ld2 = d2.readlines().sort()
+            
+            with open(saveSchema1,'r') as s1:
+                ls1 = s1.readlines().sort()
+            with open(saveSchema2,'r') as s2:
+                ls2 = s2.readlines().sort()
+            with open(dumpSchema1,'r') as d1:
+                ld1 = d1.readlines().sort()
+            with open(dumpSchema2,'r') as d2:
+                ld2 = d2.readlines().sort()
             pb1 = "file schemes produced by successive executions are not identical: " + fileOrig 
             pb2 = "final dump states produced by successive executions are not identical: " + fileOrig 
             self.assertEqual(ls1,ls2,pb1)
@@ -95,11 +100,20 @@ class TestSave(unittest.TestCase):
             pass
 
 if __name__ == '__main__':
+  import salome
+  import NamingService
   import os
-  U = os.getenv('USER')
-  f=open("/tmp/" + U + "/UnitTestsResult", 'a')
-  f.write("  --- TEST src/yacsloader: testSave.py\n")
-  suite = unittest.makeSuite(TestSave)
-  result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite)
-  f.close()
-  sys.exit(not result.wasSuccessful())
\ No newline at end of file
+  import subprocess
+  salome.salome_init()
+  ior = NamingService.NamingService.IOROfNS()
+  p = subprocess.Popen(["../yacsloader/echoSrv",ior])
+  import time
+  time.sleep(3)
+  with tempfile.TemporaryDirectory(suffix=".yacstest") as dir_test:
+    file_test = os.path.join(dir_test,"UnitTestsResult")
+    with open(file_test, 'a') as f:
+      f.write("  --- TEST src/yacsloader: testSave.py\n")
+      suite = unittest.makeSuite(TestSave)
+      result=unittest.TextTestRunner(f, descriptions=1, verbosity=1).run(suite)
+  p.terminate()
+  sys.exit(not result.wasSuccessful())