From 38ab4e5d1e36f7cfa4ff3b6faaf8e860ef64717a Mon Sep 17 00:00:00 2001 From: Iakov 'Jake' Kirilenko Date: Thu, 3 Oct 2024 19:04:52 +0300 Subject: [PATCH] Add event processing after run --- scripts/script.sh | 2 +- tests/trikPyRunnerTests/trikPyRunnerTest.cpp | 4 +++- trikKernel/src/fileUtils.cpp | 1 - trikScriptRunner/src/pythonEngineWorker.cpp | 2 ++ trikScriptRunner/src/scriptEngineWorker.cpp | 3 +++ trikScriptRunner/src/trikScriptRunner.cpp | 5 +++++ 6 files changed, 14 insertions(+), 3 deletions(-) diff --git a/scripts/script.sh b/scripts/script.sh index 105485a93..23be8c83c 100755 --- a/scripts/script.sh +++ b/scripts/script.sh @@ -38,7 +38,7 @@ $EXECUTOR bash -lic " set -x; \ ASAN_OPTIONS=disable_coredump=0:detect_stack_use_after_return=1:fast_unwind_on_malloc=0:symbolize=1:use_sigaltstack=0 \ LSAN_OPTIONS=suppressions=\$PWD/bin/lsan.supp:fast_unwind_on_malloc=0 \ MSAN_OPTIONS=poison_in_dtor=1 \ - make check -k -j2 \ + make check -k -j2 TESTARGS='--gtest_death_test_style=threadsafe --gtest_catch_exceptions=0 --gtest_color=yes --gtest_random_seed=0' \ && ls bin/x86-$CONFIG" #exec timeout -k 10s 100s scripts/runtests.sh trikKernelTests trikCameraPhotoTests trikCommunicatorTests trikJsRunnerTests trikPyRunnerTests diff --git a/tests/trikPyRunnerTests/trikPyRunnerTest.cpp b/tests/trikPyRunnerTests/trikPyRunnerTest.cpp index ad611cc21..df6fe556b 100644 --- a/tests/trikPyRunnerTests/trikPyRunnerTest.cpp +++ b/tests/trikPyRunnerTests/trikPyRunnerTest.cpp @@ -60,6 +60,7 @@ int TrikPyRunnerTest::run(const QString &script) rc = EXIT_SCRIPT_ERROR; std::cerr << qPrintable(e) << std::endl; } + QCoreApplication::processEvents(); // for stdout messages l.exit(rc); } ); mStdOut.clear(); @@ -74,7 +75,8 @@ int TrikPyRunnerTest::runDirectCommandAndWaitForQuit(const QString &script) QEventLoop l; QObject::connect(&*mScriptRunner, &trikScriptRunner::TrikScriptRunnerInterface::completed , &l, [&l](const QString &e) { - l.exit(e.isEmpty() ? EXIT_SCRIPT_SUCCESS + QCoreApplication::processEvents(); // dispatch events for print/stdout + l.exit(e.isEmpty() ? EXIT_SCRIPT_SUCCESS : (qDebug() << e, EXIT_SCRIPT_ERROR)); }); mStdOut.clear(); diff --git a/trikKernel/src/fileUtils.cpp b/trikKernel/src/fileUtils.cpp index cb2ce82c0..f975b76ae 100644 --- a/trikKernel/src/fileUtils.cpp +++ b/trikKernel/src/fileUtils.cpp @@ -16,7 +16,6 @@ #include #include - #include "exceptions/failedToOpenFileException.h" #include "exceptions/failedToParseXmlException.h" diff --git a/trikScriptRunner/src/pythonEngineWorker.cpp b/trikScriptRunner/src/pythonEngineWorker.cpp index 2777261e9..38b5b4e13 100644 --- a/trikScriptRunner/src/pythonEngineWorker.cpp +++ b/trikScriptRunner/src/pythonEngineWorker.cpp @@ -386,8 +386,10 @@ void PythonEngineWorker::doRun(const QString &script, const QFileInfo &scriptFil auto wasError = mState != ready && PythonQt::self()->hadError(); mState = ready; + QCoreApplication::processEvents(); //dispatch events before reset mScriptExecutionControl->reset(); releaseContext(); + QCoreApplication::processEvents(); //dispatch events before emitting the signal if (wasError) { emit completed(mErrorMessage, 0); } else { diff --git a/trikScriptRunner/src/scriptEngineWorker.cpp b/trikScriptRunner/src/scriptEngineWorker.cpp index 3568b0388..2d5b9a93d 100644 --- a/trikScriptRunner/src/scriptEngineWorker.cpp +++ b/trikScriptRunner/src/scriptEngineWorker.cpp @@ -25,6 +25,7 @@ #include "scriptable.h" #include "utils.h" +#include #include #include @@ -220,6 +221,7 @@ void ScriptEngineWorker::doRun(const QString &script) mThreading.waitForAll(); const QString error = mThreading.errorMessage(); QLOG_INFO() << "ScriptEngineWorker: evaluation ended with message" << error; + QCoreApplication::processEvents(); emit completed(error, mScriptId); } @@ -254,6 +256,7 @@ void ScriptEngineWorker::doRunDirect(const QString &command, int scriptId) msg = mDirectScriptsEngine->uncaughtException().toString(); mDirectScriptsEngine.reset(); } + QCoreApplication::processEvents(); Q_EMIT completed(msg, mScriptId); } } diff --git a/trikScriptRunner/src/trikScriptRunner.cpp b/trikScriptRunner/src/trikScriptRunner.cpp index 32b557af5..97c46bf99 100644 --- a/trikScriptRunner/src/trikScriptRunner.cpp +++ b/trikScriptRunner/src/trikScriptRunner.cpp @@ -20,6 +20,7 @@ #include #include "threading.h" +#include #include using namespace trikControl; @@ -156,11 +157,15 @@ void TrikScriptRunner::run(const QString &script, ScriptType stype, const QStrin abortAll(); // FIXME: or fetchRunner(stype)->abort()? or abort(/*last*/)? fetchRunner(stype)->run(script, fileName); + // Enforce events dispatch before return, f.e. handling of stdout messages + QCoreApplication::processEvents(); } void TrikScriptRunner::runDirectCommand(const QString &command) { fetchRunner(mLastRunner)->runDirectCommand(command); + // Enforce events dispatch before return, f.e. handling of stdout messages + QCoreApplication::processEvents(); } void TrikScriptRunner::abort()