TeamCity.VSTest.TestLogger/TestNameProvider.cs (44 lines of code) (raw):

// ReSharper disable ClassNeverInstantiated.Global // ReSharper disable InvertIf // ReSharper disable ConvertIfStatementToReturnStatement namespace TeamCity.VSTest.TestLogger; using System; internal class TestNameProvider : ITestNameProvider { public string GetTestName(string? fullyQualifiedName, string? displayName) { fullyQualifiedName = fullyQualifiedName?.Trim() ?? string.Empty; displayName = displayName?.Trim() ?? string.Empty; if (fullyQualifiedName == string.Empty) { return displayName; } if (displayName == string.Empty) { return fullyQualifiedName; } if (!fullyQualifiedName.Contains(displayName)) { return fullyQualifiedName + GetArgs(displayName); } return fullyQualifiedName.Length > displayName.Length ? fullyQualifiedName : displayName; } private static string GetArgs(string name) { var typedArgsPosition = name.IndexOf("<", StringComparison.Ordinal); var hasTypes = typedArgsPosition >= 0; var argsPosition = name.IndexOf("(", StringComparison.Ordinal); var hasArgs = argsPosition >= 0; if (!hasArgs && !hasTypes) { return string.Empty; } if (!hasArgs || hasTypes && typedArgsPosition < argsPosition) { argsPosition = typedArgsPosition; } name = name.Substring(argsPosition, name.Length - argsPosition).Trim(); if (hasArgs && !name.EndsWith(")")) { name += ")"; } return name; } }