diff --git a/test/ProjectDiff.Tests/Core/DirectoryBuildPropsTests.cs b/test/ProjectDiff.Tests/Core/DirectoryBuildPropsTests.cs
new file mode 100644
index 0000000..5ea1254
--- /dev/null
+++ b/test/ProjectDiff.Tests/Core/DirectoryBuildPropsTests.cs
@@ -0,0 +1,223 @@
+using Microsoft.Extensions.Logging.Abstractions;
+using ProjectDiff.Core;
+using ProjectDiff.Core.Entrypoints;
+using ProjectDiff.Tests.Utils;
+
+namespace ProjectDiff.Tests.Core;
+
+public sealed class DirectoryBuildPropsTests
+{
+ [Fact]
+ public async Task ModifyingParentDirectoryBuildProps_ShouldNotAffectProjectInSubDirectory()
+ {
+ using var repo = await TestRepository.SetupAsync(async r =>
+ {
+ await r.WriteAllTextAsync(
+ "Directory.Build.props",
+ """
+
+
+ Value
+
+
+ """
+ );
+ r.CreateDirectory("Sample");
+ await r.WriteAllTextAsync(
+ "Sample/Directory.Build.props",
+ """
+
+
+ Value
+
+
+ """
+ );
+ r.CreateProject("Sample/Sample.csproj");
+ }
+ );
+
+ await repo.WriteAllTextAsync(
+ "Directory.Build.props",
+ """
+
+
+ SomeNewValue
+
+
+ """
+ );
+
+ var result = await GetProjectDiff(repo);
+ Assert.Equal(ProjectDiffExecutionStatus.Success, result.Status);
+ Assert.Empty(result.Projects);
+ }
+
+ [Fact]
+ public async Task DirectoryBuildProps_AffectsProjects_IfImportedByNestedDirectoryBuildProps()
+ {
+ using var repo = await TestRepository.SetupAsync(async r =>
+ {
+ await r.WriteAllTextAsync(
+ "Directory.Build.props",
+ """
+
+
+ Value
+
+
+ """
+ );
+ r.CreateDirectory("Sample");
+ await r.WriteAllTextAsync(
+ "Sample/Directory.Build.props",
+ """
+
+
+
+
+ Value
+
+
+ """
+ );
+ r.CreateProject("Sample/Sample.csproj");
+ }
+ );
+
+
+ await repo.WriteAllTextAsync(
+ "Directory.Build.props",
+ """
+
+
+ SomeNewValue
+
+
+ """
+ );
+
+ var result = await GetProjectDiff(repo);
+
+ Assert.Equal(ProjectDiffExecutionStatus.Success, result.Status);
+
+ var project = Assert.Single(result.Projects);
+ Assert.Equal(DiffStatus.Modified, project.Status);
+ }
+
+ [Fact]
+ public async Task AddingDirectoryBuildProps_ShouldOnlyAffectProjectsInDirectory()
+ {
+ using var repo = await TestRepository.SetupAsync(r =>
+ {
+ r.CreateDirectory("Sample");
+ r.CreateProject("Sample/Sample.csproj");
+ r.CreateDirectory("Other");
+ r.CreateProject("Other/Other.csproj");
+ return Task.CompletedTask;
+ }
+ );
+
+ await repo.WriteAllTextAsync(
+ "Sample/Directory.Build.props",
+ """
+
+
+ Value
+
+
+ """
+ );
+
+ var result = await GetProjectDiff(repo);
+ Assert.Equal(ProjectDiffExecutionStatus.Success, result.Status);
+ var project = Assert.Single(result.Projects);
+
+ Assert.Equal(repo.GetPath("Sample", "Sample.csproj"), project.Path);
+ }
+
+ [Fact]
+ public async Task AddingDirectoryBuildProps_ShouldAffectProjects()
+ {
+ using var repo = await TestRepository.SetupAsync(r =>
+ {
+ r.CreateDirectory("Sample");
+ r.CreateProject("Sample/Sample.csproj");
+ return Task.CompletedTask;
+ }
+ );
+
+ await repo.WriteAllTextAsync(
+ "Directory.Build.props",
+ """
+
+
+ Value
+
+
+ """
+ );
+
+ var result = await GetProjectDiff(repo);
+
+ Assert.Equal(ProjectDiffExecutionStatus.Success, result.Status);
+
+ var project = Assert.Single(result.Projects);
+
+ Assert.Equal(DiffStatus.Modified, project.Status);
+ }
+
+ [Fact]
+ public async Task ModifyingDirectoryBuildProps_ShouldAffectProjects()
+ {
+ using var repo = await TestRepository.SetupAsync(async r =>
+ {
+ await r.WriteAllTextAsync(
+ "Directory.Build.props",
+ """
+
+
+ Value
+
+
+ """
+ );
+
+ r.CreateDirectory("Sample");
+ r.CreateProject("Sample/Sample.csproj");
+ }
+ );
+
+ await repo.WriteAllTextAsync(
+ "Directory.Build.props",
+ """
+
+
+ SomeNewValue
+
+
+ """
+ );
+ var result = await GetProjectDiff(repo);
+
+ Assert.Equal(ProjectDiffExecutionStatus.Success, result.Status);
+
+ var project = Assert.Single(result.Projects);
+
+ Assert.Equal(DiffStatus.Modified, project.Status);
+ }
+
+
+ private static Task GetProjectDiff(TestRepository repo)
+ {
+ var executor = new ProjectDiffExecutor(new ProjectDiffExecutorOptions());
+ return executor.GetProjectDiff(
+ repo.WorkingDirectory,
+ new DirectoryScanEntrypointProvider(
+ repo.WorkingDirectory,
+ NullLogger.Instance
+ ),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+ }
+}
\ No newline at end of file
diff --git a/test/ProjectDiff.Tests/Tool/ProjectDiffTests.cs b/test/ProjectDiff.Tests/Tool/ProjectDiffTests.cs
index 3671179..56483d6 100644
--- a/test/ProjectDiff.Tests/Tool/ProjectDiffTests.cs
+++ b/test/ProjectDiff.Tests/Tool/ProjectDiffTests.cs
@@ -335,7 +335,7 @@ params string[] args
var console = new TestConsole(repository.WorkingDirectory);
var cli = ProjectDiffTool.BuildCli(console);
- var exitCode = await cli.InvokeAsync(args.Append("--log-level=Debug").ToArray());
+ var exitCode = await cli.InvokeAsync(args.Append("--log-level=None").ToArray());
if (exitCode != 0)
{
var stderr = console.GetStandardError();