summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Akulich <akulichalexander@gmail.com>2018-08-25 18:23:04 +0300
committerAlexandr Akulich <akulichalexander@gmail.com>2018-09-28 22:01:05 +0000
commit94884246d445fb3e702ac8c4d4bb432768e61b61 (patch)
treeb92b57249e605443dd281af7bdb9b13e16f14f2a
parentef4ba0285f9c5dd5ee2dca1e0cefee45eba3477c (diff)
QCommandLineParser: Ensure that an option text ends with a newline
Before this change we inserted newline only if an option has a description and ended up with an arbitrary long line with all options. [ChangeLog][QtCore][QCommandLineParser] Fixed a bug that caused the help output to show two options or more in the same line if the options didn't have a description. Task-number: QTBUG-70174 Change-Id: Id54b9ae13ee596869e4dc14e09301aea19eed2f8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/tools/qcommandlineparser.cpp6
-rw-r--r--tests/auto/corelib/tools/qcommandlineparser/testhelper/qcommandlineparser_test_helper.cpp1
-rw-r--r--tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp1
3 files changed, 7 insertions, 1 deletions
diff --git a/src/corelib/tools/qcommandlineparser.cpp b/src/corelib/tools/qcommandlineparser.cpp
index 4c55880915..279d6565da 100644
--- a/src/corelib/tools/qcommandlineparser.cpp
+++ b/src/corelib/tools/qcommandlineparser.cpp
@@ -1049,7 +1049,11 @@ QString QCommandLineParser::helpText() const
static QString wrapText(const QString &names, int longestOptionNameString, const QString &description)
{
const QLatin1Char nl('\n');
- QString text = QLatin1String(" ") + names.leftJustified(longestOptionNameString) + QLatin1Char(' ');
+ const QLatin1String indentation(" ");
+ if (description.isEmpty())
+ return indentation + names + nl;
+
+ QString text = indentation + names.leftJustified(longestOptionNameString) + QLatin1Char(' ');
const int indent = text.length();
int lineStart = 0;
int lastBreakable = -1;
diff --git a/tests/auto/corelib/tools/qcommandlineparser/testhelper/qcommandlineparser_test_helper.cpp b/tests/auto/corelib/tools/qcommandlineparser/testhelper/qcommandlineparser_test_helper.cpp
index 30c7b1bf69..b9bcecd607 100644
--- a/tests/auto/corelib/tools/qcommandlineparser/testhelper/qcommandlineparser_test_helper.cpp
+++ b/tests/auto/corelib/tools/qcommandlineparser/testhelper/qcommandlineparser_test_helper.cpp
@@ -53,6 +53,7 @@ int main(int argc, char *argv[])
parser.addOption(QCommandLineOption("load", "Load file from URL.", "url"));
parser.addOption(QCommandLineOption(QStringList() << "o" << "output", "Set output file.", "file"));
parser.addOption(QCommandLineOption("D", "Define macro.", "key=value"));
+ parser.addOption(QCommandLineOption("long-option"));
// An option with a longer description, to test wrapping
QCommandLineOption noImplicitIncludesOption(QStringList() << QStringLiteral("n") << QStringLiteral("no-implicit-includes"));
diff --git a/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp b/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
index 527e07593c..4b362a9825 100644
--- a/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
+++ b/tests/auto/corelib/tools/qcommandlineparser/tst_qcommandlineparser.cpp
@@ -536,6 +536,7 @@ static const char expectedOptionsHelp[] =
" --load <url> Load file from URL.\n"
" -o, --output <file> Set output file.\n"
" -D <key=value> Define macro.\n"
+ " --long-option\n"
" -n, --no-implicit-includes Disable magic generation of implicit\n"
" #include-directives.\n"
" --newline This is an option with a rather long\n"