#include #include "ShellEscape.h" class ShellEscapeTest : public QObject { Q_OBJECT private slots: void plainPathUntouched(); void spacesAndQuotesEscaped(); void backslashEscapedOnce(); void everyGhosttyCharacterEscaped(); void emptyStaysEmpty(); }; void ShellEscapeTest::plainPathUntouched() // NOLINT(readability-convert-member-functions-to-static) { QCOMPARE(shellEscapePath(QStringLiteral("/Users/me/img.png")), QStringLiteral("/Users/me/img.png")); } void ShellEscapeTest::spacesAndQuotesEscaped() // NOLINT(readability-convert-member-functions-to-static) { QCOMPARE(shellEscapePath(QStringLiteral("/Users/me/My Shot.png")), QStringLiteral("/Users/me/My\\ Shot.png")); QCOMPARE(shellEscapePath(QStringLiteral("it's #1!")), QStringLiteral("it\\'s\\ \\#1\\!")); } void ShellEscapeTest::backslashEscapedOnce() // NOLINT(readability-convert-member-functions-to-static) { QCOMPARE(shellEscapePath(QStringLiteral("a\\b")), QStringLiteral("a\\\\b")); } void ShellEscapeTest::everyGhosttyCharacterEscaped() // NOLINT(readability-convert-member-functions-to-static) { const QString set = QStringLiteral("\\ ()[]{}<>\"'`!#$&;|*?\t"); for (const QChar ch : set) { QCOMPARE(shellEscapePath(QString(ch)), QStringLiteral("\\") + ch); } } void ShellEscapeTest::emptyStaysEmpty() // NOLINT(readability-convert-member-functions-to-static) { QCOMPARE(shellEscapePath(QString()), QString()); } QTEST_MAIN(ShellEscapeTest) #include "tst_shellescape.moc"