diff options
| author | Ismael Asensio <[email protected]> | 2020-07-04 16:23:24 +0200 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2020-07-05 17:15:31 +0000 |
| commit | ee97db4dfc10e87f637d8387fb3f4d3590d95697 (patch) | |
| tree | 42987295290e46b280801392f1d85e69897c5135 /src/tests | |
| parent | ec03435022efa72a428a43eb106eaf31f503a9e6 (diff) | |
[search] Fix corner cases when using quotes in filenames
The `filename` term in a search query is enclosed into quotes.
As the user can have additional quotes in the search term, there were several
corner cases where the parsing would fail to correctly split the terms
New test cases have been added to cover this possibility
Previous tests still passes to avoid regressions
BEFORE:
```
(filename/quoted) Compared values are not the same
Actual (query.text()): "xyz\"\""
Expected (expectedText): "\"abc xyz\""
(filename/mixed) Compared values are not the same
Actual (query.text()): "xyz\" tuv\""
Expected (expectedText): "\"abc xyz\" tuv"
(content+filename/quoted) Compared values are not the same
Actual (query.text()): "abc xyz xyz\"\""
Expected (expectedText): "abc xyz filename:\"\"abc xyz\"\""
```
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/dolphinquerytest.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/tests/dolphinquerytest.cpp b/src/tests/dolphinquerytest.cpp index a0774e88c..25bd26b81 100644 --- a/src/tests/dolphinquerytest.cpp +++ b/src/tests/dolphinquerytest.cpp @@ -72,8 +72,13 @@ void DolphinSearchBoxTest::testBalooSearchParsing_data() const QString text = QStringLiteral("abc"); const QString textS = QStringLiteral("abc xyz"); + const QString textQ = QStringLiteral("\"abc xyz\""); + const QString textM = QStringLiteral("\"abc xyz\" tuv"); + const QString filename = QStringLiteral("filename:\"%1\"").arg(text); const QString filenameS = QStringLiteral("filename:\"%1\"").arg(textS); + const QString filenameQ = QStringLiteral("filename:\"%1\"").arg(textQ); + const QString filenameM = QStringLiteral("filename:\"%1\"").arg(textM); const QString rating = QStringLiteral("rating>=2"); const QString modified = QStringLiteral("modified>=2019-08-07"); @@ -85,6 +90,7 @@ void DolphinSearchBoxTest::testBalooSearchParsing_data() // Test for "Content" QTest::newRow("content") << balooQueryUrl(text) << text << QStringList() << true << false; QTest::newRow("content/space") << balooQueryUrl(textS) << textS << QStringList() << true << false; + QTest::newRow("content/quoted") << balooQueryUrl(textQ) << textS << QStringList() << true << false; QTest::newRow("content/empty") << balooQueryUrl("") << "" << QStringList() << false << false; QTest::newRow("content/single_quote") << balooQueryUrl("\"") << "\"" << QStringList() << true << false; QTest::newRow("content/double_quote") << balooQueryUrl("\"\"") << "" << QStringList() << false << false; @@ -92,6 +98,8 @@ void DolphinSearchBoxTest::testBalooSearchParsing_data() // Test for "FileName" QTest::newRow("filename") << balooQueryUrl(filename) << text << QStringList() << false << true; QTest::newRow("filename/space") << balooQueryUrl(filenameS) << textS << QStringList() << false << true; + QTest::newRow("filename/quoted") << balooQueryUrl(filenameQ) << textQ << QStringList() << false << true; + QTest::newRow("filename/mixed") << balooQueryUrl(filenameM) << textM << QStringList() << false << true; QTest::newRow("filename/empty") << balooQueryUrl("filename:") << "" << QStringList() << false << false; QTest::newRow("filename/single_quote") << balooQueryUrl("filename:\"") << "\"" << QStringList() << false << true; QTest::newRow("filename/double_quote") << balooQueryUrl("filename:\"\"") << "" << QStringList() << false << false; @@ -101,6 +109,10 @@ void DolphinSearchBoxTest::testBalooSearchParsing_data() << balooQueryUrl(text + " " + filename) << text + " " + filename << QStringList() << true << true; + QTest::newRow("content+filename/quoted") + << balooQueryUrl(textQ + " " + filenameQ) + << textS + " " + filenameQ << QStringList() << true << true; + // Test for rating QTest::newRow("rating") << balooQueryUrl(rating) << "" << QStringList({rating}) << false << false; QTest::newRow("rating+content") << balooQueryUrl(rating + " " + text) << text << QStringList({rating}) << true << false; |
