aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2023-11-07 08:50:16 +0100
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2023-11-07 11:42:43 +0000
commite108726314855411816b3378c272de442a9768b9 (patch)
tree11c6e7b6030b628fbacb5093e49da2d657e034f9
parent1998ef19b311b3ab0d8c5e5febfd3be119e4696b (diff)
Terminal: Add auto test
Auto test macOS terminal script. Change-Id: Iaab9c31fa94cf16afc02e4e34978d5d10edf5c2d Reviewed-by: Cristian Adam <cristian.adam@qt.io>
-rw-r--r--tests/manual/CMakeLists.txt1
-rw-r--r--tests/manual/manual.qbs1
-rw-r--r--tests/manual/terminal/CMakeLists.txt4
-rw-r--r--tests/manual/terminal/terminal.qbs7
-rw-r--r--tests/manual/terminal/tst_terminal.cpp54
5 files changed, 67 insertions, 0 deletions
diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt
index de324714a2..1d145e1e8b 100644
--- a/tests/manual/CMakeLists.txt
+++ b/tests/manual/CMakeLists.txt
@@ -12,6 +12,7 @@ add_subdirectory(fakevim)
# add_subdirectory(genericproject)
add_subdirectory(pluginview)
add_subdirectory(proparser)
+add_subdirectory(terminal)
# add_subdirectory(qml)
# add_subdirectory(qt4projectmanager)
# add_subdirectory(search)
diff --git a/tests/manual/manual.qbs b/tests/manual/manual.qbs
index ba774823c1..25ed3b9e18 100644
--- a/tests/manual/manual.qbs
+++ b/tests/manual/manual.qbs
@@ -15,6 +15,7 @@ Project {
"subdirfilecontainer/subdirfilecontainer.qbs",
"tasking/demo/demo.qbs",
"tasking/imagescaling/imagescaling.qbs",
+ "terminal/terminal.qbs",
"widgets/widgets.qbs",
]
}
diff --git a/tests/manual/terminal/CMakeLists.txt b/tests/manual/terminal/CMakeLists.txt
new file mode 100644
index 0000000000..f4fff9d2c4
--- /dev/null
+++ b/tests/manual/terminal/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_qtc_test(tst_terminal
+ DEPENDS Utils
+ SOURCES tst_terminal.cpp
+)
diff --git a/tests/manual/terminal/terminal.qbs b/tests/manual/terminal/terminal.qbs
new file mode 100644
index 0000000000..4b7a408a1e
--- /dev/null
+++ b/tests/manual/terminal/terminal.qbs
@@ -0,0 +1,7 @@
+import qbs
+
+QtcAutotest {
+ name: "Terminal autotest"
+ Depends { name: "Utils" }
+ files: "tst_terminal.cpp"
+}
diff --git a/tests/manual/terminal/tst_terminal.cpp b/tests/manual/terminal/tst_terminal.cpp
new file mode 100644
index 0000000000..921fdbc577
--- /dev/null
+++ b/tests/manual/terminal/tst_terminal.cpp
@@ -0,0 +1,54 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include <utils/externalterminalprocessimpl.h>
+
+#include <QRandomGenerator>
+#include <QtTest>
+
+//TESTED_COMPONENT=src/utils/changeset
+
+class tst_Terminal : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void terminalApp()
+ {
+ if (!Utils::HostOsInfo::isMacHost())
+ QSKIP("This test is only for macOS");
+
+ int rnd = QRandomGenerator::global()->generate();
+ QString testCode = R"(
+set theFile to POSIX file "/tmp/testoutput.txt"
+set theFile to theFile as string
+set theOpenedFile to open for access file theFile with write permission
+set eof of theOpenedFile to 0
+write "%1" to theOpenedFile starting at eof
+close access theOpenedFile
+ )";
+ QString terminalScript = Utils::ExternalTerminalProcessImpl::openTerminalScriptAttached();
+ terminalScript = terminalScript.arg("sleep 1") + "\n" + testCode.arg(rnd);
+
+ QProcess process;
+ process.setProcessChannelMode(QProcess::ProcessChannelMode::MergedChannels);
+ process.setProgram("osascript");
+ process.setArguments({"-e", terminalScript});
+
+ process.start();
+
+ QTRY_VERIFY(process.state() == QProcess::NotRunning);
+ const auto output = process.readAll();
+ if (!output.isEmpty())
+ qDebug() << "Output:" << output;
+ QVERIFY(process.exitCode() == 0);
+
+ QFile testOutputFile("/tmp/testoutput.txt");
+ QVERIFY(testOutputFile.open(QIODevice::ReadOnly));
+ QVERIFY(testOutputFile.readAll() == QByteArray::number(rnd));
+ }
+};
+
+QTEST_GUILESS_MAIN(tst_Terminal)
+
+#include "tst_terminal.moc"