diff --git a/src/plugins/android/androidplugin.h b/src/plugins/android/androidplugin.h index 45db6ed2372..d90449c3926 100644 --- a/src/plugins/android/androidplugin.h +++ b/src/plugins/android/androidplugin.h @@ -43,6 +43,12 @@ class AndroidPlugin final : public ExtensionSystem::IPlugin void askUserAboutAndroidSetup(); class AndroidPluginPrivate *d = nullptr; + +#ifdef WITH_TESTS +private slots: + void testAndroidSdkManagerProgressParser_data(); + void testAndroidSdkManagerProgressParser(); +#endif // WITH_TESTS }; } // namespace Internal diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp index 71629c3067b..d78fc7fe9ee 100644 --- a/src/plugins/android/androidsdkmanager.cpp +++ b/src/plugins/android/androidsdkmanager.cpp @@ -41,6 +41,11 @@ #include #include +#ifdef WITH_TESTS +# include +# include "androidplugin.h" +#endif // WITH_TESTS + namespace { static Q_LOGGING_CATEGORY(sdkManagerLog, "qtc.android.sdkManager", QtWarningMsg) } @@ -1152,5 +1157,54 @@ void AndroidSdkManagerPrivate::clearPackages() m_allPackages.clear(); } +#ifdef WITH_TESTS +void AndroidPlugin::testAndroidSdkManagerProgressParser_data() +{ + QTest::addColumn("output"); + QTest::addColumn("progress"); + QTest::addColumn("foundAssertion"); + + // Output of "sdkmanager --licenses", Android SDK Tools version 4.0 + QTest::newRow("Loading local repository") + << "Loading local repository... \r" + << -1 + << false; + + QTest::newRow("Fetch progress (single line)") + << "[============= ] 34% Fetch remote repository... \r" + << 34 + << false; + + QTest::newRow("Fetch progress (multi line)") + << "[============================= ] 73% Fetch remote repository... \r" + "[============================= ] 75% Fetch remote repository... \r" + << 75 + << false; + + QTest::newRow("Some SDK package licenses not accepted") + << "7 of 7 SDK package licenses not accepted.\n" + << -1 + << false; + + QTest::newRow("Unaccepted licenses assertion") + << "\nReview licenses that have not been accepted (y/N)? " + << -1 + << true; +} + +void AndroidPlugin::testAndroidSdkManagerProgressParser() +{ + QFETCH(QString, output); + QFETCH(int, progress); + QFETCH(bool, foundAssertion); + + bool actualFoundAssertion = false; + const int actualProgress = parseProgress(output, actualFoundAssertion); + + QCOMPARE(progress, actualProgress); + QCOMPARE(foundAssertion, actualFoundAssertion); +} +#endif // WITH_TESTS + } // namespace Internal } // namespace Android