-// Copyright (C) 2006-2016 CEA/DEN, EDF R&D
+// Copyright (C) 2006-2022 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include "py2yacs.hxx"
#include "Proc.hxx"
#include "Executor.hxx"
+#include "PythonCppUtils.hxx"
#include "RuntimeSALOME.hxx"
#include "PythonPorts.hxx"
verifyWrongPycode(code_py, "f", "not accepted statement");
}
+/* // This is now accepted
void Py2yacsTest::unaccepted_statement2()
{
const char * code_py = "def f(a):\n"
"if __name__ == '__main__':"
" print('toto')\n";
verifyWrongPycode(code_py, "f", "not accepted statement");
-}
+}*/
void Py2yacsTest::unaccepted_return()
{
// verify the output port value
YACS::ENGINE::OutputPyPort* var = dynamic_cast<YACS::ENGINE::OutputPyPort*>(n->getOutputPort("x"));
CPPUNIT_ASSERT(var);
+ double x = -2.0;
PyObject* pyVal = var->get();
- CPPUNIT_ASSERT(pyVal);
- CPPUNIT_ASSERT(PyFloat_Check(pyVal));
- CPPUNIT_ASSERT_DOUBLES_EQUAL(42., PyFloat_AsDouble(pyVal), 1.E-12);
+ {
+ AutoGIL agil;
+ CPPUNIT_ASSERT(pyVal);
+ x = PyFloat_AsDouble(pyVal);
+ CPPUNIT_ASSERT( PyErr_Occurred()==nullptr );// check pyVal is interpretable as float
+ }
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(42., x, 1.E-12);
+ p->shutdown(10); // kill all the containers
}
// Test the behaviour when there is an error in the python parser