| File: Utils\AspireRepositoryDetectorTests.cs | Web Access |
| Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #if DEBUG using Aspire.Cli.Utils; namespace Aspire.Cli.Tests.Utils; public class AspireRepositoryDetectorTests : IDisposable { private const string RepoRootEnvironmentVariableName = "ASPIRE_REPO_ROOT"; private readonly List<string> _directoriesToDelete = []; private readonly string? _originalRepoRoot = Environment.GetEnvironmentVariable(RepoRootEnvironmentVariableName); public AspireRepositoryDetectorTests() { AspireRepositoryDetector.ResetCache(); } public void Dispose() { Environment.SetEnvironmentVariable(RepoRootEnvironmentVariableName, _originalRepoRoot); AspireRepositoryDetector.ResetCache(); foreach (var directory in _directoriesToDelete) { if (Directory.Exists(directory)) { Directory.Delete(directory, recursive: true); } } } [Fact] public void DetectRepositoryRoot_ReturnsDirectoryContainingAspireSolution() { var repoRoot = CreateTempDirectory(); File.WriteAllText(Path.Combine(repoRoot, "Aspire.slnx"), string.Empty); var nestedDirectory = Directory.CreateDirectory(Path.Combine(repoRoot, "src", "Project")).FullName; var detectedRoot = AspireRepositoryDetector.DetectRepositoryRoot(nestedDirectory); Assert.Equal(repoRoot, detectedRoot); } [Fact] public void DetectRepositoryRoot_UsesEnvironmentVariable_WhenNoSolutionFound() { var repoRoot = CreateTempDirectory(); var workingDirectory = CreateTempDirectory(); Environment.SetEnvironmentVariable(RepoRootEnvironmentVariableName, repoRoot); var detectedRoot = AspireRepositoryDetector.DetectRepositoryRoot(workingDirectory); Assert.Equal(repoRoot, detectedRoot); } [Fact] public void DetectRepositoryRoot_PrefersSolutionSearchOverEnvironmentVariable() { var repoRoot = CreateTempDirectory(); File.WriteAllText(Path.Combine(repoRoot, "Aspire.slnx"), string.Empty); var envRoot = CreateTempDirectory(); Environment.SetEnvironmentVariable(RepoRootEnvironmentVariableName, envRoot); var nestedDirectory = Directory.CreateDirectory(Path.Combine(repoRoot, "playground", "polyglot")).FullName; var detectedRoot = AspireRepositoryDetector.DetectRepositoryRoot(nestedDirectory); Assert.Equal(repoRoot, detectedRoot); } private string CreateTempDirectory() { var directory = Directory.CreateTempSubdirectory("aspire-repo-detector-tests-").FullName; _directoriesToDelete.Add(directory); return directory; } } #endif