diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2012-11-30 12:33:23 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2012-12-05 11:53:34 +0100 |
commit | aba4f72df71a406c04a065ceaf2f3d2ea8b9edbb (patch) | |
tree | f00cc81119f66c6717cd277058b9558342fda98e /tests/auto/tools | |
parent | a42474e5ce1c06ef2bfdc5d0ce8098b8e43be22b (diff) |
Redo help output.
It's not feasible to document all commands and options
correctly in one help screen. Instead, we now have a main
help screen listing all possible commands and one dedicated
help screen for every command.
The more thorough and precise help output goes hand in hand
with fixing a number of parsing bugs and underspecified
commands. This, in turn, necessitated a refactoring of
the command line parser, which is now much more modular.
Change-Id: Id18f8c609d7d4a797a06598c3df4bc9ba02c9615
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'tests/auto/tools')
-rw-r--r-- | tests/auto/tools/tools.pro | 6 | ||||
-rw-r--r-- | tests/auto/tools/tst_tools.cpp | 43 |
2 files changed, 27 insertions, 22 deletions
diff --git a/tests/auto/tools/tools.pro b/tests/auto/tools/tools.pro index 4a96630f5..e75eadca1 100644 --- a/tests/auto/tools/tools.pro +++ b/tests/auto/tools/tools.pro @@ -9,8 +9,6 @@ CONFIG += depend_includepath testcase include(../../../src/lib/use.pri) include(../../../qbs_version.pri) +include(../../../src/app/qbs/parser/parser.pri) -HEADERS += \ - ../../../src/app/shared/commandlineparser.h -SOURCES += tst_tools.cpp \ - ../../../src/app/shared/commandlineparser.cpp +SOURCES += tst_tools.cpp diff --git a/tests/auto/tools/tst_tools.cpp b/tests/auto/tools/tst_tools.cpp index bbee0b791..cb5a04e14 100644 --- a/tests/auto/tools/tst_tools.cpp +++ b/tests/auto/tools/tst_tools.cpp @@ -27,11 +27,13 @@ ** ****************************************************************************/ -#include <app/shared/commandlineparser.h> +#include <app/qbs/parser/commandlineparser.h> #include <logging/logger.h> +#include <tools/buildoptions.h> #include <tools/fileinfo.h> #include <tools/hostosinfo.h> #include <QDir> +#include <QTemporaryFile> #include <QtTest> using namespace qbs; @@ -42,40 +44,45 @@ class TestTools : public QObject private slots: void testValidCommandLine() { + QTemporaryFile projectFile; + QVERIFY(projectFile.open()); + const QStringList fileArgs = QStringList() << "-f" << projectFile.fileName(); QStringList args; args.append("-vvk"); args.append("-v"); args << "--products" << "blubb"; - args << "--changed-files" << "foo,bar"; - args << "-h"; + args << "--changed-files" << "foo,bar" << fileArgs; CommandLineParser parser; QVERIFY(parser.parseCommandLine(args)); QCOMPARE(Logger::instance().level(), LoggerTrace); - QCOMPARE(parser.command(), CommandLineParser::BuildCommand); + QCOMPARE(parser.command(), BuildCommandType); QCOMPARE(parser.products(), QStringList() << "blubb"); QCOMPARE(parser.buildOptions().changedFiles.count(), 2); QVERIFY(parser.buildOptions().keepGoing); - QVERIFY(parser.parseCommandLine(QStringList() << "-vvvqqqh")); + QVERIFY(parser.parseCommandLine(QStringList() << "-vvvqqq" << fileArgs)); QCOMPARE(Logger::instance().level(), Logger::defaultLevel()); - QVERIFY(parser.parseCommandLine(QStringList() << "-vvqqqh")); + QVERIFY(parser.parseCommandLine(QStringList() << "-vvqqq" << fileArgs)); QCOMPARE(Logger::instance().level(), LoggerWarning); - QVERIFY(parser.parseCommandLine(QStringList() << "-vvvqqh")); + QVERIFY(parser.parseCommandLine(QStringList() << "-vvvqq" << fileArgs)); QCOMPARE(Logger::instance().level(), LoggerDebug); - QVERIFY(parser.parseCommandLine(QStringList() << "--log-level" << "trace" << "-h")); + QVERIFY(parser.parseCommandLine(QStringList() << "--log-level" << "trace" << fileArgs)); QCOMPARE(Logger::instance().level(), LoggerTrace); } void testInvalidCommandLine() { + QTemporaryFile projectFile; + QVERIFY(projectFile.open()); + const QStringList fileArgs = QStringList() << "-f" << projectFile.fileName(); CommandLineParser parser; - QVERIFY(!parser.parseCommandLine(QStringList() << "-x")); // Unknown short option. - QVERIFY(!parser.parseCommandLine(QStringList() << "--xyz")); // Unknown long option. - QVERIFY(!parser.parseCommandLine(QStringList() << "-vjv")); // Invalid position. - QVERIFY(!parser.parseCommandLine(QStringList() << "-j")); // Missing argument. - QVERIFY(!parser.parseCommandLine(QStringList() << "-j" << "0")); // Wrong argument. - QVERIFY(!parser.parseCommandLine(QStringList() << "--products")); // Missing argument. - QVERIFY(!parser.parseCommandLine(QStringList() << "--changed-files" << ",")); // Wrong argument. - QVERIFY(!parser.parseCommandLine(QStringList() << "--log-level" << "blubb")); // Wrong argument. + QVERIFY(!parser.parseCommandLine(QStringList() << "-x" << fileArgs)); // Unknown short option. + QVERIFY(!parser.parseCommandLine(QStringList() << "--xyz" << fileArgs)); // Unknown long option. + QVERIFY(!parser.parseCommandLine(QStringList() << "-vjv" << fileArgs)); // Invalid position. + QVERIFY(!parser.parseCommandLine(QStringList() << "-j" << fileArgs)); // Missing argument. + QVERIFY(!parser.parseCommandLine(QStringList() << "-j" << "0" << fileArgs)); // Wrong argument. + QVERIFY(!parser.parseCommandLine(QStringList() << "--products" << fileArgs)); // Missing argument. + QVERIFY(!parser.parseCommandLine(QStringList() << "--changed-files" << "," << fileArgs)); // Wrong argument. + QVERIFY(!parser.parseCommandLine(QStringList() << "--log-level" << "blubb" << fileArgs)); // Wrong argument. } void testFileInfo() @@ -108,10 +115,10 @@ private slots: const QStringList args(QLatin1String("-f")); QString projectFilePath = multiProjectsDir + QLatin1String("/project.qbs"); QVERIFY(parser.parseCommandLine(args + QStringList(projectFilePath))); - QCOMPARE(projectFilePath, parser.projectFileName()); + QCOMPARE(projectFilePath, parser.projectFilePath()); projectFilePath = oneProjectDir + QLatin1String("/project.qbs"); QVERIFY(parser.parseCommandLine(args + QStringList(oneProjectDir))); - QCOMPARE(projectFilePath, parser.projectFileName()); + QCOMPARE(projectFilePath, parser.projectFilePath()); QVERIFY(!parser.parseCommandLine(args + QStringList(noProjectsDir))); QVERIFY(!parser.parseCommandLine(args + QStringList(multiProjectsDir))); } |