Skip to content

Commit

Permalink
Fixing xUnit1044/1045/1046/1047 for Version for v3 projects
Browse files Browse the repository at this point in the history
  • Loading branch information
bradwilson committed Jan 31, 2025
1 parent 58192b4 commit 9004f22
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public void TestMethod() {
#endif
[InlineData("Guid.Empty", "Guid")]
[InlineData("new Uri(\"https://xunit.net/\")", "Uri")]
[InlineData("new Version(\"1.2.3\")", "Version")]
public async Task IntrinsicallySerializableValue_DoesNotTrigger(
string value,
string type)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,8 @@ public sealed class X1044_AvoidUsingTheoryDataTypeArgumentsThatAreNotSerializabl
[MemberData(nameof(TheoryDataMembers), "Index")]
[MemberData(nameof(TheoryDataMembers), "Range")]
#endif
[MemberData(nameof(TheoryDataMembers), "Version")]
[MemberData(nameof(TheoryDataMembers), "Version?")]
public async Task GivenTheory_WithTypeOnlySupportedInV3_TriggersInV2_DoesNotTriggerInV3(
string member,
string attribute,
Expand All @@ -433,8 +435,8 @@ public void TestMethod({2} parameter) {{ }}
""", member, attribute, type);
var expectedV2 = Verify.Diagnostic("xUnit1044").WithLocation(0).WithArguments(type);

await Verify.VerifyAnalyzerV2(source, expectedV2);
await Verify.VerifyAnalyzerV3(source);
await Verify.VerifyAnalyzerV2(LanguageVersion.CSharp9, source, expectedV2);
await Verify.VerifyAnalyzerV3(LanguageVersion.CSharp9, source);
}

[Theory]
Expand Down
3 changes: 2 additions & 1 deletion src/xunit.analyzers/Utility/SerializabilityAnalyzer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public Serializability AnalayzeSerializability(
if (type.Equals(typeSymbols.Guid, SymbolEqualityComparer.Default)
|| type.Equals(typeSymbols.Index, SymbolEqualityComparer.Default)
|| type.Equals(typeSymbols.Range, SymbolEqualityComparer.Default)
|| type.Equals(typeSymbols.Uri, SymbolEqualityComparer.Default))
|| type.Equals(typeSymbols.Uri, SymbolEqualityComparer.Default)
|| type.Equals(typeSymbols.Version, SymbolEqualityComparer.Default))
return Serializability.AlwaysSerializable;
}

Expand Down
3 changes: 3 additions & 0 deletions src/xunit.analyzers/Utility/SerializableTypeSymbols.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public sealed class SerializableTypeSymbols
readonly Lazy<INamedTypeSymbol?> type;
readonly Lazy<ImmutableArray<INamedTypeSymbol>> typesWithCustomSerializers;
readonly Lazy<INamedTypeSymbol?> uri;
readonly Lazy<INamedTypeSymbol?> version;

SerializableTypeSymbols(
Compilation compilation,
Expand Down Expand Up @@ -68,6 +69,7 @@ public sealed class SerializableTypeSymbols
.ToImmutableArray();
});
uri = new(() => TypeSymbolFactory.Uri(compilation));
version = new(() => TypeSymbolFactory.Version(compilation));

ClassDataAttribute = classDataAttribute;
DataAttribute = dataAttribute;
Expand All @@ -93,6 +95,7 @@ public sealed class SerializableTypeSymbols
public INamedTypeSymbol? Type => type.Value;
public ImmutableArray<INamedTypeSymbol> TypesWithCustomSerializers => typesWithCustomSerializers.Value;
public INamedTypeSymbol? Uri => uri.Value;
public INamedTypeSymbol? Version => version.Value;

public static SerializableTypeSymbols? Create(
Compilation compilation,
Expand Down
3 changes: 3 additions & 0 deletions src/xunit.analyzers/Utility/TypeSymbolFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,9 @@ static int ValidateArity(
public static INamedTypeSymbol? ValueTaskOfT(Compilation compilation) =>
Guard.ArgumentNotNull(compilation).GetTypeByMetadataName("System.Threading.Tasks.ValueTask`1");

public static INamedTypeSymbol? Version(Compilation compilation) =>
Guard.ArgumentNotNull(compilation).GetTypeByMetadataName("System.Version");

public static INamedTypeSymbol Void(Compilation compilation) =>
Guard.ArgumentNotNull(compilation).GetSpecialType(SpecialType.System_Void);
}

0 comments on commit 9004f22

Please sign in to comment.