public static bool AreRunSettingsCollectorsIncompatibleWithTestSettings()

in src/Microsoft.TestPlatform.Utilities/InferRunSettingsHelper.cs [243:302]


    public static bool AreRunSettingsCollectorsIncompatibleWithTestSettings(string runsettings)
    {
        // If there's no embedded testsettings.. bail out
        if (!IsTestSettingsEnabled(runsettings))
        {
            return false;
        }

        // Explicitly blocking usage of data collectors through modes runsettings and testsettings except
        // for couple of scenarios where the IDE generates the collector settings in the runsettings file even when
        // it has an embedded testsettings file. Longterm runsettings will be the single run configuration source
        // In-proc collectors are incompatible with testsettings
        var inprocDataCollectionSettings = XmlRunSettingsUtilities.GetInProcDataCollectionRunSettings(runsettings);
        if (inprocDataCollectionSettings != null && inprocDataCollectionSettings.IsCollectionEnabled && inprocDataCollectionSettings.DataCollectorSettingsList != null)
        {
            foreach (var collectorSettings in inprocDataCollectionSettings.DataCollectorSettingsList)
            {
                if (collectorSettings.IsEnabled)
                {
                    EqtTrace.Warning($"Incompatible collector found. {collectorSettings.FriendlyName} : {collectorSettings.Uri}");
                    return true;
                }
            }
        }

        // TestSettings and collection is enabled in runsetttings.. the only allowed collectors are code coverage and fakes
        var datacollectionSettings = XmlRunSettingsUtilities.GetDataCollectionRunSettings(runsettings);
        if (datacollectionSettings != null && datacollectionSettings.IsCollectionEnabled && datacollectionSettings.DataCollectorSettingsList != null)
        {
            foreach (var collectorRef in datacollectionSettings.DataCollectorSettingsList)
            {
                // Ignore disabled collector
                if (!collectorRef.IsEnabled)
                {
                    continue;
                }

                // If the configured collector is code coverage or fakes.. ignore
                if (!string.IsNullOrWhiteSpace(collectorRef.FriendlyName) &&
                    (FakesFriendlyName.Equals(collectorRef.FriendlyName, StringComparison.OrdinalIgnoreCase) ||
                     CodeCoverageFriendlyName.Equals(collectorRef.FriendlyName, StringComparison.OrdinalIgnoreCase)))
                {
                    continue;
                }

                // If the configured collector is code coverage or fakes.. ignore
                if (collectorRef.Uri != null &&
                    (CodeCoverageCollectorUri.Equals(collectorRef.Uri.ToString(), StringComparison.OrdinalIgnoreCase) ||
                     FakesCollectorUri.Equals(collectorRef.Uri.ToString(), StringComparison.OrdinalIgnoreCase)))
                {
                    continue;
                }

                EqtTrace.Warning($"Incompatible collector found. {collectorRef.FriendlyName} : {collectorRef.Uri}");
                return true;
            }
        }

        return false;
    }