diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-15 13:40:58 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-16 18:02:00 +0200 |
commit | 53a95b6f16788c6c248bb695b9ce9ad5e3a031ab (patch) | |
tree | 42bcb4bbe1ec84e6836fa8d61fd94abb8a7c26f0 | |
parent | 68db620a139f7dde967750f577924696405c8104 (diff) |
Add missing metatype registration.
The code path where this is relevant has apparently never been taken, so
add an autotest as well (and fix the wording of the error message).
Change-Id: I314f1cb888264d30920a58f4e9cbbbf01fbcc4e6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/lib/corelib/api/jobs.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/api/project.cpp | 1 | ||||
-rw-r--r-- | tests/auto/api/testdata/project-locking/project.qbs | 4 | ||||
-rw-r--r-- | tests/auto/api/tst_api.cpp | 22 | ||||
-rw-r--r-- | tests/auto/api/tst_api.h | 1 |
5 files changed, 29 insertions, 1 deletions
diff --git a/src/lib/corelib/api/jobs.cpp b/src/lib/corelib/api/jobs.cpp index 035a0bf8f..6b8cf702e 100644 --- a/src/lib/corelib/api/jobs.cpp +++ b/src/lib/corelib/api/jobs.cpp @@ -120,7 +120,7 @@ bool AbstractJob::lockProject(const TopLevelProjectPtr &project) // The API is not thread-safe, so we don't need a mutex here, as the API requests come in // synchronously. if (project->locked) { - internalJob()->setError(tr("Cannot start a job while another one is in process.")); + internalJob()->setError(tr("Cannot start a job while another one is in progress.")); QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection, Q_ARG(bool, false), Q_ARG(qbs::AbstractJob *, this)); return false; diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp index 1aa101717..b8706a8d6 100644 --- a/src/lib/corelib/api/project.cpp +++ b/src/lib/corelib/api/project.cpp @@ -91,6 +91,7 @@ static void loadPlugins(const QStringList &_pluginPaths, const Logger &logger) qRegisterMetaType<ErrorInfo>("qbs::ErrorInfo"); qRegisterMetaType<ProcessResult>("qbs::ProcessResult"); qRegisterMetaType<InternalJob *>("Internal::InternalJob *"); + qRegisterMetaType<AbstractJob *>("qbs::AbstractJob *"); pluginsLoaded = true; } diff --git a/tests/auto/api/testdata/project-locking/project.qbs b/tests/auto/api/testdata/project-locking/project.qbs new file mode 100644 index 000000000..e08b008bc --- /dev/null +++ b/tests/auto/api/testdata/project-locking/project.qbs @@ -0,0 +1,4 @@ +import qbs + +Project { +} diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp index 53674306a..ef3cf9801 100644 --- a/tests/auto/api/tst_api.cpp +++ b/tests/auto/api/tst_api.cpp @@ -730,6 +730,28 @@ void TestApi::nonexistingProjectPropertyFromCommandLine() qPrintable(job->error().toString())); } +void TestApi::projectLocking() +{ + qbs::SetupProjectParameters setupParams = defaultSetupParameters(); + const QString projectDirPath = QDir::cleanPath(m_workingDataDir + "/project-locking"); + setupParams.setProjectFilePath(projectDirPath + "/project.qbs"); + QScopedPointer<qbs::SetupProjectJob> setupJob(qbs::Project().setupProject(setupParams, + m_logSink, 0)); + waitForFinished(setupJob.data()); + QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); + qbs::Project project = setupJob->project(); + setupJob.reset(project.setupProject(setupParams, m_logSink, 0)); + QScopedPointer<qbs::SetupProjectJob> setupJob2(project.setupProject(setupParams, + m_logSink, 0)); + waitForFinished(setupJob2.data()); + QVERIFY(setupJob2->error().hasError()); + QVERIFY2(setupJob2->error().toString() + .contains("Cannot start a job while another one is in progress."), + qPrintable(setupJob2->error().toString())); + waitForFinished(setupJob.data()); + QVERIFY2(!setupJob->error().hasError(), qPrintable(setupJob->error().toString())); +} + qbs::SetupProjectParameters TestApi::defaultSetupParameters() const { qbs::SetupProjectParameters setupParams; diff --git a/tests/auto/api/tst_api.h b/tests/auto/api/tst_api.h index 5e75218ba..756eb1ed3 100644 --- a/tests/auto/api/tst_api.h +++ b/tests/auto/api/tst_api.h @@ -61,6 +61,7 @@ private slots: void multiArch(); void nonexistingProjectPropertyFromProduct(); void nonexistingProjectPropertyFromCommandLine(); + void projectLocking(); void references(); void sourceFileInBuildDir(); |