Skip to content

Commit fa2d90b

Browse files
committed
Rework tests to make them work on Windows and macOS as well; Remove compiler warnings for Clang and GCC; Remove deprecated Qt calls; Set Qt minimal version to 5.12; Bump CANdevStudio version up to v1.2.1
Signed-off-by: Remigiusz Kołłątaj <[email protected]>
1 parent 96d4c60 commit fa2d90b

File tree

28 files changed

+184
-82
lines changed

28 files changed

+184
-82
lines changed

.github/workflows/build.yml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040

4141
- name: Test
4242
working-directory: ${{github.workspace}}/build
43-
run: ctest
43+
run: ctest --output-on-failure
4444
env:
4545
QT_QPA_PLATFORM: offscreen
4646

@@ -135,7 +135,7 @@ jobs:
135135

136136
- name: Test
137137
working-directory: ${{github.workspace}}/build
138-
run: ctest
138+
run: ctest --output-on-failure
139139
env:
140140
QT_QPA_PLATFORM: offscreen
141141

@@ -183,14 +183,20 @@ jobs:
183183

184184
- name: Configure CMake
185185
working-directory: ${{github.workspace}}/build
186-
run: cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=OFF -DCMAKE_PREFIX_PATH="$(brew --prefix qt5)/lib/cmake"
186+
run: cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(brew --prefix qt5)/lib/cmake"
187187
env:
188188
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }}
189189

190190
- name: Build
191191
working-directory: ${{github.workspace}}/build
192192
run: make -j4
193193

194+
- name: Test
195+
working-directory: ${{github.workspace}}/build
196+
run: ctest --output-on-failure
197+
env:
198+
QT_QPA_PLATFORM: offscreen
199+
194200
- name: Create packages
195201
if: startsWith(github.ref, 'refs/heads/')
196202
working-directory: ${{github.workspace}}/build
@@ -260,7 +266,13 @@ jobs:
260266

261267
- name: Build
262268
working-directory: ${{github.workspace}}/build
263-
run: cmake --build . --config Release
269+
run: cmake --build . --config Release -- /m
270+
271+
- name: Test
272+
working-directory: ${{github.workspace}}/build
273+
run: ctest -C Release --output-on-failure
274+
env:
275+
QT_QPA_PLATFORM: offscreen
264276

265277
- name: Create Packages
266278
if: startsWith(github.ref, 'refs/heads/')

3rdParty/catch

Submodule catch updated 261 files

3rdParty/qtCannelloniCanBus

CMakeLists.txt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ project(CANdevStudio CXX)
44

55
set(VERSION_MAJOR 1)
66
set(VERSION_MINOR 2)
7-
set(VERSION_PATCH 1)
7+
set(VERSION_PATCH 2)
88

99
set(CMAKE_INCLUDE_CURRENT_DIR ON)
1010
set(CMAKE_AUTOMOC ON)
@@ -17,6 +17,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
1717
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
1818

1919
option(WITH_COVERAGE "Build with coverage" OFF)
20+
option(WITH_TESTS "Build with test" ON)
2021
option(WITH_TOOLS "Build tools directory" OFF)
2122
option(DEV_BUILD "Development build will include GIT hash and branch to versioning" ON)
2223
option(STANDALONE "Builds self containing package including Qt libs" OFF)
@@ -27,7 +28,6 @@ endif()
2728
message(STATUS "CMAKE_INSTALL_LIBDIR: '${CMAKE_INSTALL_LIBDIR}'")
2829

2930
if(UNIX)
30-
option(WITH_TESTS "Build with test" ON)
3131
if(STANDALONE)
3232
set(INSTALL_DEST_LIB CANdevStudio)
3333
set(INSTALL_DEST_BIN CANdevStudio)
@@ -38,14 +38,12 @@ if(UNIX)
3838
set(INSTALL_DEST_PLUG ${CMAKE_INSTALL_LIBDIR}/qt/plugins/canbus)
3939
endif()
4040
else()
41-
option(WITH_TESTS "Build with test" OFF)
42-
4341
set(GUI_TYPE WIN32)
4442
set(INSTALL_DEST_LIB CANdevStudio)
4543
set(INSTALL_DEST_BIN CANdevStudio)
4644
endif()
4745

48-
set(QT_REQUIRED_VERSION "5.6")
46+
set(QT_REQUIRED_VERSION "5.12")
4947
find_package(Qt5Core ${QT_REQUIRED_VERSION} REQUIRED)
5048
find_package(Qt5SerialBus ${QT_REQUIRED_VERSION} REQUIRED)
5149
find_package(Qt5Widgets ${QT_REQUIRED_VERSION} REQUIRED)

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ If CMake failed to find Qt in your system:
8686
```
8787
cd CANdevStudio/build
8888
rm -rf *
89-
cmake .. -DCMAKE_PREFIX_PATH=/home/genivi/Qt5.8.0/5.8/gcc_64
89+
cmake .. -DCMAKE_PREFIX_PATH=/home/genivi/Qt5.12.0/5.12.0/gcc_64
9090
make
9191
```
9292
### Windows
@@ -310,7 +310,6 @@ CanDevice component can be configured using "configuration" property:
310310
* Keys names are case sensitive, values are case insensitive
311311
* Configuration keys are taken from [ConfigurationKey enum](https://doc.qt.io/qt-5/qcanbusdevice.html#ConfigurationKey-enum).
312312
* RawFilterKey and ErrorFilterKey are currently not supported
313-
* DataBitRateKey is available since Qt 5.9
314313
* Whitespaces are ignored
315314

316315
E.g.

src/common/propertyfields.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ class PropertyFieldCombo : public PropertyField {
9595
_cb->setEditable(editable);
9696
_cb->setFrame(false);
9797
layout()->addWidget(_cb);
98-
connect(_cb, static_cast<void (QComboBox::*)(const QString&)>(&QComboBox::currentIndexChanged), this,
99-
&PropertyFieldCombo::currentTextChanged);
98+
connect(_cb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
99+
[this](int) { emit currentTextChanged(_cb->currentText()); });
100100
}
101101

102102
void setPropText(const QString& text) override

src/components/candevice/tests/candevice_test.cpp

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ TEST_CASE("Initialization succeeded", "[candevice]")
5454
Mock<CanDeviceInterface> deviceMock;
5555
std::function<void()> rcvCbk;
5656

57+
Fake(Dtor(deviceMock));
5758
Fake(Method(deviceMock, setFramesWrittenCbk));
5859
When(Method(deviceMock, setFramesReceivedCbk)).AlwaysDo([&](auto&& fn) { rcvCbk = fn; });
5960
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -79,6 +80,7 @@ TEST_CASE("Start failed", "[candevice]")
7980
using namespace fakeit;
8081
Mock<CanDeviceInterface> deviceMock;
8182

83+
Fake(Dtor(deviceMock));
8284
When(Method(deviceMock, setFramesWrittenCbk)).Do([](const auto& cb) { cb(100); });
8385
Fake(Method(deviceMock, setFramesReceivedCbk));
8486
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -96,6 +98,7 @@ TEST_CASE("Start failed - could not connect to device", "[candevice]")
9698
using namespace fakeit;
9799
Mock<CanDeviceInterface> deviceMock;
98100

101+
Fake(Dtor(deviceMock));
99102
Fake(Method(deviceMock, setFramesWrittenCbk));
100103
Fake(Method(deviceMock, setFramesReceivedCbk));
101104
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -128,6 +131,7 @@ TEST_CASE("Start succeeded", "[candevice]")
128131
using namespace fakeit;
129132
Mock<CanDeviceInterface> deviceMock;
130133

134+
Fake(Dtor(deviceMock));
131135
When(Method(deviceMock, setFramesWrittenCbk)).Do([](const auto& cb) { cb(100); });
132136
Fake(Method(deviceMock, setFramesReceivedCbk));
133137
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -146,6 +150,7 @@ TEST_CASE("Stop uninitialized", "[candevice]")
146150
using namespace fakeit;
147151
Mock<CanDeviceInterface> deviceMock;
148152

153+
Fake(Dtor(deviceMock));
149154
Fake(Method(deviceMock, setParent));
150155

151156
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
@@ -158,6 +163,7 @@ TEST_CASE("Stop initialized", "[candevice]")
158163
using namespace fakeit;
159164
Mock<CanDeviceInterface> deviceMock;
160165

166+
Fake(Dtor(deviceMock));
161167
When(Method(deviceMock, setFramesWrittenCbk)).Do([](const auto& cb) { cb(100); });
162168
Fake(Method(deviceMock, setFramesReceivedCbk));
163169
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -178,6 +184,7 @@ TEST_CASE("Config changed", "[candevice]")
178184
using namespace fakeit;
179185
Mock<CanDeviceInterface> deviceMock;
180186

187+
Fake(Dtor(deviceMock));
181188
When(Method(deviceMock, setFramesWrittenCbk)).Do([](const auto& cb) { cb(100); });
182189
Fake(Method(deviceMock, setFramesReceivedCbk));
183190
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -199,6 +206,7 @@ TEST_CASE("writeFrame results in error", "[candevice]")
199206
using namespace fakeit;
200207
Mock<CanDeviceInterface> deviceMock;
201208

209+
Fake(Dtor(deviceMock));
202210
Fake(Method(deviceMock, setFramesWrittenCbk));
203211
Fake(Method(deviceMock, setFramesReceivedCbk));
204212
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -221,6 +229,7 @@ TEST_CASE("sendFrame, writeframe returns true, no signal emitted", "[candevice]"
221229
using namespace fakeit;
222230
Mock<CanDeviceInterface> deviceMock;
223231

232+
Fake(Dtor(deviceMock));
224233
Fake(Method(deviceMock, setFramesWrittenCbk));
225234
Fake(Method(deviceMock, setFramesReceivedCbk));
226235
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -260,6 +269,7 @@ TEST_CASE("sendFrame defers FrameSent until backend emits frameWritten", "[cande
260269
const auto frame = QCanBusFrame{ 0x12345678, QByteArray{ "\x50\x30\10" } };
261270
CanDeviceInterface::framesWritten_t writtenCbk;
262271

272+
Fake(Dtor(deviceMock));
263273
When(Method(deviceMock, setFramesWrittenCbk)).Do([&](auto&& fn) { writtenCbk = fn; });
264274
Fake(Method(deviceMock, setFramesReceivedCbk));
265275
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -291,6 +301,7 @@ TEST_CASE("Emits all available frames when notified by backend", "[candevice]")
291301
auto currentFrame = frames.begin();
292302
CanDeviceInterface::framesReceived_t receivedCbk;
293303

304+
Fake(Dtor(deviceMock));
294305
Fake(Method(deviceMock, setFramesWrittenCbk));
295306
When(Method(deviceMock, setFramesReceivedCbk)).Do([&](auto&& fn) { receivedCbk = fn; });
296307
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -326,6 +337,7 @@ TEST_CASE("WriteError causes emitting frameSent with frameSent=false", "[candevi
326337
const auto frame = QCanBusFrame{ 0x12345678, QByteArray{ "\x50\x30\10" } };
327338
CanDeviceInterface::errorOccurred_t errorCbk;
328339

340+
Fake(Dtor(deviceMock));
329341
Fake(Method(deviceMock, setFramesWrittenCbk));
330342
Fake(Method(deviceMock, setFramesReceivedCbk));
331343
When(Method(deviceMock, setErrorOccurredCbk)).Do([&](auto&& fn) { errorCbk = fn; });
@@ -351,17 +363,19 @@ TEST_CASE("read configuration to json format", "[candevice]")
351363
{
352364
using namespace fakeit;
353365
Mock<CanDeviceInterface> deviceMock;
366+
Fake(Dtor(deviceMock));
354367
Fake(Method(deviceMock, setParent));
355368
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
356369
QJsonObject config = canDevice.getConfig();
357-
REQUIRE(config.count() == canDevice.getSupportedProperties().size());
370+
REQUIRE(config.count() == static_cast<int>(canDevice.getSupportedProperties().size()));
358371
}
359372

360373
TEST_CASE("setConfig using JSON read with QObject", "[candevice]")
361374
{
362375
using namespace fakeit;
363376

364377
Mock<CanDeviceInterface> deviceMock;
378+
Fake(Dtor(deviceMock));
365379
Fake(Method(deviceMock, setParent));
366380
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
367381

@@ -386,18 +400,19 @@ TEST_CASE("Stubbed methods", "[candevice]")
386400
{
387401
using namespace fakeit;
388402
Mock<CanDeviceInterface> deviceMock;
403+
Fake(Dtor(deviceMock));
389404
Fake(Method(deviceMock, setParent));
390405
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
391406

392407
REQUIRE(canDevice.mainWidget() == nullptr);
393408
REQUIRE(canDevice.mainWidgetDocked() == true);
394409
}
395410

396-
auto prepareConfigTestMock(std::vector<std::pair<int, QVariant>>& ver)
411+
void prepareConfigTestMock(fakeit::Mock<CanDeviceInterface>& deviceMock, std::vector<std::pair<int, QVariant>>& ver)
397412
{
398413
using namespace fakeit;
399-
Mock<CanDeviceInterface> deviceMock;
400414

415+
Fake(Dtor(deviceMock));
401416
Fake(Method(deviceMock, setFramesWrittenCbk));
402417
Fake(Method(deviceMock, setFramesReceivedCbk));
403418
Fake(Method(deviceMock, setErrorOccurredCbk));
@@ -408,7 +423,6 @@ auto prepareConfigTestMock(std::vector<std::pair<int, QVariant>>& ver)
408423
When(Method(deviceMock, setConfigurationParameter)).AlwaysDo([&](int key, const QVariant& v) {
409424
ver.push_back(std::make_pair(key, v));
410425
});
411-
return deviceMock;
412426
}
413427

414428
void testConfig(fakeit::Mock<CanDeviceInterface>& deviceMock, CanDevice& canDevice, const QString& configStr)
@@ -440,7 +454,8 @@ TEST_CASE("Config parameter - invalid format and unsupported", "[candevice]")
440454
{
441455
using namespace fakeit;
442456
std::vector<std::pair<int, QVariant>> v;
443-
auto&& deviceMock = prepareConfigTestMock(v);
457+
Mock<CanDeviceInterface> deviceMock;
458+
prepareConfigTestMock(deviceMock, v);
444459

445460
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
446461

@@ -458,7 +473,8 @@ TEST_CASE("Config parameter - LoopbackKey", "[candevice]")
458473
{
459474
using namespace fakeit;
460475
std::vector<std::pair<int, QVariant>> v;
461-
auto&& deviceMock = prepareConfigTestMock(v);
476+
Mock<CanDeviceInterface> deviceMock;
477+
prepareConfigTestMock(deviceMock, v);
462478

463479
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
464480

@@ -482,7 +498,8 @@ TEST_CASE("Config parameter - ReceiveOwnKey", "[candevice]")
482498
{
483499
using namespace fakeit;
484500
std::vector<std::pair<int, QVariant>> v;
485-
auto&& deviceMock = prepareConfigTestMock(v);
501+
Mock<CanDeviceInterface> deviceMock;
502+
prepareConfigTestMock(deviceMock, v);
486503

487504
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
488505

@@ -506,7 +523,8 @@ TEST_CASE("Config parameter - CanFdKey", "[candevice]")
506523
{
507524
using namespace fakeit;
508525
std::vector<std::pair<int, QVariant>> v;
509-
auto&& deviceMock = prepareConfigTestMock(v);
526+
Mock<CanDeviceInterface> deviceMock;
527+
prepareConfigTestMock(deviceMock, v);
510528

511529
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
512530

@@ -530,7 +548,8 @@ TEST_CASE("Config parameter - BitRateKey", "[candevice]")
530548
{
531549
using namespace fakeit;
532550
std::vector<std::pair<int, QVariant>> v;
533-
auto&& deviceMock = prepareConfigTestMock(v);
551+
Mock<CanDeviceInterface> deviceMock;
552+
prepareConfigTestMock(deviceMock, v);
534553

535554
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
536555

@@ -551,7 +570,8 @@ TEST_CASE("Config parameter - UserKey", "[candevice]")
551570
{
552571
using namespace fakeit;
553572
std::vector<std::pair<int, QVariant>> v;
554-
auto&& deviceMock = prepareConfigTestMock(v);
573+
Mock<CanDeviceInterface> deviceMock;
574+
prepareConfigTestMock(deviceMock, v);
555575

556576
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
557577

@@ -575,7 +595,8 @@ TEST_CASE("Config parameter - DataBitRateKey", "[candevice]")
575595
{
576596
using namespace fakeit;
577597
std::vector<std::pair<int, QVariant>> v;
578-
auto&& deviceMock = prepareConfigTestMock(v);
598+
Mock<CanDeviceInterface> deviceMock;
599+
prepareConfigTestMock(deviceMock, v);
579600

580601
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
581602

@@ -598,7 +619,8 @@ TEST_CASE("Config parameter - multiple keys", "[candevice]")
598619
{
599620
using namespace fakeit;
600621
std::vector<std::pair<int, QVariant>> v;
601-
auto&& deviceMock = prepareConfigTestMock(v);
622+
Mock<CanDeviceInterface> deviceMock;
623+
prepareConfigTestMock(deviceMock, v);
602624

603625
CanDevice canDevice{ CanDeviceCtx(&deviceMock.get()) };
604626

0 commit comments

Comments
 (0)