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)