summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/componentchecker.cpp8
-rw-r--r--tests/auto/installer/solver/tst_solver.cpp25
2 files changed, 30 insertions, 3 deletions
diff --git a/src/libs/installer/componentchecker.cpp b/src/libs/installer/componentchecker.cpp
index 381fcf9c1..6b2487668 100644
--- a/src/libs/installer/componentchecker.cpp
+++ b/src/libs/installer/componentchecker.cpp
@@ -42,6 +42,7 @@ namespace QInstaller {
QStringList ComponentChecker::checkComponent(Component *component)
{
+ PackageManagerCore *core = component->packageManagerCore();
QStringList checkResult;
const bool defaultPropertyScriptValue = component->variables().value(scDefault).compare(scScript, Qt::CaseInsensitive) == 0;
@@ -62,6 +63,11 @@ QStringList ComponentChecker::checkComponent(Component *component)
"with \"AutoDependOn\" list. This combination of states may not work properly.")
.arg(component->name());
}
+ if (!core->dependees(component).isEmpty()) {
+ checkResult << QString::fromLatin1("Other components depend on auto dependent "
+ "component %1. This may not work properly.")
+ .arg(component->name());
+ }
}
if (component->packageManagerCore()->isInstaller()) {
if (component->isTristate()) {
@@ -105,7 +111,6 @@ QStringList ComponentChecker::checkComponent(Component *component)
.arg(component->name());
}
- PackageManagerCore *core = component->packageManagerCore();
if (!core->dependees(component).isEmpty()) {
checkResult << QString::fromLatin1("Other components depend on component %1 "
"which has children components. This will not work properly.")
@@ -113,6 +118,7 @@ QStringList ComponentChecker::checkComponent(Component *component)
}
}
}
+
return checkResult;
}
diff --git a/tests/auto/installer/solver/tst_solver.cpp b/tests/auto/installer/solver/tst_solver.cpp
index b661d3158..460ed4323 100644
--- a/tests/auto/installer/solver/tst_solver.cpp
+++ b/tests/auto/installer/solver/tst_solver.cpp
@@ -269,15 +269,36 @@ private slots:
componentB->setValue(QLatin1String("AutoDependOn"), QLatin1String("A"));
componentB->setValue(QLatin1String("Default"), QLatin1String("true"));
+ core->appendRootComponent(componentA);
+ core->appendRootComponent(componentB);
ComponentToStringList result;
result[componentB].append(QLatin1String("Component B specifies \"Default\" property "
- "together with \"AutoDependOn\" list. This combination of states "
- "may not work properly."));
+ "together with \"AutoDependOn\" list. This combination of states "
+ "may not work properly."));
QTest::newRow("AutoDepend and default")
<< (QList<Component *>() << componentA << componentB)
<< result;
+
+ NamedComponent *componentC = new NamedComponent(core, QLatin1String("C"));
+ NamedComponent *componentD = new NamedComponent(core, QLatin1String("D"));
+ NamedComponent *componentE = new NamedComponent(core, QLatin1String("E"));
+
+ componentD->setValue(QLatin1String("AutoDependOn"), QLatin1String("C"));
+ componentE->addDependency(QLatin1String("D"));
+ core->appendRootComponent(componentC);
+ core->appendRootComponent(componentD);
+ core->appendRootComponent(componentE);
+
+ result.clear();
+ result[componentD].append(QLatin1String("Other components depend on auto dependent "
+ "component D. This may not work properly."));
+
+ QTest::newRow("AutoDepend and dependency")
+ << (QList<Component *>() << componentC << componentD << componentE)
+ << result;
+
}
void checkComponent()