aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/tools
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2012-11-30 12:33:23 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2012-12-05 11:53:34 +0100
commitaba4f72df71a406c04a065ceaf2f3d2ea8b9edbb (patch)
treef00cc81119f66c6717cd277058b9558342fda98e /tests/auto/tools
parenta42474e5ce1c06ef2bfdc5d0ce8098b8e43be22b (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.pro6
-rw-r--r--tests/auto/tools/tst_tools.cpp43
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)));
}