From 29a86cfbac4a2d7fa57ca657af7ae71b72baf227 Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Sat, 5 Apr 2025 19:17:03 -0400 Subject: [PATCH] refactor: port GenericArgsTests to QtTests --- src/test/mock/deskflow/MockApp.h | 36 --- .../deskflow/GenericArgsParsingTests.cpp | 206 ------------------ src/unittests/deskflow/ArgParserTests.cpp | 123 +++++++++++ src/unittests/deskflow/ArgParserTests.h | 10 + 4 files changed, 133 insertions(+), 242 deletions(-) delete mode 100644 src/test/mock/deskflow/MockApp.h delete mode 100644 src/test/unittests/deskflow/GenericArgsParsingTests.cpp diff --git a/src/test/mock/deskflow/MockApp.h b/src/test/mock/deskflow/MockApp.h deleted file mode 100644 index 5bae847a5..000000000 --- a/src/test/mock/deskflow/MockApp.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Deskflow -- mouse and keyboard sharing utility - * SPDX-FileCopyrightText: (C) 2014 - 2016 Symless Ltd. - * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception - */ - -#pragma once - -#define TEST_ENV - -#include "deskflow/App.h" - -#include - -class MockApp : public App -{ -public: - MockApp() : App(nullptr, nullptr) - { - } - - MOCK_METHOD(void, help, (), (override)); - MOCK_METHOD(void, loadConfig, (), (override)); - MOCK_METHOD(bool, loadConfig, (const std::string &), (override)); - MOCK_METHOD(const char *, daemonInfo, (), (const, override)); - MOCK_METHOD(const char *, daemonName, (), (const, override)); - MOCK_METHOD(void, parseArgs, (int, const char *const *), (override)); - MOCK_METHOD(void, version, (), (override)); - MOCK_METHOD(int, standardStartup, (int, char **), (override)); - MOCK_METHOD(int, runInner, (int, char **, StartupFunc), (override)); - MOCK_METHOD(void, startNode, (), (override)); - MOCK_METHOD(int, mainLoop, (), (override)); - MOCK_METHOD(int, foregroundStartup, (int, char **), (override)); - MOCK_METHOD(deskflow::Screen *, createScreen, (), (override)); - MOCK_METHOD(std::string, configSection, (), (const, override)); -}; diff --git a/src/test/unittests/deskflow/GenericArgsParsingTests.cpp b/src/test/unittests/deskflow/GenericArgsParsingTests.cpp deleted file mode 100644 index 7ef1b0b44..000000000 --- a/src/test/unittests/deskflow/GenericArgsParsingTests.cpp +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Deskflow -- mouse and keyboard sharing utility - * SPDX-FileCopyrightText: (C) 2014 - 2016 Symless Ltd. - * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception - */ - -#include "deskflow/ArgParser.h" -#include "deskflow/ArgsBase.h" -#include "test/mock/deskflow/MockApp.h" - -#include - -using namespace deskflow; -using ::testing::_; -using ::testing::Invoke; -using ::testing::NiceMock; - -bool g_helpShowed = false; -bool g_versionShowed = false; - -void showMockHelp() -{ - g_helpShowed = true; -} - -void showMockVersion() -{ - g_versionShowed = true; -} - -class GenericArgsParsingTests : public ::testing::Test -{ -public: - void SetUp() - { - m_argParser = new ArgParser(nullptr); - m_argParser->setArgsBase(argsBase); - } - - void TearDown() - { - delete m_argParser; - } - - static deskflow::ArgsBase argsBase; - ArgParser *m_argParser = nullptr; -}; - -deskflow::ArgsBase GenericArgsParsingTests::argsBase; - -TEST_F(GenericArgsParsingTests, parseGenericArgs_logLevelCmd_setLogLevel) -{ - int i = 1; - const int argc = 3; - const char *kLogLevelCmd[argc] = {"stub", "--debug", "DEBUG"}; - - m_argParser->parseGenericArgs(argc, kLogLevelCmd, i); - std::string logFilter(argsBase.m_logFilter); - - EXPECT_EQ("DEBUG", logFilter); - EXPECT_EQ(2, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_logFileCmd_saveLogFilename) -{ - int i = 1; - const int argc = 3; - const char *kLogFileCmd[argc] = {"stub", "--log", "mock_filename"}; - - m_argParser->parseGenericArgs(argc, kLogFileCmd, i); - std::string logFile(argsBase.m_logFile); - - EXPECT_EQ("mock_filename", logFile); - EXPECT_EQ(2, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_logFileCmdWithSpace_saveLogFilename) -{ - int i = 1; - const int argc = 3; - const char *kLogFileCmdWithSpace[argc] = {"stub", "--log", "mo ck_filename"}; - - m_argParser->parseGenericArgs(argc, kLogFileCmdWithSpace, i); - std::string logFile(argsBase.m_logFile); - - EXPECT_EQ("mo ck_filename", logFile); - EXPECT_EQ(2, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_noDeamonCmd_daemonFalse) -{ - int i = 1; - const int argc = 2; - const char *kNoDeamonCmd[argc] = {"stub", "-f"}; - - m_argParser->parseGenericArgs(argc, kNoDeamonCmd, i); - - EXPECT_FALSE(argsBase.m_daemon); - EXPECT_EQ(1, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_deamonCmd_daemonTrue) -{ - int i = 1; - const int argc = 2; - const char *kDeamonCmd[argc] = {"stub", "--daemon"}; - - m_argParser->parseGenericArgs(argc, kDeamonCmd, i); - - EXPECT_EQ(true, argsBase.m_daemon); - EXPECT_EQ(1, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_nameCmd_saveName) -{ - int i = 1; - const int argc = 3; - const char *kNameCmd[argc] = {"stub", "--name", "mock"}; - - m_argParser->parseGenericArgs(argc, kNameCmd, i); - - EXPECT_EQ("mock", argsBase.m_name); - EXPECT_EQ(2, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_noRestartCmd_restartFalse) -{ - int i = 1; - const int argc = 2; - const char *kNoRestartCmd[argc] = {"stub", "--no-restart"}; - - m_argParser->parseGenericArgs(argc, kNoRestartCmd, i); - - EXPECT_FALSE(argsBase.m_restartable); - EXPECT_EQ(1, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_restartCmd_restartTrue) -{ - int i = 1; - const int argc = 2; - const char *kRestartCmd[argc] = {"stub", "--restart"}; - - m_argParser->parseGenericArgs(argc, kRestartCmd, i); - - EXPECT_EQ(true, argsBase.m_restartable); - EXPECT_EQ(1, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_backendCmd_rejected) -{ - int i = 1; - const int argc = 2; - const char *kBackendCmd[argc] = {"stub", "-z"}; - - EXPECT_FALSE(m_argParser->parseGenericArgs(argc, kBackendCmd, i)); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_noHookCmd_noHookTrue) -{ - int i = 1; - const int argc = 2; - const char *kNoHookCmd[argc] = {"stub", "--no-hooks"}; - - m_argParser->parseGenericArgs(argc, kNoHookCmd, i); - - EXPECT_EQ(true, argsBase.m_noHooks); - EXPECT_EQ(1, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_helpCmd_showHelp) -{ - g_helpShowed = false; - int i = 1; - const int argc = 2; - const char *kHelpCmd[argc] = {"stub", "--help"}; - - NiceMock app; - ArgParser argParser(&app); - argParser.setArgsBase(argsBase); - ON_CALL(app, help()).WillByDefault(Invoke(showMockHelp)); - - argParser.parseGenericArgs(argc, kHelpCmd, i); - - EXPECT_EQ(true, g_helpShowed); - EXPECT_EQ(1, i); -} - -TEST_F(GenericArgsParsingTests, parseGenericArgs_versionCmd_showVersion) -{ - g_versionShowed = false; - int i = 1; - const int argc = 2; - const char *kVersionCmd[argc] = {"stub", "--version"}; - - NiceMock app; - ArgParser argParser(&app); - argParser.setArgsBase(argsBase); - - ON_CALL(app, version()).WillByDefault(Invoke(showMockVersion)); - - argParser.parseGenericArgs(argc, kVersionCmd, i); - - EXPECT_EQ(true, g_versionShowed); - EXPECT_EQ(1, i); -} diff --git a/src/unittests/deskflow/ArgParserTests.cpp b/src/unittests/deskflow/ArgParserTests.cpp index dd6b6a099..a97ff5857 100644 --- a/src/unittests/deskflow/ArgParserTests.cpp +++ b/src/unittests/deskflow/ArgParserTests.cpp @@ -18,6 +18,8 @@ void ArgParserTests::initTestCase() { m_arch.init(); m_log.setFilter(kDEBUG2); + static deskflow::ArgsBase base; + m_parser.setArgsBase(base); } void ArgParserTests::isArg() @@ -320,4 +322,125 @@ void ArgParserTests::deprecatedArg_crypoPass_false() QCOMPARE(i, 1); } +void ArgParserTests::generic_logLevel() +{ + int i = 1; + const int argc = 3; + const char *kLogLevelCmd[argc] = {"stub", "--debug", "DEBUG"}; + + m_parser.parseGenericArgs(argc, kLogLevelCmd, i); + + QCOMPARE(m_parser.argsBase().m_logFilter, "DEBUG"); + QCOMPARE(i, 2); +} + +void ArgParserTests::generic_logFile() +{ + int i = 1; + const int argc = 3; + const char *kLogFileCmd[argc] = {"stub", "--log", "mock_filename"}; + + m_parser.parseGenericArgs(argc, kLogFileCmd, i); + + QCOMPARE(m_parser.argsBase().m_logFile, "mock_filename"); + QCOMPARE(i, 2); +} + +void ArgParserTests::generic_logFileWithSpace() +{ + int i = 1; + const int argc = 3; + const char *kLogFileCmdWithSpace[argc] = {"stub", "--log", "mo ck_filename"}; + + m_parser.parseGenericArgs(argc, kLogFileCmdWithSpace, i); + + QCOMPARE(m_parser.argsBase().m_logFile, "mo ck_filename"); + QCOMPARE(i, 2); +} + +void ArgParserTests::generic_foreground() +{ + int i = 1; + const int argc = 2; + const char *kNoDeamonCmd[argc] = {"stub", "-f"}; + + m_parser.parseGenericArgs(argc, kNoDeamonCmd, i); + + QVERIFY(!m_parser.argsBase().m_daemon); + QCOMPARE(i, 1); +} + +void ArgParserTests::generic_daemon() +{ + int i = 1; + const int argc = 2; + const char *kDeamonCmd[argc] = {"stub", "--daemon"}; + + m_parser.parseGenericArgs(argc, kDeamonCmd, i); + + QVERIFY(m_parser.argsBase().m_daemon); + QCOMPARE(i, 1); +} + +void ArgParserTests::generic_name() +{ + int i = 1; + const int argc = 3; + const char *kNameCmd[argc] = {"stub", "--name", "mock"}; + // Somehow cause a dump if not made here. + ArgParser parser(nullptr); + deskflow::ArgsBase base; + + parser.setArgsBase(base); + parser.parseGenericArgs(argc, kNameCmd, i); + + QCOMPARE(base.m_name, "mock"); + QCOMPARE(i, 2); +} + +void ArgParserTests::generic_noRestart() +{ + int i = 1; + const int argc = 2; + const char *kNoRestartCmd[argc] = {"stub", "--no-restart"}; + + m_parser.parseGenericArgs(argc, kNoRestartCmd, i); + + QVERIFY(!m_parser.argsBase().m_restartable); + QCOMPARE(i, 1); +} + +void ArgParserTests::generic_restart() +{ + int i = 1; + const int argc = 2; + const char *kRestartCmd[argc] = {"stub", "--restart"}; + + m_parser.parseGenericArgs(argc, kRestartCmd, i); + + QVERIFY(m_parser.argsBase().m_restartable); + QCOMPARE(i, 1); +} + +void ArgParserTests::generic_unknown() +{ + int i = 1; + const int argc = 2; + const char *kBackendCmd[argc] = {"stub", "-z"}; + + QVERIFY(!m_parser.parseGenericArgs(argc, kBackendCmd, i)); +} + +void ArgParserTests::generic_noHook() +{ + int i = 1; + const int argc = 2; + const char *kNoHookCmd[argc] = {"stub", "--no-hooks"}; + + m_parser.parseGenericArgs(argc, kNoHookCmd, i); + + QVERIFY(m_parser.argsBase().m_noHooks); + QCOMPARE(i, 1); +} + QTEST_MAIN(ArgParserTests) diff --git a/src/unittests/deskflow/ArgParserTests.h b/src/unittests/deskflow/ArgParserTests.h index 155255a9a..69c2544a0 100644 --- a/src/unittests/deskflow/ArgParserTests.h +++ b/src/unittests/deskflow/ArgParserTests.h @@ -35,6 +35,16 @@ private slots: void client_badArgs(); void deprecatedArg_crypoPass_true(); void deprecatedArg_crypoPass_false(); + void generic_logLevel(); + void generic_logFile(); + void generic_logFileWithSpace(); + void generic_foreground(); + void generic_daemon(); + void generic_name(); + void generic_noRestart(); + void generic_restart(); + void generic_unknown(); + void generic_noHook(); private: Arch m_arch;