Add tests for source generators

- Bootstrap xUnit project to test source generators
- Implement source generator tests
- Better tests structure (put test data in cs files)
- Enable `ScriptSerializationGeneratorTests`
- Enable `ScriptPathAttributeGeneratorTests`
- Fix `NesterClass` -> `NestedClass`
- Use `Path.Combine` when dealing with paths
- Copy test data to the output directory
This commit is contained in:
Paul Joannon 2023-10-07 12:36:28 +02:00
parent a574c0296b
commit b352bdc8cb
No known key found for this signature in database
GPG key ID: C12F69B0AD0390DD
42 changed files with 3411 additions and 0 deletions

View file

@ -0,0 +1,60 @@
using Xunit;
namespace Godot.SourceGenerators.Tests;
public class ScriptPropertiesGeneratorTests
{
[Fact]
public async void ExportedFields()
{
await CSharpSourceGeneratorVerifier<ScriptPropertiesGenerator>.Verify(
new string[] { "ExportedFields.cs", "MoreExportedFields.cs" },
new string[] { "ExportedFields_ScriptProperties.generated.cs" }
);
}
[Fact]
public async void ExportedProperties()
{
await CSharpSourceGeneratorVerifier<ScriptPropertiesGenerator>.Verify(
"ExportedProperties.cs",
"ExportedProperties_ScriptProperties.generated.cs"
);
}
[Fact]
public async void OneWayPropertiesAllReadOnly()
{
await CSharpSourceGeneratorVerifier<ScriptPropertiesGenerator>.Verify(
"AllReadOnly.cs",
"AllReadOnly_ScriptProperties.generated.cs"
);
}
[Fact]
public async void OneWayPropertiesAllWriteOnly()
{
await CSharpSourceGeneratorVerifier<ScriptPropertiesGenerator>.Verify(
"AllWriteOnly.cs",
"AllWriteOnly_ScriptProperties.generated.cs"
);
}
[Fact]
public async void OneWayPropertiesMixedReadonlyWriteOnly()
{
await CSharpSourceGeneratorVerifier<ScriptPropertiesGenerator>.Verify(
"MixedReadOnlyWriteOnly.cs",
"MixedReadOnlyWriteOnly_ScriptProperties.generated.cs"
);
}
[Fact]
public async void ScriptBoilerplate()
{
await CSharpSourceGeneratorVerifier<ScriptPropertiesGenerator>.Verify(
"ScriptBoilerplate.cs",
"ScriptBoilerplate_ScriptProperties.generated.cs", "OuterClass.NestedClass_ScriptProperties.generated.cs"
);
}
}