One unit-test/ directory per module/target, mirroring the existing
TetraIF/unit-test/ layout (one QtTest executable per module, guarded by
BUILD_TESTING and the module target, each registered with ctest):
Lts/Common/CodeGen codegen_unit_test
Lts/Common/LtsCoordinate ltscoordinate_unit_test
Lts/Common/LtsSession ltssession_unit_test
Lts/DDS/Core ddscore_unit_test
Lts/DDS/QosProfile ddsqos_unit_test
Lts/Tools/LogViewer logviewer_unit_test
Lts/Tools/SqlBrowser sqlbrowser_unit_test
Z/src/NGLLogger ngllogger_unit_test
Z/src/WMS_Interface wms_json_ds_unit_test
Z/src/nglapplication nglcoreapplication_unit_test
Z/src/nglcompression nglcompression_unit_test
Z/src/nglsettings nglsettings_unit_test
Z/src/ngltranslator ngltranslator_unit_test
Where a module is built with hidden visibility and has no export macro
(LogViewer, SqlBrowser, ngltranslator, NGLLogger, nglcompression,
nglsettings), its sources are compiled directly into the test
executable, the same pattern as prtcnv_unit_test.
ctest baseline in the container (QT_QPA_PLATFORM=offscreen): 20/23
passed (13 new + 7 pre-existing in-scope tests), 3 Not Run as before
(nglcomp_test, GrantleeParserSmoke, utils_test).
README: ctest baseline table extended to the 23 registered tests and
section 2.4 now documents the per-module test layout. ddsview has no
unit test (GUI tool, XmlHelper needs the DDS dynamic-xtypes runtime).
MockCoordTrans is a Release 2 GROUP3 target: a header-only static
library defined in Lts/Common/CommonUnitTestsPlaceholder/mocks. As a
header-only lib it has no source file as a ninja edge input, so the
build-closure keep set did not pull its dir in and the prune removed
its CMakeLists (ninja: unknown target MockCoordTrans). Restore the dir
and its add_subdirectory; the smoke tests inside stay behind their
default-OFF options.
The full-module import merge (097e5b488) replaced the validated Release 2
test wiring with the full-tree CMake files, leaving 5 targets referenced by
new_docker_build_release2.sh / README undefined:
- Restore LogViewLogger library in TetraIF/LogView/CMakeLists.txt
(pre-merge file defined both LogViewLogger lib and LogView exe)
- Re-add ADD_SUBDIRECTORY(unit-test) in TetraIF/CMakeLists.txt
(coprtcnv_unit_test, logview_unit_test, prtcnv_unit_test)
- Add CommonUnitTestsPlaceholder to Lts/Common/CMakeLists.txt (MockCoordTrans)
Driver (new_docker_build_release2.sh):
- Pass -DBUILD_TESTING=ON: TetraIF/unit-test is gated on BUILD_TESTING
- Default GUEZ_MODE=ON: the DEB step expanded ${GUEZ_MODE} in-container
where it was unset, producing -DGUEZ_MODE= (false in CMake)
rpmbuild/make_rpm_ubuntu26_release2.py:
- Use the Ninja generator (cmake -G Ninja / dh_auto_configure -GNinja):
with CMake 4.2.3 in the legatus-qt6:1.0 image the Unix Makefiles
generator emits no rule for AUTOMOC <target>_autogen/mocs_compilation.cpp
("No rule to make target") and every Qt target fails; Ninja handles
automoc correctly (verified: ninja -n of all 39 Release 2 targets passes)
- Add ninja-build to debian Build-Depends
Verified inside legatus-qt6:1.0 (mount /repo, BUILD_RTI=ON, BUILD_TESTING=ON,
Ninja): cmake configure exit 0 and ninja -n of the full Release 2 target
list (GROUP1/3/5/6, 39 targets) exit 0.
- Enable LtsMultiMonitor and PluginInterfaces in Lts/Common/CMakeLists.txt
- Add LtsMultiMonitor, DataPluginInterface, GuiPluginInterface to GROUP3_TARGETS
- Required by LtsSession which is used by LtsWidgets
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Exclude LtsElevation library (depends on AssetManagement, needed only for Release 2b services)
- Update GROUP3_TARGETS to remove LtsElevation
- Comment out LtsElevation subdirectory in CMakeLists.txt
Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com>
- Replace invalidateFilter() with beginFilterChange()/endFilterChange() in lts_column_filter_proxy_model.cpp (3 calls)
- Replace QCheckBox::stateChanged with checkStateChanged in lts_dialog.cpp
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Continue the Qt5->Qt6 migration so the LTS Projects (Group 10) and LTS
Application (Group 11) compile, link, and ctest runs.
Qt5->Qt6 API migration (resolves removed/deprecated Qt6 APIs) across Lts
Tools and Apps, e.g. QAction->QActionGroup, QAbstractSocket::errorOccurred,
Qt::SkipEmptyParts, QRandomGenerator, QInputDevice::DeviceType,
QRegularExpression, QLatin1Literal->QStringLiteral, and the SampleModel
m_description->description rename.
CMake build fixes:
- CMakeLists.txt: add Lts/Common to CMAKE_AUTOMOC_INCLUDE_DIRECTORIES so moc
resolves Q_INTERFACES(ProjectPlugin::Plugin) for the migrated Projects.
- cmake/NGLMacros.cmake: NGL_COMPILE_RESOURCES - replace return() (which aborts
the calling CMakeLists.txt) with an if/else/endif.
- OpApp/THP: guard the ArcGISQt5Hack link with $<IF:$<TARGET_EXISTS:...>> (the
target is absent when the SituationMap viewer is stubbed); matches
CentralEffectSimulation.
- LtsSession: prefer the in-tree svcCoreClient target over a FIND_LIBRARY in
/usr/local/lib.
- CnrProxyTester/DotMatrixDisplay: set AUTOUIC_SEARCH_PATHS for the ui/ subdir.
- TopicDiscover: link NGLLogger.
Export-header visibility stubs (expand the empty *_EXPORT macro to
__attribute__((visibility("default"))); the build sets -fvisibility=hidden and
these stubs shadow the CMake-generated header):
- include/LtsProjectionWorkstation/ltsprojectionworkstation_export.h (fixes
undefined reference to LtsProjectionWorkstation::getInstance /
setProjectionOperatorPreset)
- include/LtsSession/ltssession_export.h, include/LtsUtilsGuiDds/ltsutilsguidds_export.h (same pattern)
New plugin modules (copied from legacy) so LtsAppDescriptorChecker finds the
gui:3 IIDs referenced by the Projects' apps.json:
- TakeHomePackageManager/OldTHP gui:3:tpm.man, gui:3:tpm.usb
- PresentationManagement/.../ScriptEditor gui:3:pre.script.edit
- Timeline/Gui/EventTimelineClassic gui:3:tln.view
new_docker_build.sh: correct group targets to the actual CMake target names,
guard LtsReportDisplay on BUILD_CODIFICATION, and skip modules unavailable in
the prebuilt image (AsmWorkstationCertifier/botan2, TrajectoryWidget,
VideoImport, thp_viewer/VLC).