Skip to content

Commit eb01602

Browse files
NikolayPianikovNikolayPianikov
authored andcommitted
TW-74176 Update to TeamCity 2021.2.1 changed test count - supports type args and too long args
1 parent 0b8d303 commit eb01602

2 files changed

Lines changed: 27 additions & 7 deletions

File tree

TeamCity.VSTest.TestLogger.Tests/TestNameProviderTests.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,21 @@ public class TestNameProviderTests
1616

1717
// XUnit
1818
[InlineData("XUnit.Tests.Test1", "XUnit.Tests.Test1", "XUnit.Tests.Test1")]
19+
// XUnit with type args
20+
[InlineData("XUnit.Tests.Test1", "XUnit.Tests.Test1<int>", "XUnit.Tests.Test1<int>")]
1921
// XUnit [Fact(DisplayName = "Abc")]
2022
[InlineData("XUnit.Tests.Test1", "Abc", "XUnit.Tests.Test1")]
23+
// XUnit [Fact(DisplayName = "Abc")] with type args
24+
[InlineData("XUnit.Tests.Test1", "Abc<int, String>", "XUnit.Tests.Test1<int, String>")]
2125
// XUnit with parameters
2226
[InlineData("XUnit.Tests.Test2", "XUnit.Tests.Test2 (str1: \"Aaa\", str2: \"Bb\")", "XUnit.Tests.Test2(str1: \"Aaa\", str2: \"Bb\")")]
27+
[InlineData("XUnit.Tests.Test2", "XUnit.Tests.Test2(str1: \"Aaa<string, Int>\", str2: \"Bb...", "XUnit.Tests.Test2(str1: \"Aaa<string, Int>\", str2: \"Bb...)")]
28+
// XUnit with parameters with type args
29+
[InlineData("XUnit.Tests.Test2", "XUnit.Tests.Test2<int, String>(str1: \"Aaa\", str2: \"Bb\")", "XUnit.Tests.Test2<int, String>(str1: \"Aaa\", str2: \"Bb\")")]
30+
// XUnit with long parameters
31+
[InlineData("XUnit.Tests.Test2", "XUnit.Tests.Test2 (str1: \"Aaa\", str2: \"Bb...", "XUnit.Tests.Test2(str1: \"Aaa\", str2: \"Bb...)")]
32+
// XUnit with long parameters with type args
33+
[InlineData("XUnit.Tests.Test2", "XUnit.Tests.Test2<string, Int>(str1: \"Aaa\", str2: \"Bb...", "XUnit.Tests.Test2<string, Int>(str1: \"Aaa\", str2: \"Bb...)")]
2334
// [Theory(DisplayName = "Abc")]
2435
[InlineData("XUnit.Tests.Test2", "Abc (str1: \"Aaa\", str2: \"Bb\")", "XUnit.Tests.Test2(str1: \"Aaa\", str2: \"Bb\")")]
2536
[InlineData("XUnit.Tests.Test2", "Abc (str1: \"Aaa\", str2: \"Bb\") ", "XUnit.Tests.Test2(str1: \"Aaa\", str2: \"Bb\")")]
@@ -34,7 +45,7 @@ public class TestNameProviderTests
3445
[InlineData("MSTest.Tests.Test2", "Test2 (Aa,Bb)", "MSTest.Tests.Test2(Aa,Bb)")]
3546
[InlineData("MSTest.Tests.Test2", "Test2 ()", "MSTest.Tests.Test2()")]
3647
[InlineData("MSTest.Tests.Test2", "Test3 (Aa,Bb)", "MSTest.Tests.Test2(Aa,Bb)")]
37-
[InlineData("MSTest.Tests.Test2", "Test2 (Aa,", "MSTest.Tests.Test2")]
48+
[InlineData("MSTest.Tests.Test2", "Test2 (Aa,", "MSTest.Tests.Test2(Aa,)")]
3849
[InlineData("A.Test2", "Test2 (Aa,Bb)", "A.Test2(Aa,Bb)")]
3950
[InlineData("A...Test2.", "Test2 (Aa,Bb)", "A...Test2.(Aa,Bb)")]
4051

@@ -45,7 +56,7 @@ public class TestNameProviderTests
4556
[InlineData("", "Abc", "Abc")]
4657
[InlineData(" ", "Abc", "Abc")]
4758
[InlineData(null, null, "")]
48-
public void Should(string fullyQualifiedName, string displayName, string expected)
59+
public void ShouldProvideName(string fullyQualifiedName, string displayName, string expected)
4960
{
5061
// Given
5162
var nameFactory = CreateInstance();

TeamCity.VSTest.TestLogger/TestNameProvider.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,27 @@ public string GetTestName(string fullyQualifiedName, string displayName)
3232

3333
private static string GetArgs(string name)
3434
{
35-
if (!name.TrimEnd().EndsWith(")"))
35+
var typedArgsPosition = name.IndexOf("<", StringComparison.Ordinal);
36+
var hasTypes = typedArgsPosition >= 0;
37+
var argsPosition = name.IndexOf("(", StringComparison.Ordinal);
38+
var hasArgs = argsPosition >= 0;
39+
if (!hasArgs && !hasTypes)
3640
{
3741
return string.Empty;
3842
}
3943

40-
var argsPosition = name.IndexOf("(", StringComparison.Ordinal);
41-
if (argsPosition < 0)
44+
if (!hasArgs || hasTypes && typedArgsPosition < argsPosition)
4245
{
43-
return string.Empty;
46+
argsPosition = typedArgsPosition;
4447
}
4548

46-
return name.Substring(argsPosition, name.Length - argsPosition);
49+
name = name.Substring(argsPosition, name.Length - argsPosition).Trim();
50+
if (hasArgs && !name.EndsWith(")"))
51+
{
52+
name += ")";
53+
}
54+
55+
return name;
4756
}
4857
}
4958
}

0 commit comments

Comments
 (0)