diff --git a/GFramework.Godot.SourceGenerators.Tests/Project/GodotProjectMetadataGeneratorTests.cs b/GFramework.Godot.SourceGenerators.Tests/Project/GodotProjectMetadataGeneratorTests.cs index 96dbe30f..b033a865 100644 --- a/GFramework.Godot.SourceGenerators.Tests/Project/GodotProjectMetadataGeneratorTests.cs +++ b/GFramework.Godot.SourceGenerators.Tests/Project/GodotProjectMetadataGeneratorTests.cs @@ -463,6 +463,66 @@ public class GodotProjectMetadataGeneratorTests }); } + /// + /// 验证缺少 project.godot AdditionalText 时不会生成任何源码或诊断。 + /// + [Test] + public void Run_Should_Not_Generate_Sources_When_Project_File_Is_Missing() + { + var result = AdditionalTextGeneratorTestDriver.Run( + CreateSource("namespace TestApp { }")); + + var generatorResult = result.Results.Single(); + + Assert.Multiple(() => + { + Assert.That(generatorResult.Diagnostics, Is.Empty); + Assert.That(generatorResult.GeneratedSources, Is.Empty); + }); + } + + /// + /// 验证空的 project.godot 内容不会生成任何源码或诊断。 + /// + [Test] + public void Run_Should_Not_Generate_Sources_When_Project_File_Is_Empty() + { + var result = RunGenerator( + CreateSource("namespace TestApp { }"), + string.Empty); + + var generatorResult = result.Results.Single(); + + Assert.Multiple(() => + { + Assert.That(generatorResult.Diagnostics, Is.Empty); + Assert.That(generatorResult.GeneratedSources, Is.Empty); + }); + } + + /// + /// 验证只有空节的 project.godot 不会生成任何源码或诊断。 + /// + [Test] + public void Run_Should_Not_Generate_Sources_When_Project_File_Has_Empty_Sections() + { + var result = RunGenerator( + CreateSource("namespace TestApp { }"), + """ + [autoload] + + [input] + """); + + var generatorResult = result.Results.Single(); + + Assert.Multiple(() => + { + Assert.That(generatorResult.Diagnostics, Is.Empty); + Assert.That(generatorResult.GeneratedSources, Is.Empty); + }); + } + private static GeneratorDriverRunResult RunGenerator( string source, string projectFile)