зеркало из https://github.com/AvaloniaUI/angle.git
Fix non-bot mode sharding on Android and disable elsewhere.
There is no need to apply sharding internally on Android, since it is done on the host, except when listing tests. And on other platforms sharding in non-bot mode is not useful. Patch authored by Yuly Novikov (ynovikov@chromium.org) Bug: angleproject:5417 Change-Id: Iddc0e1a38fb514617dce527acc99d0dce85ca177 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3399250 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
This commit is contained in:
Родитель
fa3241b706
Коммит
fdadc420a2
|
@ -964,6 +964,17 @@ void GTestListTests(const std::map<TestIdentifier, TestResult> &resultsMap)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// On Android, batching is done on the host, i.e. externally.
|
||||
// TestSuite executes on the device and should just passthrough all args to GTest.
|
||||
bool UsesExternalBatching()
|
||||
{
|
||||
#if defined(ANGLE_PLATFORM_ANDROID)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
} // namespace
|
||||
|
||||
// static
|
||||
|
@ -1095,6 +1106,12 @@ TestSuite::TestSuite(int *argc, char **argv)
|
|||
++argIndex;
|
||||
}
|
||||
|
||||
if (UsesExternalBatching() && mBotMode)
|
||||
{
|
||||
printf("Bot mode is mutually exclusive with external batching.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
mTestResults.currentTestTimeout = mTestTimeout;
|
||||
|
||||
#if defined(ANGLE_PLATFORM_ANDROID)
|
||||
|
@ -1241,28 +1258,19 @@ TestSuite::TestSuite(int *argc, char **argv)
|
|||
|
||||
// If there's only one shard, we can use the testSet as defined above.
|
||||
if (mShardCount > 1)
|
||||
{
|
||||
if (!mBotMode && !UsesExternalBatching())
|
||||
{
|
||||
printf("Sharding is only supported in bot mode or external batching.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
// With external batching, we must use exactly the testSet as defined externally.
|
||||
// But when listing tests, we do need to apply sharding ourselves,
|
||||
// since we use our own implementation for listing tests and not GTest directly.
|
||||
if (!UsesExternalBatching() || mGTestListTests || mListTests)
|
||||
{
|
||||
testSet = GetShardTests(testSet, mShardIndex, mShardCount, &mTestFileLines,
|
||||
alsoRunDisabledTests);
|
||||
|
||||
if (!mBotMode)
|
||||
{
|
||||
mFilterString = GetTestFilter(testSet);
|
||||
|
||||
if (filterArgIndex.valid())
|
||||
{
|
||||
argv[filterArgIndex.value()] = const_cast<char *>(mFilterString.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Note that we only add a filter string if we previously deleted a shard
|
||||
// index/count argument. So we will have space for the new filter string in
|
||||
// argv.
|
||||
AddArg(argc, argv, mFilterString.c_str());
|
||||
}
|
||||
|
||||
// Force-re-initialize GoogleTest flags to load the shard filter.
|
||||
testing::internal::ParseGoogleTestFlagsOnly(argc, argv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче