McuSupport: Fix invalid regular expression is considered valid

If a match was empty it was the same case as if no regular expression was
set. Adding a new case that is triggered when there is a version detector
but it returns an empty version string.

Change-Id: I26c2f803b2c6a95b85d6b781085bfa9cd4b51975
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Rainer Keller
2022-10-19 11:15:16 +02:00
committed by Rainer Keller
parent 2c6235998d
commit 6fae98477b
2 changed files with 20 additions and 7 deletions

View File

@@ -22,6 +22,7 @@ public:
InvalidPath,
ValidPathInvalidPackage,
ValidPackageMismatchedVersion,
ValidPackageVersionNotDetected,
ValidPackage
};

View File

@@ -132,14 +132,22 @@ void McuPackage::updateStatus()
m_detectedVersion = validPath && validPackage && m_versionDetector
? m_versionDetector->parseVersion(basePath())
: QString();
const bool validVersion = m_detectedVersion.isEmpty() || m_versions.isEmpty()
|| m_versions.contains(m_detectedVersion);
m_status = validPath ? (validPackage ? (validVersion ? Status::ValidPackage
: Status::ValidPackageMismatchedVersion)
: Status::ValidPathInvalidPackage)
: m_path.isEmpty() ? Status::EmptyPath
: Status::InvalidPath;
const bool validVersion = m_versions.isEmpty() || m_versions.contains(m_detectedVersion);
if (m_path.isEmpty()) {
m_status = Status::EmptyPath;
} else if (!validPath) {
m_status = Status::InvalidPath;
} else if (!validPackage) {
m_status = Status::ValidPathInvalidPackage;
} else if (m_versionDetector && m_detectedVersion.isEmpty()) {
m_status = Status::ValidPackageVersionNotDetected;
} else if (!validVersion) {
m_status = Status::ValidPackageMismatchedVersion;
} else {
m_status = Status::ValidPackage;
}
emit statusChanged();
}
@@ -161,6 +169,7 @@ void McuPackage::updateStatusUi()
m_infoLabel->setType(InfoLabel::Ok);
break;
case Status::ValidPackageMismatchedVersion:
case Status::ValidPackageVersionNotDetected:
m_infoLabel->setType(InfoLabel::Warning);
break;
default:
@@ -215,6 +224,9 @@ QString McuPackage::statusText() const
? tr("Path is empty.")
: tr("Path is empty, %1 not found.").arg(displayRequiredPath);
break;
case Status::ValidPackageVersionNotDetected:
response = tr("Path %1 exists, but version could not be detected.").arg(displayPackagePath);
break;
}
return response;
}