-# Copyright (C) 2014-2019 CEA/DEN, EDF R&D
+# Copyright (C) 2014-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
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-import salome, os, sys
+import salome, salome_utils, os, sys
import SalomePyQt
import unittest
reffile = ""
def setUp(self):
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest setUp() started", file=dbgFile)
- dbgFile.close()
- # ===========================================
- salome.salome_close()
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest previous session closed", file=dbgFile)
- dbgFile.close()
- # ===========================================
-
- # leave file name only (trim path and extension)
- fileName = os.path.basename(self.testfile)
- self.reffile = self.reffile + "/" + os.path.splitext(fileName)[0] + ".py"
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest reffile: {}".format(self.reffile), file=dbgFile)
- dbgFile.close()
- # ===========================================
-
- salome.salome_init(self.testfile, embedded=1)
+ salome.standalone()
+ salome.salome_init(self.testfile, embedded=1, forced=True)
myStudyName = salome.myStudy._get_Name()
self.session = salome.naming_service.Resolve('/Kernel/Session')
self.session.emitMessage("connect_to_study")
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest Salome started", file=dbgFile)
- dbgFile.close()
- # ===========================================
self.sg = SalomePyQt.SalomePyQt()
self.sg.activateModule("Shaper")
self.session = ModelAPI.ModelAPI_Session.get()
self.partSet = self.session.moduleDocument()
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest Shaper started", file=dbgFile)
- dbgFile.close()
- # ===========================================
def tearDown(self):
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest tearDown() started", file=dbgFile)
- dbgFile.close()
- # ===========================================
salome.sg.UpdateView()
self.sg.processEvents()
salome.sg.FitAll()
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest tearDown() finished", file=dbgFile)
- dbgFile.close()
- # ===========================================
def test_hdf_file(self):
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest start HDF file testing", file=dbgFile)
- dbgFile.close()
- # ===========================================
self.assertTrue(self.partSet.size("Parts") > 0)
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest number of parts: {}".format(self.partSet.size("Parts")), file=dbgFile)
- dbgFile.close()
- # ===========================================
- aPartsList = []
+ aPartsList = dict()
for aPartIndex in range(self.partSet.size("Parts")):
self.session.startOperation()
aPart = ModelAPI.modelAPI_ResultPart(ModelAPI.objectToResult(self.partSet.object("Parts", aPartIndex)))
aPart.activate()
self.session.finishOperation()
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest test part: {}".format(aPartIndex), file=dbgFile)
- dbgFile.close()
- # ===========================================
aPartFeature = PartSetAPI.PartSetAPI_Part(self.partSet.currentFeature(True))
- # check reference data
- exec(open(self.reffile, "rb").read())
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest test part finished", file=dbgFile)
- dbgFile.close()
- # ===========================================
+ aPartsList["Part_{}".format(aPartIndex+1)] = aPartFeature
+
+ self.session.startOperation()
+ self.session.setActiveDocument(self.partSet)
+ self.session.finishOperation()
+
+ # Check that the features are not in error
+ Part_1_doc = aPart.partDoc()
+
+ model.checkFeaturesValidity(Part_1_doc)
+ # check reference data
+ exec(open(self.reffile, "rb").read(), globals(), aPartsList)
if __name__ == "__main__":
if len(sys.argv) > 1:
TestHDF.testfile = sys.argv[1]
if len(sys.argv) > 2:
- salomePortFile = sys.argv[2]
+ TestHDF.reffile = sys.argv[2]
if len(sys.argv) > 3:
errFile = open(sys.argv[3], 'w')
- if len(sys.argv) > 4:
- salomeKernelDir = sys.argv[4]
- if len(sys.argv) > 5:
- TestHDF.reffile = sys.argv[5]
-
- # ===========================================
- dbgFile = open(os.getcwd() + "/dbgfile", 'a')
- print(" UnitTest started with parameters:", file=dbgFile)
- print(" testfile: {}".format(TestHDF.testfile), file=dbgFile)
- print(" salomePortFile: {}".format(salomePortFile), file=dbgFile)
- print(" salomeKernelDir: {}".format(salomeKernelDir), file=dbgFile)
- print(" reffile: {}".format(TestHDF.reffile), file=dbgFile)
- dbgFile.close()
- # ===========================================
+ else:
+ # to ease debugging, display the log in embedded python console if no log file is provided
+ # when calling salome in command line for instance
+ # runSalome.py --splash 0 test_hdf.py args:BearingSeparator.hdf,BearingSeparator.py
+ errFile = None
+
aTest = unittest.TestLoader().loadTestsFromTestCase(TestHDF)
unittest.TextTestRunner(stream=errFile).run(aTest)
- errFile.close()
-
-# test_program = unittest.main(argv=[sys.argv[0]], exit=False)
- proc = subprocess.Popen(salomeKernelDir + "/bin/salome/killSalome.py")
-
- try:
- os.remove(salomePortFile)
- except:
- print("Cannot remove file", file=f)
+ if errFile:
+ errFile.close()
-# assert test_program.result.wasSuccessful(), "Test failed"
+ # Quit SALOME the clean way
+ sys.exit()