Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
43c0254
COMP: Replace deprecated invalidateFilter() with beginFilterChange/en…
hjmjohnson Mar 20, 2026
cbd79bb
COMP: Replace QImage::mirrored() with flipped() for Qt 6.9+ compatibi…
hjmjohnson Mar 20, 2026
40a975e
COMP: Q_ENUMS (deprecated) in Qt5.5+
hjmjohnson Jul 7, 2025
819105c
PERF: Prevent range-loop container detach (clazy range-loop-detach)
hjmjohnson Mar 22, 2026
f663a5e
PERF: Replace QMap with QHash for pointer keys (clazy qmap-with-point…
hjmjohnson Mar 21, 2026
6218b0a
STYLE: Replace container anti-patterns with direct iteration (clazy)
hjmjohnson Mar 20, 2026
bd0c0d4
PERF: Replace non-const calls on temporaries with const alternatives …
hjmjohnson Mar 22, 2026
d0a08f0
STYLE: Remove const from signals and move getters out of slots sectio…
hjmjohnson Mar 22, 2026
3349344
BUG: Check QFile::open() return values instead of ignoring them
hjmjohnson Mar 20, 2026
e3dcba5
STYLE: Add missing Q_OBJECT macro to QAbstractItemModel subclasses (c…
hjmjohnson Mar 22, 2026
8d0897a
STYLE: Remove spurious return before void expression (clazy returning…
hjmjohnson Mar 29, 2026
55133ee
STYLE: Remove incorrect emit on non-signal method (clazy incorrect-emit)
hjmjohnson Mar 29, 2026
72fc09f
COMP: Replace Q_ENUMS with Q_ENUM in ctkDICOMVisualBrowserWidget (cla…
hjmjohnson Mar 29, 2026
d13f65b
PERF: Use QString::arg() multi-arg overload instead of chaining (claz…
hjmjohnson Mar 29, 2026
b1d7f71
STYLE: Use QFileInfo::exists(path) static overload
hjmjohnson Mar 20, 2026
ae333f7
COMP: Add QtTesting include directories to CMakeLists.txt
hjmjohnson Jul 7, 2025
8892b85
COMP: Drop VTK 8 superbuild support
hjmjohnson Mar 29, 2026
d4d1b87
COMP: Remove CMake conditional code for VTK versions older than 9
hjmjohnson Mar 29, 2026
0844e07
COMP: Remove C++ preprocessor guards for VTK versions older than 9
hjmjohnson Mar 29, 2026
943d52b
STYLE: Rename on_*_* slots to avoid connect-by-name pattern (clazy co…
hjmjohnson Mar 22, 2026
3a1a594
STYLE: Use const iterators to prevent implicit container detach (claz…
hjmjohnson Mar 21, 2026
af9f3e2
BUG: Avoid virtual dispatch in ctkLayoutManager constructors (clazy v…
hjmjohnson Mar 29, 2026
14299a2
STYLE: Normalize SIGNAL/SLOT signatures (clazy connect-not-normalized)
hjmjohnson Mar 20, 2026
bff126a
ENH: Add `Q_OBJECT` macro to relevant classes and include `.moc` files
hjmjohnson Jul 4, 2025
ff18280
COMP: Add missing Q_OBJECT macro to QObject subclasses in tests (claz…
hjmjohnson Mar 29, 2026
1b5ff14
STYLE: Add QObject* parent parameter to constructors missing it (claz…
hjmjohnson Mar 29, 2026
b59674f
COMP: Need full definitions not forward declarations
hjmjohnson Jul 7, 2025
0591b0d
PERF: Replace non-POD global statics with lazy initialization (clazy …
hjmjohnson Mar 21, 2026
3bdec9d
STYLE: Wrap location manager globals in Q_GLOBAL_STATIC (clazy non-po…
hjmjohnson Mar 22, 2026
ed74a5e
PERF: Pass non-trivial types by const-ref instead of by value (clazy …
hjmjohnson Mar 22, 2026
146f5ec
PERF: Pass trivially-copyable types by value instead of const-ref (cl…
hjmjohnson Mar 29, 2026
5c33c7a
STYLE: Add missing emit keyword on signal calls (clazy incorrect-emit)
hjmjohnson Mar 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ int main(int argc, char** argv)
DICOMVisualBrowser.setDatabaseDirectorySettingsKey("DatabaseDirectory");
DICOMVisualBrowser.setDatabaseDirectory(databaseDirectory);

QObject::connect(&directoryButton, SIGNAL(directoryChanged(const QString&)),
&DICOMVisualBrowser, SLOT(setDatabaseDirectory(const QString&)));
QObject::connect(&directoryButton, SIGNAL(directoryChanged(QString)),
&DICOMVisualBrowser, SLOT(setDatabaseDirectory(QString)));

mainLayout.addWidget(&DICOMVisualBrowser);
mainWidget.setLayout(&mainLayout);
Expand Down
1 change: 1 addition & 0 deletions Applications/ctkPluginBrowser/ctkQtResourcesTreeModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class ctkQtResourceTreeItem;

class ctkQtResourcesTreeModel : public QAbstractItemModel
{
Q_OBJECT
public:

ctkQtResourcesTreeModel(QObject* parent = 0);
Expand Down
2 changes: 1 addition & 1 deletion CMake/ctkWrapPythonQt.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ def ctk_wrap_pythonqt(target, namespace, output_dir, input_files, extra_verbose)

# Skip wrapping if object has a virtual pure method
# "x3b" is the unicode for semicolon
regex = r"virtual[\w\n\s\*\(\)]+\=[\s\n]*(0|NULL|nullptr)[\s\n]*\x3b"
regex = r"virtual[\w\n\s\*\&\(\),:<>]+\=[\s\n]*(0|NULL|nullptr)[\s\n]*\x3b"
res = re.search(regex, content, re.MULTILINE)
if res is not None:
if extra_verbose:
Expand Down
27 changes: 3 additions & 24 deletions CMakeExternals/VTK.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,12 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
if(NOT DEFINED CTK_VTK_VERSION_MAJOR)
set(CTK_VTK_VERSION_MAJOR "9")
endif()
if(NOT CTK_VTK_VERSION_MAJOR MATCHES "^(8|9)$")
message(FATAL_ERROR "Expected value for CTK_VTK_VERSION_MAJOR is either '8' or '9'")
if(NOT CTK_VTK_VERSION_MAJOR MATCHES "^(9)$")
message(FATAL_ERROR "Expected value for CTK_VTK_VERSION_MAJOR is '9'")
endif()
ExternalProject_Message(${proj} "VTK[CTK_VTK_VERSION_MAJOR:${CTK_VTK_VERSION_MAJOR}]")

if(CTK_VTK_VERSION_MAJOR VERSION_EQUAL "8")
set(revision_tag v8.0.1)
elseif(CTK_VTK_VERSION_MAJOR VERSION_EQUAL "9")
set(revision_tag v9.5.2)
endif()
set(revision_tag v9.5.2)
if(${proj}_REVISION_TAG)
set(revision_tag ${${proj}_REVISION_TAG})
endif()
Expand All @@ -59,7 +55,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
endif()

set(additional_vtk_cmakevars )
set(additional_vtk8_cmakevars )
set(additional_vtk9_cmakevars )
if(MINGW)
list(APPEND additional_vtk_cmakevars -DCMAKE_USE_PTHREADS:BOOL=OFF)
Expand Down Expand Up @@ -107,16 +102,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
message(FATAL_ERROR "Support for Qt${CTK_QT_VERSION} is not implemented")
endif()

# VTK 8
list(APPEND additional_vtk8_cmakevars
-DModule_vtkChartsCore:BOOL=ON
-DModule_vtkRenderingContext2D:BOOL=ON
-DModule_vtkRenderingContextOpenGL2:BOOL=ON
-DModule_vtkGUISupportQt:BOOL=ON
-DModule_vtkGUISupportQtOpenGL:BOOL=ON # OpenGL2 rendering backend
-DModule_vtkTestingRendering:BOOL=ON
)

# VTK 9
list(APPEND additional_vtk9_cmakevars
-DVTK_MODULE_ENABLE_VTK_ChartsCore:STRING=YES
Expand All @@ -137,10 +122,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
if(UNIX AND NOT APPLE)
find_package(FontConfig QUIET)
if(FONTCONFIG_FOUND)
# VTK8
list(APPEND additional_vtk8_cmakevars
-DModule_vtkRenderingFreeTypeFontConfig:BOOL=ON
)
# VTK9
list(APPEND additional_vtk9_cmakevars
-DVTK_MODULE_ENABLE_VTK_RenderingFreeTypeFontConfig:BOOL=ON
Expand Down Expand Up @@ -176,8 +157,6 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
-DVTK_WRAP_PYTHON:BOOL=${CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK}
-DVTK_WRAP_JAVA:BOOL=OFF
-DBUILD_SHARED_LIBS:BOOL=ON
-DVTK_Group_Qt:BOOL=ON
-DVTK_QT_VERSION:STRING=${CTK_QT_VERSION}
-DVTK_LEGACY_REMOVE:BOOL=ON
DEPENDS
${${proj}_DEPENDENCIES}
Expand Down
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -882,6 +882,8 @@ set(CTK_LIB_QtTesting ${CTK_USE_QTTESTING})
if(CTK_USE_QTTESTING)
list(APPEND CTK_LIBS QtTesting)
list(APPEND target_directories "${CMAKE_CURRENT_SOURCE_DIR}/Libs/QtTesting^^CTK_LIB_QtTesting")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Libs/QtTesting)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/Libs/QtTesting)
endif()

#message(STATUS target_directories:${target_directories})
Expand Down
4 changes: 2 additions & 2 deletions Libs/CommandLineModules/Core/ctkCmdLineModuleCache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,8 @@ void ctkCmdLineModuleCache::removeCacheEntry(const QUrl& moduleLocation)

void ctkCmdLineModuleCache::clearCache()
{
foreach(const QUrl &url, d->LocationToXmlDescription.keys())
for (auto it = d->LocationToXmlDescription.constBegin(); it != d->LocationToXmlDescription.constEnd(); ++it)
{
removeCacheEntry(url);
removeCacheEntry(it.key());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,26 @@

namespace {

static QString PREFIX_EXECUTABLE = "executable:";
static QString PREFIX_PARAMETER_GROUP = "paramGroup:";
static QString PREFIX_PARAMETER_CONTAINER = "paramContainer:";
static QString PREFIX_PARAMETER = "parameter:";
static const QString& PREFIX_EXECUTABLE()
{
static const QString s = QStringLiteral("executable:");
return s;
}
static const QString& PREFIX_PARAMETER_GROUP()
{
static const QString s = QStringLiteral("paramGroup:");
return s;
}
static const QString& PREFIX_PARAMETER_CONTAINER()
{
static const QString s = QStringLiteral("paramContainer:");
return s;
}
static const QString& PREFIX_PARAMETER()
{
static const QString s = QStringLiteral("parameter:");
return s;
}

}

Expand Down Expand Up @@ -93,10 +109,10 @@ QString ctkCmdLineModuleObjectTreeWalker::name() const
if (CurrentObject == 0) return QString();
switch(CurrentToken)
{
case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE.size());
case ParameterGroup: return CurrentObject->objectName().mid(PREFIX_PARAMETER_GROUP.size());
case ParameterContainer: return CurrentObject->objectName().mid(PREFIX_PARAMETER_CONTAINER.size());
case Parameter: return CurrentObject->objectName().mid(PREFIX_PARAMETER.size());
case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE().size());
case ParameterGroup: return CurrentObject->objectName().mid(PREFIX_PARAMETER_GROUP().size());
case ParameterContainer: return CurrentObject->objectName().mid(PREFIX_PARAMETER_CONTAINER().size());
case Parameter: return CurrentObject->objectName().mid(PREFIX_PARAMETER().size());
default: return QString();
}
}
Expand All @@ -107,7 +123,7 @@ QString ctkCmdLineModuleObjectTreeWalker::label() const
if (CurrentObject == 0) return QString();
switch(CurrentToken)
{
case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE.size());
case Executable: return CurrentObject->objectName().mid(PREFIX_EXECUTABLE().size());
case ParameterGroup: return property("title").toString();
case ParameterContainer: return property("name").toString();
case Parameter: return property("label").toString();
Expand Down Expand Up @@ -276,10 +292,10 @@ QVariant ctkCmdLineModuleObjectTreeWalker::prefixedProperty(const QString& propN
QString prefixedName;
switch(CurrentToken)
{
case ctkCmdLineModuleObjectTreeWalker::Executable: prefixedName = PREFIX_EXECUTABLE + propName; break;
case ctkCmdLineModuleObjectTreeWalker::ParameterGroup: prefixedName = PREFIX_PARAMETER_GROUP + propName; break;
case ctkCmdLineModuleObjectTreeWalker::ParameterContainer: prefixedName = PREFIX_PARAMETER_CONTAINER + propName; break;
case ctkCmdLineModuleObjectTreeWalker::Parameter: prefixedName = PREFIX_PARAMETER + propName; break;
case ctkCmdLineModuleObjectTreeWalker::Executable: prefixedName = PREFIX_EXECUTABLE() + propName; break;
case ctkCmdLineModuleObjectTreeWalker::ParameterGroup: prefixedName = PREFIX_PARAMETER_GROUP() + propName; break;
case ctkCmdLineModuleObjectTreeWalker::ParameterContainer: prefixedName = PREFIX_PARAMETER_CONTAINER() + propName; break;
case ctkCmdLineModuleObjectTreeWalker::Parameter: prefixedName = PREFIX_PARAMETER() + propName; break;
default: ;
}

Expand All @@ -292,10 +308,10 @@ ctkCmdLineModuleObjectTreeWalker::token(QObject* obj)
{
if (obj == 0) return ctkCmdLineModuleObjectTreeWalker::NoToken;
QString name = obj->objectName();
if (name.startsWith(PREFIX_EXECUTABLE)) return ctkCmdLineModuleObjectTreeWalker::Executable;
if (name.startsWith(PREFIX_PARAMETER_GROUP)) return ctkCmdLineModuleObjectTreeWalker::ParameterGroup;
if (name.startsWith(PREFIX_PARAMETER_CONTAINER)) return ctkCmdLineModuleObjectTreeWalker::ParameterContainer;
if (name.startsWith(PREFIX_PARAMETER)) return ctkCmdLineModuleObjectTreeWalker::Parameter;
if (name.startsWith(PREFIX_EXECUTABLE())) return ctkCmdLineModuleObjectTreeWalker::Executable;
if (name.startsWith(PREFIX_PARAMETER_GROUP())) return ctkCmdLineModuleObjectTreeWalker::ParameterGroup;
if (name.startsWith(PREFIX_PARAMETER_CONTAINER())) return ctkCmdLineModuleObjectTreeWalker::ParameterContainer;
if (name.startsWith(PREFIX_PARAMETER())) return ctkCmdLineModuleObjectTreeWalker::Parameter;
return ctkCmdLineModuleObjectTreeWalker::NoToken;
}

Expand Down
2 changes: 0 additions & 2 deletions Libs/Core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ set(KIT_SRCS
ctkHighPrecisionTimer.cpp
ctkJobScheduler.cpp
ctkJobScheduler.h
ctkJobScheduler_p.h
ctkLinearValueProxy.cpp
ctkLinearValueProxy.h
ctkLogger.cpp
Expand Down Expand Up @@ -110,7 +109,6 @@ set_source_files_properties(
ctkAbstractJob.h
ctkAbstractWorker.h
ctkJobScheduler.h
ctkJobScheduler_p.h
WRAP_EXCLUDE
)

Expand Down
2 changes: 1 addition & 1 deletion Libs/Core/Testing/Cpp/ctkBackTraceTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void Q_DECL_EXPORT bt_func1()
bool foundBackTrace = false;
bool foundFunc1 = false;
bool foundFunc2 = false;
for (const QString& frame : trace)
for (const QString& frame : std::as_const(trace))
{
if (frame.contains("ctkBackTrace"))
{
Expand Down
4 changes: 3 additions & 1 deletion Libs/Core/Testing/Cpp/ctkBooleanMapperTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class ctkObjectWithBoolProp: public QObject
Q_OBJECT
Q_PROPERTY(bool checked READ checked WRITE setChecked NOTIFY toggled);
public:
ctkObjectWithBoolProp(){this->Checked = false;}
ctkObjectWithBoolProp(QObject* parent = nullptr) : QObject(parent) {this->Checked = false;}
bool checked()const {return this->Checked;}

public Q_SLOTS:
Expand All @@ -52,6 +52,8 @@ public Q_SLOTS:
class ctkBooleanMapperTester: public QObject
{
Q_OBJECT
public:
explicit ctkBooleanMapperTester(QObject* parent = nullptr) : QObject(parent) {}
private Q_SLOTS:
void testValue();
void testComplement();
Expand Down
2 changes: 2 additions & 0 deletions Libs/Core/Testing/Cpp/ctkCoreSettingsTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
class ctkCoreSettingsTester: public QObject
{
Q_OBJECT
public:
explicit ctkCoreSettingsTester(QObject* parent = nullptr) : QObject(parent) {}
private slots:
void initTestCase();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ protected Q_SLOTS:
///
/// Signals indicating to the workflow that these processes have
/// completed
void validationComplete(bool validationSucceeded, const QString& branchId = "")const;
void onEntryComplete()const;
void onExitComplete()const;
void validationComplete(bool validationSucceeded, const QString& branchId = "");
void onEntryComplete();
void onExitComplete();

protected:
QScopedPointer<ctkExampleWorkflowStepUsingSignalsAndSlotsPrivate> d_ptr;
Expand Down
2 changes: 2 additions & 0 deletions Libs/Core/Testing/Cpp/ctkFileLoggerTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
class ctkFileLoggerTester: public QObject
{
Q_OBJECT
public:
explicit ctkFileLoggerTester(QObject* parent = nullptr) : QObject(parent) {}
private slots:
void initTestCase();

Expand Down
2 changes: 2 additions & 0 deletions Libs/Core/Testing/Cpp/ctkLinearValueProxyTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
class ctkLinearValueProxyTester: public QObject
{
Q_OBJECT
public:
explicit ctkLinearValueProxyTester(QObject* parent = nullptr) : QObject(parent) {}
private Q_SLOTS:
void testSimpleSetValue();
void testSimpleSetValue_data();
Expand Down
5 changes: 4 additions & 1 deletion Libs/Core/Testing/Cpp/ctkLoggerTest1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ namespace
// ----------------------------------------------------------------------------
class ctkQtMessageHandler : public QObject
{
Q_OBJECT
public:
typedef ctkQtMessageHandler Self ;
explicit ctkQtMessageHandler()
explicit ctkQtMessageHandler(QObject* parent = nullptr) : QObject(parent)
{
qInstallMessageHandler(ctkQtMessageHandler::messageHandler);
Self::Handlers.push(this);
Expand Down Expand Up @@ -194,3 +195,5 @@ int TestSoftAssert()

return EXIT_SUCCESS;
}

#include "ctkLoggerTest1.moc"
6 changes: 6 additions & 0 deletions Libs/Core/Testing/Cpp/ctkModelTesterTest1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,19 @@
#include <iostream>

//-----------------------------------------------------------------------------
namespace {
class QAbstractItemModelHelper : public QAbstractItemModel
{
Q_OBJECT
public:
explicit QAbstractItemModelHelper(QObject* parent = nullptr) : QAbstractItemModel(parent) {}
virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); }
virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); }
virtual int rowCount(const QModelIndex&) const { return 0; }
virtual int columnCount(const QModelIndex&) const { return 0; }
virtual QVariant data(const QModelIndex&, int) const { return QVariant(); }
};
} // namespace

//-----------------------------------------------------------------------------
int ctkModelTesterTest1(int argc, char * argv [] )
Expand Down Expand Up @@ -140,3 +144,5 @@ int ctkModelTesterTest1(int argc, char * argv [] )

return EXIT_SUCCESS;
}

#include "ctkModelTesterTest1.moc"
6 changes: 6 additions & 0 deletions Libs/Core/Testing/Cpp/ctkModelTesterTest2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@
#include <iostream>

//-----------------------------------------------------------------------------
namespace {
class QAbstractItemModelHelper : public QAbstractItemModel
{
Q_OBJECT
public:
explicit QAbstractItemModelHelper(QObject* parent = nullptr) : QAbstractItemModel(parent) {}
virtual QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); }
virtual QModelIndex parent(const QModelIndex&) const { return QModelIndex(); }
virtual int rowCount(const QModelIndex&) const { return 0; }
Expand All @@ -43,6 +46,7 @@ class QAbstractItemModelHelper : public QAbstractItemModel
void emitInvalidHeaderDataChanged()
{ emit this->headerDataChanged(Qt::Vertical, 10, 10);}
};
} // namespace

//-----------------------------------------------------------------------------
int ctkModelTesterTest2(int argc, char * argv [] )
Expand Down Expand Up @@ -117,3 +121,5 @@ int ctkModelTesterTest2(int argc, char * argv [] )

return EXIT_SUCCESS;
}

#include "ctkModelTesterTest2.moc"
6 changes: 5 additions & 1 deletion Libs/Core/Testing/Cpp/ctkUtilsCopyDirRecursivelyTest1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,11 @@ bool createFile(int line, const QDir& dir, const QString& relativePath, const QS
newDir.cd(relativePath);
QString filePath = QFileInfo(newDir, fileName).filePath();
QFile file(filePath);
file.open(QIODevice::Text | QIODevice::WriteOnly);
if (!file.open(QIODevice::Text | QIODevice::WriteOnly))
{
std::cerr << "Failed to open file for writing: " << qPrintable(filePath) << std::endl;
return EXIT_FAILURE;
}
QTextStream out(&file);
out << "Generated by ctkUtilsCopyDirRecursivelyTest1" << ctk::endl;
file.close();
Expand Down
6 changes: 5 additions & 1 deletion Libs/Core/Testing/Cpp/ctkUtilsIsDirEmptyTest1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ int ctkUtilsIsDirEmptyTest1(int argc, char * argv [] )
// Create file
QString filePath = tempDir.filePath("file.txt");
QFile file(filePath);
file.open(QIODevice::Text | QIODevice::WriteOnly);
if (!file.open(QIODevice::Text | QIODevice::WriteOnly))
{
qWarning() << "Failed to open file for writing:" << filePath;
return EXIT_FAILURE;
}
QTextStream out(&file);
out << "Generated by ctkUtilsIsDirEmptyTest1" << ctk::endl;
file.close();
Expand Down
2 changes: 2 additions & 0 deletions Libs/Core/Testing/Cpp/ctkUtilsTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
class ctkUtilsTester: public QObject
{
Q_OBJECT
public:
explicit ctkUtilsTester(QObject* parent = nullptr) : QObject(parent) {}
private slots:
void initTestCase();

Expand Down
6 changes: 5 additions & 1 deletion Libs/Core/Testing/Cpp/ctkUtilsTest4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,11 @@ int createFile(int line, const QDir& dir, const QString& relativePath, const QSt
newDir.cd(relativePath);
QString filePath = QFileInfo(newDir, fileName).filePath();
QFile file(filePath);
file.open(QIODevice::Text | QIODevice::WriteOnly);
if (!file.open(QIODevice::Text | QIODevice::WriteOnly))
{
std::cerr << "Failed to open file for writing: " << qPrintable(filePath) << std::endl;
return EXIT_FAILURE;
}
QTextStream out(&file);
out << "Generated by ctkUtilsTest4" << ctk::endl;
file.close();
Expand Down
Loading
Loading