aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2022-11-22 08:35:43 +0100
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2022-11-22 13:17:00 +0000
commit3e6c3d9fe7328e824fab14a201c6560cb8bda94f (patch)
treec7c3717d5699f8ce9cc9faccdefeb0bed2b44d9e /tests
parentb1df55426a23b60da79316090ea07c8f1b56cc10 (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.txt3
-rw-r--r--tests/auto/utils/commandline/CMakeLists.txt4
-rw-r--r--tests/auto/utils/commandline/commandline.qbs12
-rw-r--r--tests/auto/utils/commandline/tst_commandline.cpp59
-rw-r--r--tests/auto/utils/utils.qbs1
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",