File indexing completed on 2024-04-28 05:50:35
0001 /* 0002 SPDX-FileCopyrightText: 2008 Robert Knight <robertknight@gmail.com> 0003 SPDX-FileCopyrightText: 2013 Kurt Hindenburg <kurt.hindenburg@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 // Own 0009 #include "ShellCommandTest.h" 0010 0011 // Qt 0012 #include <QStringList> 0013 0014 // KDE 0015 #include <QTest> 0016 0017 using namespace Konsole; 0018 0019 void ShellCommandTest::init() 0020 { 0021 } 0022 0023 void ShellCommandTest::cleanup() 0024 { 0025 } 0026 0027 void ShellCommandTest::testConstructorWithOneArguemnt() 0028 { 0029 const QString fullCommand(QStringLiteral("sudo apt-get update")); 0030 ShellCommand shellCommand(fullCommand); 0031 QCOMPARE(shellCommand.command(), QStringLiteral("sudo")); 0032 QCOMPARE(shellCommand.fullCommand(), fullCommand); 0033 } 0034 0035 void ShellCommandTest::testConstructorWithTwoArguments() 0036 { 0037 const QString command(QStringLiteral("wc")); 0038 QStringList arguments; 0039 arguments << QStringLiteral("wc") << QStringLiteral("-l") << QStringLiteral("*.cpp"); 0040 0041 ShellCommand shellCommand(command, arguments); 0042 QCOMPARE(shellCommand.command(), command); 0043 QCOMPARE(shellCommand.arguments(), arguments); 0044 QCOMPARE(shellCommand.fullCommand(), arguments.join(QLatin1String(" "))); 0045 } 0046 0047 void ShellCommandTest::testExpandEnvironmentVariable() 0048 { 0049 QString text = QStringLiteral("PATH=$PATH:~/bin"); 0050 const QString env = QStringLiteral("PATH"); 0051 const QString value = QStringLiteral("/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin"); 0052 0053 qputenv(env.toLocal8Bit().constData(), value.toLocal8Bit()); 0054 const QString result = ShellCommand::expand(text); 0055 const QString expected = text.replace(QLatin1Char('$') + env, value); 0056 QCOMPARE(result, expected); 0057 0058 text = QStringLiteral("PATH=$PATH:\\$ESCAPED:~/bin"); 0059 qputenv(env.toLocal8Bit().constData(), value.toLocal8Bit()); 0060 const QString result2 = ShellCommand::expand(text); 0061 const QString expected2 = text.replace(QLatin1Char('$') + env, value); 0062 QCOMPARE(result2, expected2); 0063 0064 text = QStringLiteral("$ABC \"$ABC\" '$ABC'"); 0065 qputenv("ABC", "123"); 0066 const QString result3 = ShellCommand::expand(text); 0067 const QString expected3 = QStringLiteral("123 \"123\" '$ABC'"); 0068 QEXPECT_FAIL("", "Bug 361835", Continue); 0069 QCOMPARE(result3, expected3); 0070 } 0071 0072 void ShellCommandTest::testValidEnvCharacter() 0073 { 0074 QChar validChar(QLatin1Char('A')); 0075 const bool result = ShellCommand::isValidEnvCharacter(validChar); 0076 QCOMPARE(result, true); 0077 } 0078 0079 void ShellCommandTest::testValidLeadingEnvCharacter() 0080 { 0081 QChar invalidChar(QLatin1Char('9')); 0082 const bool result = ShellCommand::isValidLeadingEnvCharacter(invalidChar); 0083 QCOMPARE(result, false); 0084 } 0085 0086 void ShellCommandTest::testArgumentsWithSpaces() 0087 { 0088 const QString command(QStringLiteral("dir")); 0089 QStringList arguments; 0090 arguments << QStringLiteral("dir") << QStringLiteral("c:\\Program Files") << QStringLiteral("System") << QStringLiteral("*.ini"); 0091 const QString expected_arg(QStringLiteral("dir \"c:\\Program Files\" System *.ini")); 0092 0093 ShellCommand shellCommand(command, arguments); 0094 QCOMPARE(shellCommand.command(), command); 0095 QCOMPARE(shellCommand.arguments(), arguments); 0096 QCOMPARE(shellCommand.fullCommand(), expected_arg); 0097 } 0098 0099 void ShellCommandTest::testEmptyCommand() 0100 { 0101 const QString command = QString(); 0102 ShellCommand shellCommand(command); 0103 QCOMPARE(shellCommand.command(), QString()); 0104 QCOMPARE(shellCommand.arguments(), QStringList()); 0105 QCOMPARE(shellCommand.fullCommand(), QString()); 0106 } 0107 0108 QTEST_GUILESS_MAIN(ShellCommandTest) 0109 0110 #include "moc_ShellCommandTest.cpp"