diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-11-22 08:35:43 +0100 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-11-22 13:17:00 +0000 |
commit | 3e6c3d9fe7328e824fab14a201c6560cb8bda94f (patch) | |
tree | c7c3717d5699f8ce9cc9faccdefeb0bed2b44d9e /tests | |
parent | b1df55426a23b60da79316090ea07c8f1b56cc10 (diff) |
Utils: Add "addCommandLine..." functions
addCommandLineAsSingleArg allows to reliably create commandlines
like "bash -c 'echo ...'"
addCommandLineWithAnd combines two command lines
by adding '&&' in between
Change-Id: Ic5af34c90fd5271dced40ba1341a3df019ededb8
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/utils/CMakeLists.txt | 3 | ||||
-rw-r--r-- | tests/auto/utils/commandline/CMakeLists.txt | 4 | ||||
-rw-r--r-- | tests/auto/utils/commandline/commandline.qbs | 12 | ||||
-rw-r--r-- | tests/auto/utils/commandline/tst_commandline.cpp | 59 | ||||
-rw-r--r-- | tests/auto/utils/utils.qbs | 1 |
5 files changed, 78 insertions, 1 deletions
diff --git a/tests/auto/utils/CMakeLists.txt b/tests/auto/utils/CMakeLists.txt index c626b154de7..ee2f8e475a2 100644 --- a/tests/auto/utils/CMakeLists.txt +++ b/tests/auto/utils/CMakeLists.txt @@ -1,5 +1,6 @@ add_subdirectory(ansiescapecodehandler) add_subdirectory(asynctask) +add_subdirectory(commandline) add_subdirectory(deviceshell) add_subdirectory(fileutils) add_subdirectory(fsengine) @@ -10,6 +11,6 @@ add_subdirectory(persistentsettings) add_subdirectory(qtcprocess) add_subdirectory(settings) add_subdirectory(stringutils) -add_subdirectory(templateengine) add_subdirectory(tasktree) +add_subdirectory(templateengine) add_subdirectory(treemodel) diff --git a/tests/auto/utils/commandline/CMakeLists.txt b/tests/auto/utils/commandline/CMakeLists.txt new file mode 100644 index 00000000000..d215f5cdc6c --- /dev/null +++ b/tests/auto/utils/commandline/CMakeLists.txt @@ -0,0 +1,4 @@ +add_qtc_test(tst_utils_commandline + DEPENDS Utils app_version + SOURCES tst_commandline.cpp +) diff --git a/tests/auto/utils/commandline/commandline.qbs b/tests/auto/utils/commandline/commandline.qbs new file mode 100644 index 00000000000..4b3e337ce17 --- /dev/null +++ b/tests/auto/utils/commandline/commandline.qbs @@ -0,0 +1,12 @@ +Project { + QtcAutotest { + name: "CommandLine autotest" + + Depends { name: "Utils" } + Depends { name: "app_version_header" } + + files: [ + "tst_commandline.cpp", + ] + } +} diff --git a/tests/auto/utils/commandline/tst_commandline.cpp b/tests/auto/utils/commandline/tst_commandline.cpp new file mode 100644 index 00000000000..6fd65546cb2 --- /dev/null +++ b/tests/auto/utils/commandline/tst_commandline.cpp @@ -0,0 +1,59 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 + +#include <utils/commandline.h> + +#include <QObject> +#include <QtTest> + +using namespace Utils; + +class tst_CommandLine : public QObject +{ + Q_OBJECT +private: +private slots: + void initTestCase() {} + void cleanupTestCase() {} + + void testAnd() + { + CommandLine cmd("echo", {"foo"}); + CommandLine cmd2("echo", {"bar", "blizz"}); + + cmd.addCommandLineWithAnd(cmd2); + + QCOMPARE(cmd.toUserOutput(), QString("echo foo && echo bar blizz")); + } + + void testAndComplex() + { + CommandLine cmd("/tmp/space path/\"echo", {"foo", "long with space"}); + CommandLine cmd2("/tmp/space \"path/echo", {"bar\"", "blizz is 'great"}); + + cmd.addCommandLineWithAnd(cmd2); + + QCOMPARE(cmd.toUserOutput(), + QString("/tmp/space path/\"echo foo 'long with space' && '/tmp/space \"path/echo' " + "'bar\"' 'blizz is '\\''great'")); + } + + void testAndAdd() + { + CommandLine cmd("/tmp/space path/\"echo", {"foo", "long with space"}); + CommandLine cmd2("/tmp/space \"path/echo", {"bar\"", "blizz is 'great"}); + cmd.addCommandLineWithAnd(cmd2); + + CommandLine shell("bash", {"-c"}); + shell.addCommandLineAsSingleArg(cmd); + + QCOMPARE(shell.toUserOutput(), + "bash -c ''\\''/tmp/space path/\"echo'\\'' foo '\\''long with space'\\'' && " + "'\\''/tmp/space \"path/echo'\\'' '\\''bar\"'\\'' '\\''blizz is " + "'\\''\\'\\'''\\''great'\\'''"); + } +}; + +QTEST_GUILESS_MAIN(tst_CommandLine) + +#include "tst_commandline.moc" diff --git a/tests/auto/utils/utils.qbs b/tests/auto/utils/utils.qbs index a08e0167596..327d35d6072 100644 --- a/tests/auto/utils/utils.qbs +++ b/tests/auto/utils/utils.qbs @@ -5,6 +5,7 @@ Project { references: [ "ansiescapecodehandler/ansiescapecodehandler.qbs", "asynctask/asynctask.qbs", + "commandline/commandline.qbs", "deviceshell/deviceshell.qbs", "fileutils/fileutils.qbs", "fsengine/fsengine.qbs", |