6551 references to FullName
aspire (669)
Agents\ClaudeCode\ClaudeCodeAgentEnvironmentScanner.cs (12)
49_logger.LogDebug("Starting Claude Code environment scan in directory: {WorkingDirectory}", context.WorkingDirectory.FullName);
50_logger.LogDebug("Workspace root: {RepositoryRoot}", context.RepositoryRoot.FullName);
62_logger.LogDebug("Inferred workspace root from .claude folder parent: {WorkspaceRoot}", workspaceRoot.FullName);
69_logger.LogDebug("Adding Claude Code applicator for .mcp.json at: {WorkspaceRoot}", workspaceRoot.FullName);
95_logger.LogDebug("Adding Claude Code applicator for .mcp.json at workspace root: {WorkspaceRoot}", context.RepositoryRoot.FullName);
129var claudeCodePath = Path.Combine(currentDirectory.FullName, ClaudeCodeFolderName);
130if (Directory.Exists(claudeCodePath) && !string.Equals(currentDirectory.FullName, homeDirectory.FullName, StringComparison.OrdinalIgnoreCase))
137if (string.Equals(currentDirectory.FullName, repositoryRoot.FullName, StringComparison.OrdinalIgnoreCase))
155var configFilePath = Path.Combine(repoRoot.FullName, McpConfigFileName);
203var configFilePath = Path.Combine(repoRoot.FullName, McpConfigFileName);
Agents\VsCode\VsCodeAgentEnvironmentScanner.cs (13)
53_logger.LogDebug("Starting VS Code environment scan in directory: {WorkingDirectory}", context.WorkingDirectory.FullName);
54_logger.LogDebug("Workspace root: {RepositoryRoot}", context.RepositoryRoot.FullName);
61_logger.LogDebug("Found .vscode folder at: {VsCodeFolder}", vsCodeFolder.FullName);
69_logger.LogDebug("Adding VS Code applicator for .vscode folder at: {VsCodeFolder}", vsCodeFolder.FullName);
88var targetVsCodeFolder = new DirectoryInfo(Path.Combine(context.RepositoryRoot.FullName, VsCodeFolderName));
89_logger.LogDebug("Adding VS Code applicator for new .vscode folder at: {VsCodeFolder}", targetVsCodeFolder.FullName);
156var vsCodePath = Path.Combine(currentDirectory.FullName, VsCodeFolderName);
157if (Directory.Exists(vsCodePath) && !string.Equals(currentDirectory.FullName, homeDirectory.FullName, StringComparison.OrdinalIgnoreCase))
164if (string.Equals(currentDirectory.FullName, repositoryRoot.FullName, StringComparison.OrdinalIgnoreCase))
194var mcpConfigPath = Path.Combine(vsCodeFolder.FullName, McpConfigFileName);
248var mcpConfigPath = Path.Combine(vsCodeFolder.FullName, McpConfigFileName);
Caching\AppHostInfoDiskCache.cs (19)
116_cacheDirectory = new DirectoryInfo(Path.Combine(executionContext.CacheDirectory.FullName, SubDirectoryName));
139var path = Path.Combine(_cacheDirectory.FullName, $"{key}.json");
142_logger.LogTrace("AppHost info cache miss for {Project} (key {Key})", projectFile.FullName, key);
151_logger.LogTrace("AppHost info cache schema mismatch for {Project}", projectFile.FullName);
161_logger.LogTrace("AppHost info cache entry for {Project} is missing RunCommand", projectFile.FullName);
165_logger.LogTrace("AppHost info cache hit for {Project} (key {Key})", projectFile.FullName, key);
171_logger.LogDebug(ex, "Failed to read AppHost info cache for {Project}", projectFile.FullName);
206projectFile.FullName,
212var path = Path.Combine(_cacheDirectory.FullName, $"{key}.json");
218tempPath = Path.Combine(_cacheDirectory.FullName, $"{Path.GetRandomFileName()}.tmp");
226_logger.LogTrace("Stored AppHost info cache entry for {Project} (key {Key})", projectFile.FullName, key);
235_logger.LogDebug(ex, "Failed to write AppHost info cache for {Project}", projectFile.FullName);
285projectFile.FullName);
304sb.Append(CliPathHelper.NormalizePathCasing(projectFile.FullName, environment));
306AppendMtime(sb, projectFile.FullName, "csproj");
308var projectDir = projectFile.Directory?.FullName;
359AppendMtime(sb, Path.Combine(dir.FullName, siblingName), siblingName);
361AppendMtime(sb, Path.Combine(dir.FullName, "global.json"), "globaljson");
366AppendMtime(sb, Path.Combine(dir.FullName, customName), customName);
Caching\DiskCache.cs (12)
24_cacheDirectory = new DirectoryInfo(Path.Combine(executionContext.CacheDirectory.FullName, "nuget-search"));
33_logger.LogDebug(ex, "Failed to create cache directory {CacheDirectory}", _cacheDirectory.FullName);
94_logger.LogDebug(ex, "Failed to create cache directory {CacheDirectory}", _cacheDirectory.FullName);
106var fullPath = Path.Combine(_cacheDirectory.FullName, fileName);
145_logger.LogDebug(ex, "Failed to delete cache file {CacheFile}", file.FullName);
152_logger.LogDebug(ex, "Failed to clear disk cache at {CacheDirectory}", _cacheDirectory.FullName);
216valid = file.FullName;
273_logger.LogTrace("Deleted expired cache file: {CacheFile}", file.FullName);
277_logger.LogTrace("Deleted old cache file during global cleanup: {CacheFile}", file.FullName);
281_logger.LogTrace("Deleted invalid cache file: {CacheFile}", file.FullName);
285_logger.LogTrace("Deleted cache file: {CacheFile}", file.FullName);
290_logger.LogDebug(ex, "Failed to delete cache file {CacheFile}", file.FullName);
Configuration\ConfigurationService.cs (13)
98return globalSettingsFile.FullName;
114var newSettingsPath = Path.Combine(searchDirectory.FullName, AspireConfigFile.FileName);
124var legacySettingsPath = ConfigurationHelper.BuildPathToSettingsJsonFile(searchDirectory.FullName);
135var defaultPath = Path.Combine(executionContext.WorkingDirectory.FullName, AspireConfigFile.FileName);
149var aspireConfigPath = Path.Combine(legacySettingsRootDirectory.FullName, AspireConfigFile.FileName);
152logger.LogInformation("Migrating legacy settings from {LegacyDir} to {ConfigFile}", legacySettingsRootDirectory.FullName, aspireConfigPath);
153_ = AspireConfigFile.LoadOrCreate(legacySettingsRootDirectory.FullName);
165await LoadConfigurationFromFileAsync(globalSettingsFile.FullName, allConfig, cancellationToken);
181await LoadConfigurationFromFileAsync(globalSettingsFile.FullName, globalConfig, cancellationToken);
382var configFilePath = Path.Combine(searchDirectory.FullName, AspireConfigFile.FileName);
392var legacySettingsPath = ConfigurationHelper.BuildPathToSettingsJsonFile(searchDirectory.FullName);
411if (File.Exists(globalSettingsFile.FullName))
413var globalConfig = LoadSettingsFileForReading(globalSettingsFile.FullName);
DotNet\DotNetCliRunner.cs (37)
270projectFile.FullName,
333: Path.GetFullPath(Path.Combine(workingDirectory.FullName, binlogDirectory));
467var sdksDirectory = executionContext.SdksDirectory.FullName;
808cliArgsList.Add(projectFile.FullName);
925false => [watchOrRunCommand, nonInteractiveSwitch, verboseSwitch, noBuildSwitch, noRestoreSwitch, noProfileSwitch, .. launchProfileSwitch, "--project", projectFile.FullName],
929true => ["run", noRestoreSwitch, noProfileSwitch, .. launchProfileSwitch, suppressCliRunHookProperty, "--file", projectFile.FullName]
1045List<string> cliArgs = ["new", "install", localPackagePath?.FullName ?? $"{packageName}@{version}"];
1183sourcePath = Path.GetFullPath(nugetSource, workingDirectory.FullName);
1259string[] cliArgs = ["restore", projectFilePath.FullName];
1276string[] cliArgs = ["build", noRestoreSwitch, projectFilePath.FullName];
1302cliArgsList.AddRange(["--file", projectFilePath.FullName]);
1314cliArgsList.Add(projectFilePath.FullName);
1329logger.LogInformation("Adding package {PackageName} with version {PackageVersion} to project {ProjectFilePath}", packageName, packageVersion, projectFilePath.FullName);
1342logger.LogError("Failed to add package {PackageName} with version {PackageVersion} to project {ProjectFilePath}. See debug logs for more details.", packageName, packageVersion, projectFilePath.FullName);
1346logger.LogInformation("Package {PackageName} with version {PackageVersion} added to project {ProjectFilePath}", packageName, packageVersion, projectFilePath.FullName);
1356string[] cliArgs = ["sln", solutionFile.FullName, "add", projectFile.FullName];
1358logger.LogInformation("Adding project {ProjectFilePath} to solution {SolutionFilePath}", projectFile.FullName, solutionFile.FullName);
1371logger.LogError("Failed to add project {ProjectFilePath} to solution {SolutionFilePath}. See debug logs for more details.", projectFile.FullName, solutionFile.FullName);
1375logger.LogInformation("Project {ProjectFilePath} added to solution {SolutionFilePath}", projectFile.FullName, solutionFile.FullName);
1418: Path.Combine(workingDirectory.FullName, configPath);
1519cliArgs.Add(nugetConfigFile.FullName);
1590nugetConfigFile?.FullName ?? "(default)",
1671string[] cliArgs = ["sln", solutionFile.FullName, "list"];
1727: Path.Combine(solutionFile.Directory!.FullName, line);
1739string[] cliArgs = ["add", projectFile.FullName, "reference", referencedProject.FullName];
1741logger.LogInformation("Adding project reference from {ProjectFile} to {ReferencedProject}", projectFile.FullName, referencedProject.FullName);
1754logger.LogError("Failed to add project reference from {ProjectFile} to {ReferencedProject}. See debug logs for more details.", projectFile.FullName, referencedProject.FullName);
1758logger.LogInformation("Project reference added from {ProjectFile} to {ReferencedProject}", projectFile.FullName, referencedProject.FullName);
1766return ExecuteAsync(["user-secrets", "init", "--project", projectFile.FullName], env: null, projectFile: null, projectFile.Directory!, backchannelCompletionSource: null, options, cancellationToken);
Git\GitRepository.cs (9)
22logger.LogDebug("Searching for Git repository root from working directory: {WorkingDirectory}", executionContext.WorkingDirectory.FullName);
28WorkingDirectory = executionContext.WorkingDirectory.FullName,
74logger.LogDebug("Found Git repository root: {GitRoot}", directoryInfo.FullName);
97logger.LogDebug("Search root does not exist: {SearchRoot}", searchRoot.FullName);
101logger.LogDebug("Listing git-included files under: {SearchRoot}", searchRoot.FullName);
107WorkingDirectory = searchRoot.FullName,
145logger.LogDebug("git ls-files returned non-zero exit code {ExitCode} from {SearchRoot}: {Error}", process.ExitCode, searchRoot.FullName, errorOutput.Trim());
154var rootFullName = searchRoot.FullName;
169logger.LogDebug("git ls-files returned {Count} files under {SearchRoot}", includedFiles.Count, searchRoot.FullName);
Projects\AppHostCandidateFinder.cs (8)
148logger.LogDebug("Git enumeration unavailable for {SearchDirectory}; falling back to filesystem walk.", searchDirectory.FullName);
182var rootFullName = searchDirectory.FullName;
413.Select(path => new FileInfo(Path.Combine(searchDirectory.FullName, path.Replace('/', Path.DirectorySeparatorChar))))
529public override string FullName => _directory.FullName;
569return new MatcherDirectoryInfo(new DirectoryInfo(Path.Combine(_directory.FullName, path)), _options, _excludePath, _applyDirectoryExclusions, _pathComparison, _counters, _onDirectoryEnumerated, _depth + 1, _maxDepth, _cancellationToken);
574return new MatcherFileInfo(new FileInfo(Path.Combine(_directory.FullName, path)), _options, _excludePath, _applyDirectoryExclusions, _pathComparison, _counters, _onDirectoryEnumerated, _depth, _maxDepth, _cancellationToken);
590var directoryPath = Path.GetFullPath(directory.FullName);
615public override string FullName => _file.FullName;
Projects\DotNetAppHostProject.cs (25)
196if (!TryLoadProjectRoot(projectFile.FullName, out var root) || root is null)
299var filePath = Path.Combine(current.FullName, fileName);
709if (TryLoadProjectRoot(projectFile.FullName, out var projectRoot) && projectRoot is not null)
727var filePath = Path.Combine(current.FullName, fileName);
794|| !TryResolveImportPath(containingDirectory.FullName, targetPath, out var resolvedPath))
1788_logger.LogDebug("Falling back to dotnet run for {Project}; direct AppHost launch is disabled by configuration.", effectiveAppHostFile.FullName);
1835workingDirectory.FullName,
1862effectiveAppHostFile.FullName,
1871effectiveAppHostFile.FullName);
1891effectiveAppHostFile.FullName);
1900effectiveAppHostFile.FullName,
1910effectiveAppHostFile.FullName,
1924effectiveAppHostFile.FullName,
1944=> Path.IsPathFullyQualified(path) ? path : Path.GetFullPath(Path.Combine(baseDirectory.FullName, path));
1976effectiveAppHostFile.FullName);
1984effectiveAppHostFile.FullName,
2035_logger.LogDebug(ex, "Falling back to dotnet run because launch settings could not be parsed for {Project}.", effectiveAppHostFile.FullName);
2040_logger.LogDebug(ex, "Falling back to dotnet run because launch settings could not be read for {Project}.", effectiveAppHostFile.FullName);
2045_logger.LogDebug(ex, "Falling back to dotnet run because launch settings could not be read for {Project}.", effectiveAppHostFile.FullName);
2052var directory = projectFile.Directory!.FullName;
2201var runJsonFilePath = appHostFile.FullName[..^2] + "run.json";
2247var profiles = AspireConfigFile.ReadApphostRunProfiles(appHostFile.FullName[..^2] + "run.json");
2283if (!string.Equals(resolvedAppHostPath, appHostFile.FullName, StringComparison.OrdinalIgnoreCase))
2469appHostFile.FullName,
2470homeDirectory.FullName,
Projects\GuestAppHostProject.cs (37)
191return AspireRepositoryDetector.DetectRepositoryRoot(appHostFile.Directory?.FullName) is not null;
203var integrations = config.GetIntegrationReferences(defaultSdkVersion, directory.FullName).ToList();
236var config = AspireConfigFile.LoadOrCreate(configDir.FullName, GetEffectiveSdkVersion());
237_logger.LogInformation("Loaded config from {Directory} (file exists: {Exists})", configDir.FullName, AspireConfigFile.Exists(configDir.FullName));
242_logger.LogError(ex, "Failed to load configuration from {Directory}", configDir.FullName);
250config.Save(configDir.FullName);
267? AspireConfigFile.Load(GetConfigDirectory(directory).FullName)
300var appHostServerProject = await _appHostServerProjectFactory.CreateAsync(directory.FullName, cancellationToken);
333directory.FullName,
366_logger.LogDebug("AppHost file {File} does not exist", appHostFile.FullName);
381_logger.LogDebug("Validated {Language} AppHost: {File}", _resolvedLanguage.DisplayName, appHostFile.FullName);
391_logger.LogDebug("Running {Language} AppHost: {AppHostFile}", DisplayName, appHostFile.FullName);
418var appHostServerProject = await _appHostServerProjectFactory.CreateAsync(directory.FullName, cancellationToken);
476launchSettingsEnvVars[KnownConfigNames.AspireUserSecretsId] = UserSecretsPathHelper.ComputeSyntheticUserSecretsId(appHostFile.FullName);
518directory.FullName,
618environmentVariables["ASPIRE_PROJECT_DIRECTORY"] = directory.FullName;
619environmentVariables["ASPIRE_APPHOST_FILEPATH"] = appHostFile.FullName;
912var aspireConfig = AspireConfigFile.Load(configDir.FullName);
920_logger.LogWarning(ex, "Failed to load config for launch profiles from {Directory}", configDir.FullName);
924var apphostRunPath = Path.Combine(directory.FullName, "apphost.run.json");
925var launchSettingsPath = Path.Combine(directory.FullName, "Properties", "launchSettings.json");
931_logger.LogDebug("No aspire.config.json, apphost.run.json, or launchSettings.json found in {Path}", directory.FullName);
1052_logger.LogDebug("Publishing guest AppHost: {AppHostFile}", appHostFile.FullName);
1058var appHostServerProject = await _appHostServerProjectFactory.CreateAsync(directory.FullName, cancellationToken);
1085launchSettingsEnvVars[KnownConfigNames.AspireHome] = _executionContext.AspireHomeDirectory.FullName;
1094launchSettingsEnvVars[KnownConfigNames.AspireUserSecretsId] = UserSecretsPathHelper.ComputeSyntheticUserSecretsId(appHostFile.FullName);
1129directory.FullName,
1190environmentVariables[KnownConfigNames.AspireHome] = _executionContext.AspireHomeDirectory.FullName;
1192environmentVariables["ASPIRE_PROJECT_DIRECTORY"] = directory.FullName;
1193environmentVariables["ASPIRE_APPHOST_FILEPATH"] = appHostFile.FullName;
1591var appHostServerProject = await _appHostServerProjectFactory.CreateAsync(directory.FullName, cancellationToken);
1597homeDirectory.FullName,
1779var config = AspireConfigFile.Load(configDir.FullName);
2192var id = UserSecretsPathHelper.ComputeSyntheticUserSecretsId(appHostFile.FullName);
2241var existingBundlePath = Path.GetFullPath(existingCertificateBundle, workingDirectory.FullName);
2257_executionContext.AspireHomeDirectory.FullName,
Projects\JavaAppHostToolchainResolver.cs (18)
117resolution.ProjectDirectory.FullName,
131if (File.Exists(Path.Combine(candidate.FullName, MavenPomFileName)))
133return new(JavaAppHostToolchain.Maven, candidate, $"{MavenPomFileName} found in {candidate.FullName}");
138if (File.Exists(Path.Combine(candidate.FullName, gradleBuildFileName)))
140return new(JavaAppHostToolchain.Gradle, candidate, $"{gradleBuildFileName} found in {candidate.FullName}");
145return new(JavaAppHostToolchain.Javac, appHostDirectory, $"no build file found in {appHostDirectory.FullName}");
189var candidate = Path.Combine(directory.FullName, wrapperName);
190var isProjectDirectory = directory.FullName == projectDirectory.FullName;
196|| (IsBuildRoot(directory.FullName, toolchain)
197&& !IsWorldWritable(directory.FullName)
204var gitPath = Path.Combine(directory.FullName, ".git");
308$"The Java AppHost project in '{projectDirectory.FullName}' declares a {GetDisplayName(toolchain)} " +
338var relativeWrapperPath = Path.GetRelativePath(appHostDirectory.FullName, wrapperPath);
402var scriptPath = Path.Combine(resolution.ProjectDirectory.FullName, GradleInitScriptPath);
462resolution.ProjectDirectory.FullName,
493var relativePath = Path.GetRelativePath(appHostDirectory.FullName, projectDirectory.FullName);
Projects\ProjectLocator.cs (102)
184candidates.Sort((x, y) => string.Compare(x.AppHostFile.FullName, y.AppHostFile.FullName, StringComparison.Ordinal));
299logger.LogDebug("Searching for project files in {SearchDirectory}", searchDirectory.FullName);
349logger.LogDebug("Checking candidate file {CandidateFile}", candidateFile.FullName);
354logger.LogTrace("No handler found for {CandidateFile}", candidateFile.FullName);
390logger.LogDebug("Found {Language} apphost {CandidateFile}", handler.DisplayName, candidateFile.FullName);
391var relativePath = Path.GetRelativePath(executionContext.WorkingDirectory.FullName, candidateFile.FullName);
411var relativePath = Path.GetRelativePath(executionContext.WorkingDirectory.FullName, candidateFile.FullName);
416logger.LogDebug("Skipping unsupported project {CandidateFile}", candidateFile.FullName);
424var relativePath = Path.GetRelativePath(executionContext.WorkingDirectory.FullName, candidateFile.FullName);
439logger.LogTrace("File {CandidateFile} is not a valid Aspire host", candidateFile.FullName);
458appHostProjects.Sort((x, y) => string.Compare(x.AppHostFile.FullName, y.AppHostFile.FullName, StringComparison.Ordinal));
490var settingsCanonicalPath = PathNormalizer.ResolveSymlinks(settingsAppHost.FullName);
493if (string.Equals(candidate.AppHostFile.FullName, settingsAppHost.FullName, pathComparison))
498var candidateCanonicalPath = PathNormalizer.ResolveSymlinks(candidate.AppHostFile.FullName);
510var relativePath = Path.GetRelativePath(executionContext.WorkingDirectory.FullName, settingsAppHost.FullName);
516logger.LogDebug("Skipping configured AppHost project {SettingsAppHost} because no project handler was found.", settingsAppHost.FullName);
522var settingsAppHostRelativePath = Path.GetRelativePath(executionContext.WorkingDirectory.FullName, settingsAppHost.FullName);
552logger.LogDebug("Skipping unsupported configured AppHost project {SettingsAppHost}", settingsAppHost.FullName);
589logger.LogWarning("Ignoring AppHost path '{AppHostPath}' from settings because no project handler can process it.", settingsAppHost.FullName);
623if (IsUnder(file.FullName, directory.FullName))
631return IsUnder(PathNormalizer.ResolveSymlinks(file.FullName), PathNormalizer.ResolveSymlinks(directory.FullName));
657logger.LogWarning("Ignoring AppHost path '{AppHostPath}' from settings because no project handler can process it.", settingsAppHost.FullName);
670logger.LogWarning("Ignoring AppHost path '{AppHostPath}' from settings because it is not supported in the current environment{MessageSuffix}.", settingsAppHost.FullName, messageSuffix);
678logger.LogWarning("AppHost path '{AppHostPath}' from settings could not be evaluated by MSBuild and may not be buildable{MessageSuffix}.", settingsAppHost.FullName, messageSuffix);
683logger.LogWarning("Ignoring AppHost path '{AppHostPath}' from settings because it is no longer a valid AppHost project{MessageSuffix}.", settingsAppHost.FullName, messageSuffix);
697aspireConfig = AspireConfigFile.Load(searchDirectory.FullName);
707var configFilePath = Path.Combine(searchDirectory.FullName, AspireConfigFile.FileName);
721: Path.Combine(searchDirectory.FullName, configAppHostPath);
727logger.LogInformation("Found AppHost path '{AppHostPath}' from config file in {Directory}", configAppHostPath, searchDirectory.FullName);
743var settingsFile = new FileInfo(ConfigurationHelper.BuildPathToSettingsJsonFile(searchDirectory.FullName));
754ReportInvalidConfigurationFileShape(settingsFile.FullName, silent);
762ReportInvalidConfiguredAppHostPathType(settingsFile.FullName, LegacySettingsAppHostPathKey, silent);
771if (!IsValidConfiguredAppHostPath(appHostPath, settingsFile.FullName, fieldName: LegacySettingsAppHostPathKey, silent: silent))
776var qualifiedAppHostPath = Path.IsPathRooted(appHostPath) ? appHostPath : Path.Combine(settingsFile.Directory!.FullName, appHostPath);
794interactionService.DisplayMessage(KnownEmojis.Warning, string.Format(CultureInfo.CurrentCulture, ErrorStrings.AppHostWasSpecifiedButDoesntExist, settingsFile.FullName, qualifiedAppHostPath));
803var message = string.Format(CultureInfo.CurrentCulture, ErrorStrings.InvalidJsonInConfigFile, settingsFile.FullName, ex.Message);
895if (Directory.Exists(projectFile.FullName))
897logger.LogDebug("Provided path {Path} is a directory, searching for project files recursively", projectFile.FullName);
898var directory = new DirectoryInfo(projectFile.FullName);
938unbuildableAppHost.FullName,
939directory.FullName);
959logger.LogError("No AppHost project files found in directory {Directory}", directory.FullName);
964logger.LogDebug("Found single AppHost project file {ProjectFile} in directory {Directory}", appHostProjects[0].FullName, directory.FullName);
971logger.LogDebug("Multiple AppHost project files found in directory {Directory}, prompting user to select", directory.FullName);
976file => $"{file.Name.EscapeMarkup()} ({Path.GetRelativePath(executionContext.WorkingDirectory.FullName, file.FullName).EscapeMarkup()})",
982logger.LogDebug("Multiple AppHost project files found in directory {Directory}, selecting none", directory.FullName);
987logger.LogError("Multiple AppHost project files found in directory {Directory}, throwing exception", directory.FullName);
992else if (File.Exists(projectFile.FullName))
998var resolvedProjectPath = PathNormalizer.ResolveToFilesystemPath(projectFile.FullName);
1000if (!string.Equals(resolvedProjectPath, projectFile.FullName, StringComparison.Ordinal))
1004projectFile.FullName,
1016logger.LogError("Project file {ProjectFile} does not exist.", projectFile.FullName);
1028logger.LogDebug("Using {Language} apphost {ProjectFile}", handler.DisplayName, projectFile.FullName);
1050projectFile.FullName);
1063return await UseOrFindAppHostProjectFileAsync(new FileInfo(parentDirectory.FullName), multipleAppHostProjectsFoundBehavior, createSettingsFile, displayProgress, cancellationToken);
1076logger.LogDebug("Using AppHost path from settings without scanning: {AppHost}", settingsAppHost.FullName);
1144|| results.BuildableAppHost.Any(c => string.Equals(c.AppHostFile.FullName, settingsAppHost.FullName, pathComparison))))
1151logger.LogDebug("Using previously-selected AppHost from settings: {AppHost}", settingsAppHost.FullName);
1160MultipleAppHostProjectsFoundBehavior.Prompt => await interactionService.PromptForSelectionAsync(InteractionServiceStrings.SelectAppHostToUse, results.BuildableAppHost.Select(c => c.AppHostFile).ToList(), projectFile => $"{projectFile.Name.EscapeMarkup()} ({Path.GetRelativePath(executionContext.WorkingDirectory.FullName, projectFile.FullName).EscapeMarkup()})", cancellationToken: cancellationToken),
1171&& string.Equals(selectedAppHost.FullName, settingsAppHost?.FullName, environment.IsWindows() ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal);
1184&& !allCandidates.Any(f => string.Equals(f.FullName, selectedAppHost.FullName, environment.IsWindows() ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)))
1238IsValidConfiguredAppHostPath(existingPath, settingsFile.FullName, AspireConfigAppHostPathKey, silent: true))
1241Path.IsPathRooted(existingPath) ? existingPath : Path.Combine(settingsFile.Directory!.FullName, existingPath));
1243if (IsSamePersistedAppHostPath(resolvedPath, projectFile.FullName, environment))
1247settingsFile.FullName,
1248projectFile.FullName);
1259projectFile.FullName,
1265logger.LogDebug("Creating settings file at {SettingsFilePath}", settingsFile.FullName);
1267var relativePathToProjectFile = Path.GetRelativePath(settingsFile.Directory!.FullName, projectFile.FullName).Replace(Path.DirectorySeparatorChar, '/');
1270await ConfigurationService.SetConfigurationInFileAsync(settingsFile.FullName, AspireConfigAppHostPathKey, relativePathToProjectFile, cancellationToken);
1276await ConfigurationService.SetConfigurationInFileAsync(settingsFile.FullName, "appHost.language", language.LanguageId.Value, cancellationToken);
1287await ConfigurationService.SetConfigurationInFileAsync(settingsFile.FullName, "sdk.version", inheritedSdkVersion, cancellationToken);
1292var relativeSettingsFilePath = Path.GetRelativePath(executionContext.WorkingDirectory.FullName, settingsFile.FullName).Replace(Path.DirectorySeparatorChar, '/');
1312targetSettingsFilePath = Path.Combine(parentDirectory.FullName, AspireConfigFile.FileName);
1322logger.LogDebug("Using existing config file at {Path}", configuredSettingsFile.FullName);
1328var newConfigPath = Path.Combine(configRoot.FullName, AspireConfigFile.FileName);
1339return AspireConfigFile.Load(configRoot.FullName);
1342var legacySettingsFile = new FileInfo(ConfigurationHelper.BuildPathToSettingsJsonFile(configRoot.FullName));
1348logger.LogInformation("Migrating legacy settings from {LegacyDir} to {ConfigFile}", configRoot.FullName, settingsFile.FullName);
1349return AspireConfigFile.LoadOrCreate(configRoot.FullName);
1374var normalizedSettingsPath = PathNormalizer.ResolveSymlinks(settingsFile.FullName)
1379return Path.Combine(executionContext.CacheDirectory.FullName, "workspace-config-locks", $"{lockFileName}.lock");
1390var userProfile = executionContext.HomeDirectory.FullName;
Projects\ProjectUpdater.cs (43)
34logger.LogDebug("Fetching '{AppHostPath}' items and properties.", projectFile.FullName);
40logger.LogInformation("No updates required for project: {ProjectFile}", projectFile.FullName);
50.GroupBy(step => step.ProjectFile.FullName)
101var fallbackNuGetConfigDirectory = executionContext.WorkingDirectory.FullName;
196throw new ProjectUpdaterException(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.FailedToRestoreAfterUpdateFormat, projectFile.FullName));
286var configToSave = AspireConfigFile.LoadOrCreate(configRoot.FullName);
289configToSave.Save(configRoot.FullName);
315var cacheKey = $"{ItemsAndPropertiesCacheKeyPrefix}_{projectFile.FullName}_{itemsKey}_{propertiesKey}";
324throw new ProjectUpdaterException(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.FailedFetchItemsAndPropertiesFormat, projectFile.FullName));
345logger.LogWarning("Falling back to parsing for '{ProjectFile}'. Reason: {Message}", projectFile.FullName, ex.Message);
359return string.Equals(projectFile.FullName, context.AppHostProjectFile.FullName, StringComparison.OrdinalIgnoreCase);
367var appHostProjectAnalyzeStep = new AnalyzeStep(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.AnalyzeProjectFormat, context.AppHostProjectFile.FullName), () => AnalyzeProjectAsync(context.AppHostProjectFile, context, cancellationToken));
403logger.LogDebug("Analyzing App Host SDK for: {AppHostFile}", context.AppHostProjectFile.FullName);
504projectDocument.Load(projectFile.FullName);
525propsDocument.Load(cpmInfo.DirectoryPackagesPropsFile.FullName);
546projectDocument.Load(projectFile.FullName);
551projectDocument.Save(projectFile.FullName);
583projectDocument.Load(projectFile.FullName);
693projectDocument.Load(projectFile.FullName);
698throw new ProjectUpdaterException(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.CouldNotFindRootProjectElementFormat, projectFile.FullName));
716throw new ProjectUpdaterException(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.CouldNotFindSdkElementFormat, projectFile.FullName));
739projectDocument.Save(projectFile.FullName);
832propsDocument.Load(cpmInfo.DirectoryPackagesPropsFile.FullName);
849propsDocument.Save(cpmInfo.DirectoryPackagesPropsFile.FullName);
862cpmInfo.DirectoryPackagesPropsFile.FullName,
870var fileContent = await File.ReadAllTextAsync(projectFile.FullName);
878"Could not find '#:sdk Aspire.AppHost.Sdk@<version>' directive in single-file AppHost: {0}", projectFile.FullName));
892await File.WriteAllTextAsync(projectFile.FullName, updatedContent);
909var fileContent = File.ReadAllText(projectFile.FullName);
922var fileContent = await File.ReadAllTextAsync(projectFile.FullName);
927await File.WriteAllTextAsync(projectFile.FullName, updatedContent);
933if (!context.VisitedProjects.Add(projectFile.FullName))
973context.AnalyzeSteps.Enqueue(new AnalyzeStep(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.AnalyzeProjectFormat, referencedProjectFile.FullName), () => AnalyzeProjectAsync(referencedProjectFile, context, cancellationToken)));
1033var directoryPackagesPropsPath = Path.Combine(current.FullName, "Directory.Packages.props");
1112doc.Load(directoryPackagesPropsFile.FullName);
1156logger.LogInformation(ex, "Ignoring parsing error in Directory.Packages.props '{DirectoryPackagesPropsFile}' for project '{ProjectFile}'", directoryPackagesPropsFile.FullName, projectFile.FullName);
1197logger.LogWarning(ex, "Exception while resolving MSBuild property '{PropertyName}' for project '{ProjectFile}'", propertyName, projectFile.FullName);
1210doc.Load(directoryPackagesPropsFile.FullName);
1215throw new ProjectUpdaterException(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.CouldNotFindPackageVersionInDirectoryPackagesProps, packageId, directoryPackagesPropsFile.FullName));
1219doc.Save(directoryPackagesPropsFile.FullName);
1243throw new ProjectUpdaterException(string.Format(CultureInfo.InvariantCulture, UpdateCommandStrings.FailedUpdatePackageReferenceFormat, package.Id, projectFile.FullName));
Projects\TypeScriptAppHostToolchainResolver.cs (11)
59if (File.Exists(Path.Combine(candidateDirectory.FullName, BunLockFileName)))
64if (File.Exists(Path.Combine(candidateDirectory.FullName, BunBinaryLockFileName)))
69if (File.Exists(Path.Combine(candidateDirectory.FullName, PnpmLockFileName)))
74var yarnLockFilePath = Path.Combine(candidateDirectory.FullName, YarnLockFileName);
85if (File.Exists(Path.Combine(candidateDirectory.FullName, YarnConfigFileName)))
90if (File.Exists(Path.Combine(candidateDirectory.FullName, PackageLockFileName)))
96return new(TypeScriptAppHostToolchain.Npm, $"no package manager marker found in {appHostDirectory.FullName} or an eligible parent directory");
302var packageJsonPath = Path.Combine(appHostDirectory.FullName, PackageJsonFileName);
427var parentPath = Path.TrimEndingDirectorySeparator(parentDirectory.FullName);
428if (string.Equals(parentPath, Path.TrimEndingDirectorySeparator(parentDirectory.Root.FullName), pathComparison))
440return new(toolchain, $"{markerName} found in {directory.FullName}");
Scaffolding\ScaffoldingService.cs (23)
92var config = AspireConfigFile.LoadOrCreate(directory.FullName, sdkVersion);
121config.Save(directory.FullName);
126var integrations = config.GetIntegrationReferences(sdkVersion, directory.FullName).ToList();
133Directory.CreateDirectory(scaffoldDirectory.FullName);
135var appHostServerProject = await _appHostServerProjectFactory.CreateAsync(scaffoldDirectory.FullName, cancellationToken);
164scaffoldDirectory.FullName,
169var conflictingFiles = GetConflictingScaffoldFiles(scaffoldDirectory.FullName, scaffoldFiles.Keys);
174scaffoldDirectory.FullName,
184var filePath = Path.Combine(scaffoldDirectory.FullName, fileName);
225scaffoldDirectory.FullName,
242var appHostRunPath = Path.Combine(scaffoldDirectory.FullName, "apphost.run.json");
262config.Save(directory.FullName);
268if (IsTypeScriptLanguage(language) && File.Exists(Path.Combine(directory.FullName, PackageJsonFileName)))
272return new DirectoryInfo(Path.Combine(directory.FullName, BrownfieldTypeScriptAppHostDirectoryName));
282return Path.Combine(scaffoldDirectory.FullName, appHostFileName);
288rootDirectory.FullName.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar),
289scaffoldDirectory.FullName.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar),
294var packageJsonPath = Path.Combine(rootDirectory.FullName, PackageJsonFileName);
311var relativeAppHostDirectory = PathNormalizer.NormalizePathForStorage(Path.GetRelativePath(rootDirectory.FullName, appHostDirectory.FullName));
369Path.GetRelativePath(rootDirectory.FullName, Path.Combine(scaffoldDirectory.FullName, appHostFileName)));
509!File.Exists(Path.Combine(directory.FullName, PackageJsonFileName)) ||
Templating\CliTemplateFactory.cs (13)
122(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
131(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
142(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
153(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
164(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
175(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
186(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
197(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
210(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
219(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
264_executionContext.WorkingDirectory.FullName,
268var outputPathValidator = OutputPathHelper.CreateOutputPathValidator(_executionContext.WorkingDirectory.FullName);
380var currentDir = _executionContext.WorkingDirectory.FullName;
Templating\DotNetTemplateFactory.cs (14)
103var sdkInstallPath = Path.Combine(executionContext.SdksDirectory.FullName, "dotnet", DotNetSdkInstaller.MinimumSdkVersion);
136(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
145(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
156(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
166(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
175(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
186(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
196(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
206(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
219(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
240(ctx, projectName) => OutputPathHelper.GetUniqueDefaultOutputPath(projectName, ctx.WorkingDirectory.FullName),
421executionContext.WorkingDirectory.FullName,
616executionContext.WorkingDirectory.FullName,
620var validator = OutputPathHelper.CreateOutputPathValidator(executionContext.WorkingDirectory.FullName);
Aspire.Acquisition.Tests (9)
Aspire.Cli.EndToEnd.Tests (246)
AgentCommandTests.cs (6)
91var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".mcp.json");
146var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".mcp.json");
182var vscodePath = Path.Combine(workspace.WorkspaceRoot.FullName, ".vscode");
215var skillFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", "aspire", "SKILL.md");
218var deploymentSkillFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", "aspire-deployment", "SKILL.md");
262var skillsRoot = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills");
Helpers\CliInstallStrategyTests.cs (28)
49(CliE2ETestHelpers.CliArchiveDirEnvironmentVariableName, tempDir.FullName),
56Assert.Equal(tempDir.FullName, strategy.ArchiveDir);
77(CliE2ETestHelpers.CliArchiveDirEnvironmentVariableName, tempDir.FullName),
84Assert.Equal(tempDir.FullName, strategy.ArchiveDir);
124(CliE2ETestHelpers.CliArchiveDirEnvironmentVariableName, tempDir.FullName));
131Assert.Contains($"{tempDir.FullName}:/tmp/aspire-cli-archives:ro", options.Volumes);
451("ASPIRE_E2E_DOTNET_TOOL_SOURCE", tempDir.FullName),
465Assert.Equal(tempDir.FullName, strategy.NupkgSourcePath);
480File.WriteAllText(Path.Combine(tempDir.FullName, "Aspire.Cli.13.3.0-preview.1.25175.1.nupkg"), "");
481File.WriteAllText(Path.Combine(tempDir.FullName, "Aspire.Cli.linux-x64.13.3.0-preview.1.25175.1.nupkg"), "");
485("ASPIRE_E2E_DOTNET_TOOL_SOURCE", tempDir.FullName),
499Assert.Equal(tempDir.FullName, strategy.NupkgSourcePath);
645var strategy = CliInstallStrategy.FromDotnetToolLocalSource(tempDir.FullName, "13.3.0");
694var strategy = CliInstallStrategy.FromDotnetToolLocalSource(tempDir.FullName, "13.3.0");
749(CliE2ETestHelpers.CliArchiveDirEnvironmentVariableName, tempDir.FullName),
756Assert.Equal(tempDir.FullName, strategy.ArchiveDir);
777File.WriteAllText(Path.Combine(tempDir.FullName, "Aspire.Cli.13.3.0-preview.1.12345.1.nupkg"), "");
779var strategy = CliInstallStrategy.FromLocalArchive(tempDir.FullName);
795File.WriteAllText(Path.Combine(tempDir.FullName, "Aspire.Cli.linux-x64.13.3.0.nupkg"), "");
797var strategy = CliInstallStrategy.FromLocalArchive(tempDir.FullName);
813File.WriteAllText(Path.Combine(tempDir.FullName, "Aspire.Cli.13.3.0.nupkg"), "");
814File.WriteAllText(Path.Combine(tempDir.FullName, "Aspire.Cli.13.4.0.nupkg"), "");
816var exception = Assert.Throws<InvalidOperationException>(() => CliInstallStrategy.FromLocalArchive(tempDir.FullName));
833File.WriteAllText(Path.Combine(tempDir.FullName, "Aspire.Cli.linux-x64.13.3.0.nupkg"), "");
835var exception = Assert.Throws<InvalidOperationException>(() => CliInstallStrategy.FromDotnetToolLocalSource(tempDir.FullName));
854("ASPIRE_E2E_DOTNET_TOOL_SOURCE", nupkgDir.FullName),
861(CliE2ETestHelpers.CliArchiveDirEnvironmentVariableName, archiveDir.FullName),
868Assert.Equal(nupkgDir.FullName, strategy.NupkgSourcePath);
JavaScriptPublishTests.cs (8)
52CliE2ETestHelpers.WriteLocalChannelSettings(workspace.WorkspaceRoot.FullName, localChannel.SdkVersion);
114CliE2ETestHelpers.WriteLocalChannelSettings(workspace.WorkspaceRoot.FullName, localChannel.SdkVersion);
145var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
178var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
213var appDir = Path.Combine(workspace.WorkspaceRoot.FullName, appName);
277File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "verify-runtime.sh"), $$"""
330File.Copy(file, Path.Combine(workspace.WorkspaceRoot.FullName, Path.GetFileName(file)));
336var targetDir = Path.Combine(workspace.WorkspaceRoot.FullName, Path.GetFileName(fixtureDir));
TypeScriptCodegenValidationTests.cs (9)
53TypeScriptAppHostToolchainTestHelpers.SetPackageManager(workspace.WorkspaceRoot.FullName, toolchain, cleanInstallState: true);
61CliE2ETestHelpers.WriteLocalChannelSettings(workspace.WorkspaceRoot.FullName, localChannel.SdkVersion);
80workspace.WorkspaceRoot.FullName,
93var modulesDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "modules");
164var modulesDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "modules");
225var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json");
238var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
289var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
371var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
TypeScriptPolyglotTests.cs (15)
61TypeScriptAppHostToolchainTestHelpers.SetPackageManager(workspace.WorkspaceRoot.FullName, toolchain, cleanInstallState: true);
69CliE2ETestHelpers.WriteLocalChannelSettings(workspace.WorkspaceRoot.FullName, localChannel.SdkVersion);
80var viteProjectRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "viteapp");
96var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
120workspace.WorkspaceRoot.FullName,
184TypeScriptAppHostToolchainTestHelpers.SetPackageManager(workspace.WorkspaceRoot.FullName, appHostToolchain, cleanInstallState: true);
188CliE2ETestHelpers.WriteLocalChannelSettings(workspace.WorkspaceRoot.FullName, localChannel.SdkVersion);
195var viteProjectRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "viteapp");
206var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
226workspace.WorkspaceRoot.FullName,
270TypeScriptAppHostToolchainTestHelpers.SetPackageManager(workspace.WorkspaceRoot.FullName, toolchain, cleanInstallState: true);
274CliE2ETestHelpers.WriteLocalChannelSettings(workspace.WorkspaceRoot.FullName, localChannel.SdkVersion);
282workspace.WorkspaceRoot.FullName,
331Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"),
352var projectRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "packages", "brownfield");
TypeScriptPublishTests.cs (9)
62var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
125CliE2ETestHelpers.WriteLocalChannelSettings(workspace.WorkspaceRoot.FullName, localChannel.SdkVersion);
147var artifactsPath = Path.Combine(workspace.WorkspaceRoot.FullName, "artifacts");
238var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
266var dockerComposePath = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-output", "docker-compose.yaml");
313var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
344var envFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "artifacts", ".env");
354var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts");
388Path.Combine(workspace.WorkspaceRoot.FullName, fixtureName));
TypeScriptReusablePackageTests.cs (15)
31var appDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "app"));
32var helperDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "packages", "aspire-commands"));
35await auto.TypeAsync($"cd {CliE2ETestHelpers.ToContainerPath(appDirectory.FullName, workspace)}");
44var appAppHostPath = Path.Combine(appDirectory.FullName, "apphost.mts");
57var helperAppHostPath = Path.Combine(helperDirectory.FullName, "apphost.mts");
60await auto.TypeAsync($"cd {CliE2ETestHelpers.ToContainerPath(helperDirectory.FullName, workspace)}");
69var helperModulesDirectory = Path.Combine(helperDirectory.FullName, ".aspire", "modules");
77await auto.TypeAsync($"cd {CliE2ETestHelpers.ToContainerPath(appDirectory.FullName, workspace)}");
93var configPath = Path.Combine(appDirectory.FullName, "aspire.config.json");
101File.WriteAllText(Path.Combine(appDirectory.FullName, "apphost.mts"), """
113File.WriteAllText(Path.Combine(appDirectory.FullName, "tsconfig.json"), """
141File.WriteAllText(Path.Combine(helperDirectory.FullName, "aspire.config.json"), $$"""
155File.WriteAllText(Path.Combine(helperDirectory.FullName, "package.json"), """
171File.WriteAllText(Path.Combine(helperDirectory.FullName, "tsconfig.json"), """
194File.WriteAllText(Path.Combine(helperSourceDirectory.FullName, "index.ts"), """
Aspire.Cli.Tests (3910)
Acquisition\IdentityResolverTests.cs (19)
27WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","channel":"staging"}""");
42WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","channel":"staging"}""");
85WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","channel":"staging"}""");
170WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","version":"garbage"}""");
270WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","nugetServiceIndexOverride":"http://sidecar/v3/index.json"}""");
285WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","nugetServiceIndexOverride":"http://proxy.local/v3/index.json"}""");
311WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","packages":"/sidecar/packages"}""");
326WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script","packages":"/sidecar/packages"}""");
376WriteSidecar(workspace.WorkspaceRoot.FullName, JsonSerializer.Serialize(sidecar));
408workspace.WorkspaceRoot.FullName,
431WriteSidecar(workspace.WorkspaceRoot.FullName, """{"source":"script"}""");
451workspace.WorkspaceRoot.FullName,
458[IdentityResolver.PackagesEnvVar] = packagesDirectory.FullName,
467Assert.Equal(packagesDirectory.FullName, context.IdentityPackagesDirectory!.FullName);
517IdentityField.Packages => workspace.CreateDirectory("identity-packages").FullName,
566workspace.WorkspaceRoot.FullName,
580logsDirectory: Path.Combine(workspace.WorkspaceRoot.FullName, "logs"),
581logFilePath: Path.Combine(workspace.WorkspaceRoot.FullName, "logs", "test.log"),
Acquisition\InstallationDiscoveryDiscoverAllTests.cs (31)
39var pathDir = Path.Combine(workspace.WorkspaceRoot.FullName, "no-sidecar-bin");
69var pathDir = Path.Combine(workspace.WorkspaceRoot.FullName, "unreadable-bin");
101var pathDir = Path.Combine(workspace.WorkspaceRoot.FullName, "malformed-bin");
128var binDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "bin");
163var firstPathDir = Path.Combine(workspace.WorkspaceRoot.FullName, "path-first");
164var secondPathDir = Path.Combine(workspace.WorkspaceRoot.FullName, "path-second");
165var offPathDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "bin");
218var binDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "bin");
249var binDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "bin");
276var prDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "dogfood", "pr-9999", "bin");
300var binDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "bin");
322var binDir = Path.Combine(workspace.WorkspaceRoot.FullName, hasInstallMetadata ? "metadata-bin" : "no-metadata-bin");
366var prDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "dogfood", "pr-12345", "bin");
400var prDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "dogfood", "pr-12345", "bin");
435var brewDir = Path.Combine(workspace.WorkspaceRoot.FullName, "Caskroom", "aspire", "13.4.0-pr.17115.gcd700928");
471var brewDir = Path.Combine(workspace.WorkspaceRoot.FullName, "Caskroom", "aspire", "13.4.0");
509var binary = Path.Combine(workspace.WorkspaceRoot.FullName, "dogfood", labelName, "bin", "aspire");
523var binary = Path.Combine(workspace.WorkspaceRoot.FullName, "staging", "pr-1234", "bin", "aspire");
534var binary = Path.Combine(workspace.WorkspaceRoot.FullName, "dogfood", "pr-9876", "bin", "aspire");
574var pathDir = Path.Combine(workspace.WorkspaceRoot.FullName, "no-sidecar-bin");
606var staleDogfoodDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "dogfood", "pr-9999");
637var dogfoodRoot = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "dogfood");
680var toolStore = Path.Combine(workspace.WorkspaceRoot.FullName, ".dotnet", "tools", ".store", "aspire.cli");
762var releaseBinDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "bin");
792var releaseBinDir = Path.Combine(aspireHome.FullName, "bin");
815logFilePath: Path.Combine(root.FullName, "test.log"),
847var binDir = Path.Combine(workspace.WorkspaceRoot.FullName, "firmlink-self-bin");
922var binDir = Path.Combine(workspace.WorkspaceRoot.FullName, "hint-bin");
925var fakeCanonical = Path.Combine(workspace.WorkspaceRoot.FullName, "deliberately-different-canonical-path", "aspire");
958return resolved?.FullName ?? Path.GetFullPath(path);
996logFilePath: Path.Combine(root.FullName, "test.log"),
Acquisition\InstallSidecarReaderTests.cs (29)
31WriteSidecar(workspace.WorkspaceRoot.FullName, $"{{\"source\":\"{wireValue}\"}}");
34var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
45var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, InstallSidecarReader.SidecarFileName);
48var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
76var sidecarPath = WriteSidecar(workspace.WorkspaceRoot.FullName, "{\"source\":\"script\"}");
84var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
100var sidecarPath = WriteSidecar(workspace.WorkspaceRoot.FullName, "{not valid json");
103var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
123WriteSidecar(workspace.WorkspaceRoot.FullName, sidecarBody);
126var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
137WriteSidecar(workspace.WorkspaceRoot.FullName, "{\"source\":\"script\"}");
140var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
143var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, InstallSidecarReader.SidecarFileName);
151var sidecarPath = WriteSidecar(workspace.WorkspaceRoot.FullName, "{\"source\":\"script\"}");
162var sidecarPath = Path.Combine(workspace.WorkspaceRoot.FullName, InstallSidecarReader.SidecarFileName);
173var sidecarPath = WriteSidecar(workspace.WorkspaceRoot.FullName, "{not valid json");
190var sidecarPath = WriteSidecar(workspace.WorkspaceRoot.FullName, "{\"source\":\"script\"}");
235var sidecarPath = Path.Combine(workspace.WorkspaceRoot.FullName, InstallSidecarReader.SidecarFileName);
240var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
251var sidecarPath = Path.Combine(workspace.WorkspaceRoot.FullName, InstallSidecarReader.SidecarFileName);
267var sidecarPath = Path.Combine(workspace.WorkspaceRoot.FullName, InstallSidecarReader.SidecarFileName);
272var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
285var sidecarPath = Path.Combine(workspace.WorkspaceRoot.FullName, InstallSidecarReader.SidecarFileName);
300WriteSidecar(workspace.WorkspaceRoot.FullName, "{\"source\":\"script\",\"futureField\":\"value\",\"nested\":{\"a\":1,\"b\":[1,2]}}");
303var result = reader.TryRead(workspace.WorkspaceRoot.FullName);
320workspace.WorkspaceRoot.FullName,
332var ok = Assert.IsType<InstallSidecarReadResult.Ok>(reader.TryRead(workspace.WorkspaceRoot.FullName));
349WriteSidecar(workspace.WorkspaceRoot.FullName, "{\"source\":\"script\"}");
352var ok = Assert.IsType<InstallSidecarReadResult.Ok>(reader.TryRead(workspace.WorkspaceRoot.FullName));
Agents\AspireSkillsInstallerTests.cs (19)
85var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
443var cachedBundleDirectory = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills", AspireSkillsInstaller.Version);
555executionContext.CacheDirectory.FullName,
592var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
637var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
684var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
753var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
879executionContext.CacheDirectory.FullName,
897var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
944var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
951var staleDirectory = Directory.CreateDirectory(Path.Combine(cacheRoot, $"{prefix}stale")).FullName;
954recentDirectories.Add(Directory.CreateDirectory(Path.Combine(cacheRoot, $"{prefix}recent")).FullName);
1016var cacheRoot = Path.Combine(executionContext.CacheDirectory.FullName, "aspire-skills");
1459Directory.Move(stageDirectory.FullName, targetDirectory);
2147executionContext.CacheDirectory.FullName,
2203return Directory.CreateTempSubdirectory("aspire-skills-installer-test-").FullName;
2282Directory.CreateDirectory(bundleDirectory.FullName);
2283var archivePath = Path.Combine(bundleDirectory.FullName, $".test-embedded-{Guid.NewGuid():N}.tgz");
2313archive.FullName,
Agents\TelemetryHookConfiguratorTests.cs (16)
27var hookFile = Path.Combine(home.FullName, ".copilot", "hooks", "aspire-telemetry.json");
52["COPILOT_HOME"] = copilotHome.FullName,
57Assert.True(File.Exists(Path.Combine(copilotHome.FullName, "hooks", "aspire-telemetry.json")));
58Assert.False(Directory.Exists(Path.Combine(home.FullName, ".copilot")));
117var claudeDirectory = Directory.CreateDirectory(Path.Combine(home.FullName, ".claude"));
118var settingsPath = Path.Combine(claudeDirectory.FullName, "settings.json");
156var claudeDirectory = Directory.CreateDirectory(Path.Combine(home.FullName, ".claude"));
157var settingsPath = Path.Combine(claudeDirectory.FullName, "settings.json");
175var claudeDirectory = Directory.CreateDirectory(Path.Combine(home.FullName, ".claude"));
176var settingsPath = Path.Combine(claudeDirectory.FullName, "settings.json");
192var claudeDirectory = Directory.CreateDirectory(Path.Combine(home.FullName, ".claude"));
193var settingsPath = Path.Combine(claudeDirectory.FullName, "settings.json");
221Assert.False(Directory.Exists(Path.Combine(home.FullName, ".aspire", "hooks")));
222Assert.False(Directory.Exists(Path.Combine(home.FullName, ".copilot")));
223Assert.False(Directory.Exists(Path.Combine(home.FullName, ".claude")));
228var settingsPath = Path.Combine(home.FullName, ".claude", "settings.json");
Backchannel\AppHostConnectionResolverTests.cs (20)
70var resolvedProjectPath = PathNormalizer.ResolveSymlinks(projectFile.FullName);
129new FileInfo(appHostDirectory.FullName),
166new FileInfo(appHostDirectory.FullName),
200new FileInfo(appHostDirectory.FullName),
291var realProjectFile = new FileInfo(Path.Combine(realDirectory.FullName, "TestAppHost.csproj"));
292File.WriteAllText(realProjectFile.FullName, "<Project />");
295var symlinkDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "link");
296Directory.CreateSymbolicLink(symlinkDirectory, realDirectory.FullName);
301var canonicalPath = PathNormalizer.ResolveSymlinks(projectFileViaSymlink.FullName);
334Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".git"));
340var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj");
445Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".git"));
451var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj");
504var commonGitDirectory = Path.Combine(primaryCheckout.FullName, ".git");
506var worktreeRoot = Directory.CreateDirectory(Path.Combine(primaryCheckout.FullName, ".worktrees", "feature")).FullName;
514var projectFile = new FileInfo(Path.Combine(directory.FullName, fileName));
515File.WriteAllText(projectFile.FullName, "<Project />");
521var backchannelsDir = Path.Combine(homeDirectory.FullName, ".aspire", "cli", "bch");
524var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(appHostPath, homeDirectory.FullName);
Backchannel\AuxiliaryBackchannelMonitorTests.cs (15)
24var realDirectory = Directory.CreateDirectory(Path.Combine(tempRoot.FullName, "real"));
25var symlinkDirectory = Path.Combine(tempRoot.FullName, "link");
26Directory.CreateSymbolicLink(symlinkDirectory, realDirectory.FullName);
29var appHostPathViaReal = Path.Combine(realDirectory.FullName, "apphost.cs");
34Assert.True(AuxiliaryBackchannelMonitor.IsAppHostInScopeOfDirectory(appHostPathViaSymlink, realDirectory.FullName));
48var workingDirectory = Directory.CreateDirectory(Path.Combine(tempRoot.FullName, "wd")).FullName;
49var outsideAppHost = Path.Combine(tempRoot.FullName, "other", "apphost.cs");
72var primaryRoot = tempRoot.FullName;
74var worktreeRoot = Directory.CreateDirectory(Path.Combine(primaryRoot, ".worktrees", "feature")).FullName;
97var primaryRoot = tempRoot.FullName;
99var submoduleRoot = Directory.CreateDirectory(Path.Combine(primaryRoot, "extern", "dep")).FullName;
119var primaryRoot = tempRoot.FullName;
121var worktreeRoot = Directory.CreateDirectory(Path.Combine(primaryRoot, ".worktrees", "feature")).FullName;
123var submoduleRoot = Directory.CreateDirectory(Path.Combine(worktreeRoot, "extern", "dep")).FullName;
Caching\AppHostInfoDiskCacheTests.cs (103)
29var globalSettingsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json"));
36var path = Path.Combine(workspace.WorkspaceRoot.FullName, name);
58var cacheDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cache", "apphost-info");
75var freshProject = new FileInfo(projectFile.FullName);
97var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
152File.WriteAllText(projectFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\" />\n<!-- edit -->");
153File.SetLastWriteTimeUtc(projectFile.FullName, DateTime.UtcNow.AddSeconds(2));
155var freshProject = new FileInfo(projectFile.FullName);
170var objDir = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "obj"));
171var assetsPath = Path.Combine(objDir.FullName, "project.assets.json");
174var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
189File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"), "<Project />");
191var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
199File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), """
212var cacheDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cache", "apphost-info");
249var cacheDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cache", "apphost-info");
252var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
267File.WriteAllText(projectFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\" />\n<!-- edit -->");
268File.SetLastWriteTimeUtc(projectFile.FullName, DateTime.UtcNow.AddSeconds(2));
270await cache.SetAsync(new FileInfo(projectFile.FullName), expectedKey, SampleEntry(), CancellationToken.None).DefaultTimeout();
272var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
288var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "src", "MyHost"));
289var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
290File.WriteAllText(projectFile.FullName, """
296var commonProps = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Common.props");
300Assert.NotNull(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
311var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
325File.WriteAllText(projectFile.FullName, """
331await cache.SetAsync(new FileInfo(projectFile.FullName), cache.GetCacheKey(projectFile), SampleEntry(), CancellationToken.None).DefaultTimeout();
332var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
352var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "proj"));
353var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
354File.WriteAllText(projectFile.FullName, """
358File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "Directory.Build.props"), """
364var sharedDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "shared"));
365var sharedProps = Path.Combine(sharedDirectory.FullName, "Directory.Build.props");
369Assert.NotNull(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
380var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
389var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "proj"));
390var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
391File.WriteAllText(projectFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\" />");
392File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "Directory.Build.props"), """
398var sharedDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "shared"));
399var sharedProps = Path.Combine(sharedDirectory.FullName, "Directory.Build.props");
403Assert.NotNull(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
414Assert.Null(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
422var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "proj"));
423var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
424File.WriteAllText(projectFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\" />");
425File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "Directory.Build.props"), """
433Assert.Null(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
447var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "proj"));
448var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
449File.WriteAllText(projectFile.FullName, """
453File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "Directory.Build.props"), """
460var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
476var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "src", "MyHost"));
477var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
478File.WriteAllText(projectFile.FullName, """
484File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Common"), "");
485var commonProps = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Common.props");
489Assert.NotNull(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
500var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
513File.WriteAllText(projectFile.FullName, """
519await cache.SetAsync(new FileInfo(projectFile.FullName), cache.GetCacheKey(projectFile), SampleEntry(), CancellationToken.None).DefaultTimeout();
520var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
532File.WriteAllText(projectFile.FullName, """
540Assert.Null(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
556var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "proj"));
557var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
558File.WriteAllText(projectFile.FullName, """
562File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Build.props"), """
567File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "repo", "Directory.Build.props"), """
577var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
592var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "src", "MyHost"));
593var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyHost.csproj"));
594File.WriteAllText(projectFile.FullName, """
600File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "Repo.marker"), "");
601var customProps = Path.Combine(workspace.WorkspaceRoot.FullName, "Custom.props");
605Assert.NotNull(await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout());
616var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
630File.WriteAllText(projectFile.FullName, """
636await cache.SetAsync(new FileInfo(projectFile.FullName), cache.GetCacheKey(projectFile), SampleEntry(), CancellationToken.None).DefaultTimeout();
637var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
654File.WriteAllText(projectFile.FullName, """
660await cache.SetAsync(new FileInfo(projectFile.FullName), cache.GetCacheKey(projectFile), SampleEntry(), CancellationToken.None).DefaultTimeout();
662var hit = await cache.TryGetAsync(new FileInfo(projectFile.FullName), CancellationToken.None).DefaultTimeout();
672var key1 = AppHostInfoDiskCache.ComputeKeyAsync(new FileInfo(projectFile.FullName), new TestEnvironment());
673var key2 = AppHostInfoDiskCache.ComputeKeyAsync(new FileInfo(projectFile.FullName), new TestEnvironment());
707var fullPath = projectFile.FullName;
722var projectDir = workspace.WorkspaceRoot.FullName;
725projectDir = Directory.CreateDirectory(Path.Combine(projectDir, $"level-{i}")).FullName;
729File.WriteAllText(projectFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\" />");
732File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Build.props"), "<Project />");
733var keyAfterImport = AppHostInfoDiskCache.ComputeKeyAsync(new FileInfo(projectFile.FullName), new TestEnvironment());
743var parentImport = Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Build.props");
746var repoRoot = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "worktree-root"));
748Path.Combine(repoRoot.FullName, ".git"),
749$"gitdir: {Path.Combine(workspace.WorkspaceRoot.FullName, ".git", "worktrees", "worktree-root")}");
751var projectDir = Directory.CreateDirectory(Path.Combine(repoRoot.FullName, "src", "AppHost"));
752var projectFile = new FileInfo(Path.Combine(projectDir.FullName, "AppHost.csproj"));
753File.WriteAllText(projectFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\" />");
760var keyAfterParentImportEdit = AppHostInfoDiskCache.ComputeKeyAsync(new FileInfo(projectFile.FullName), new TestEnvironment());
Certificates\UnixCertificateManagerTests.cs (35)
23var nssDbDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "nssdb"));
24var parentPidFile = Path.Combine(tempDirectory.FullName, "certutil-parent.pid");
25var childPidFile = Path.Combine(tempDirectory.FullName, "certutil-child.pid");
35["PATH"] = tempDirectory.FullName,
36["SSL_CERT_DIR"] = tempDirectory.FullName,
37["DOTNET_DEV_CERTS_NSSDB_PATHS"] = nssDbDirectory.FullName
39var manager = new UnixCertificateManager(NullLogger.Instance, environment, _ => new ProcessStartInfo(certUtilFile.FullName)
75var nssDbDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "nssdb"));
82["PATH"] = tempDirectory.FullName,
83["SSL_CERT_DIR"] = tempDirectory.FullName,
84["DOTNET_DEV_CERTS_NSSDB_PATHS"] = nssDbDirectory.FullName
86var manager = new UnixCertificateManager(NullLogger.Instance, environment, _ => new ProcessStartInfo(certUtilFile.FullName)
117["PATH"] = Path.Combine(openSslDirectory.FullName, "missing-tools"),
118["SSL_CERT_DIR"] = openSslDirectory.FullName,
119["DOTNET_DEV_CERTS_NSSDB_PATHS"] = Path.Combine(openSslDirectory.FullName, "missing-nss-db")
125var certificatePath = Path.Combine(openSslDirectory.FullName, $"aspnetcore-localhost-{certificate.Thumbprint}.pem");
152["PATH"] = Path.Combine(corruptOpenSslDirectory.FullName, "missing-tools"),
153["SSL_CERT_DIR"] = string.Join(Path.PathSeparator, corruptOpenSslDirectory.FullName, validOpenSslDirectory.FullName),
154["DOTNET_DEV_CERTS_NSSDB_PATHS"] = Path.Combine(corruptOpenSslDirectory.FullName, "missing-nss-db")
161File.WriteAllText(Path.Combine(corruptOpenSslDirectory.FullName, certificateFileName), "not a certificate");
162File.WriteAllText(Path.Combine(validOpenSslDirectory.FullName, certificateFileName), certificate.ExportCertificatePem());
187["PATH"] = Path.Combine(openSslDirectory.FullName, "missing-tools"),
188["DOTNET_DEV_CERTS_NSSDB_PATHS"] = Path.Combine(openSslDirectory.FullName, "missing-nss-db"),
189[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = openSslDirectory.FullName
196var certificatePath = Path.Combine(openSslDirectory.FullName, $"aspnetcore-localhost-{savedCertificate.Thumbprint}.pem");
222["PATH"] = Path.Combine(nssDbDirectory.FullName, "missing-certutil"),
223["DOTNET_DEV_CERTS_NSSDB_PATHS"] = nssDbDirectory.FullName,
224[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = openSslDirectory.FullName
249var certUtilFile = new FileInfo(Path.Combine(directory.FullName, "certutil"));
256await File.WriteAllTextAsync(certUtilFile.FullName, script);
258certUtilFile.FullName,
273var certUtilFile = new FileInfo(Path.Combine(directory.FullName, "certutil"));
281await File.WriteAllTextAsync(certUtilFile.FullName, script);
283certUtilFile.FullName,
CliBootstrapTests.cs (12)
122var installPrefix = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-pr-test");
135var installPrefix = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-pr-test");
156Assert.Equal(Path.Combine(installPrefix, "hives"), context.HivesDirectory.FullName);
157Assert.Equal(Path.Combine(installPrefix, "cache"), context.CacheDirectory.FullName);
158Assert.Equal(Path.Combine(installPrefix, "sdks"), context.SdksDirectory.FullName);
159Assert.Equal(Path.Combine(installPrefix, "packages"), context.PackagesDirectory?.FullName);
160Assert.Equal(installPrefix, context.AspireHomeDirectory.FullName);
161Assert.Equal(logsDirectory, context.LogsDirectory.FullName);
185logsDirectory: Path.Combine(workspace.WorkspaceRoot.FullName, "logs"),
186logFilePath: Path.Combine(workspace.WorkspaceRoot.FullName, "logs", "aspire.log"),
207logsDirectory: Path.Combine(workspace.WorkspaceRoot.FullName, "logs"),
208logFilePath: Path.Combine(workspace.WorkspaceRoot.FullName, "logs", "aspire.log"),
Commands\AddCommandTests.cs (89)
388var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
389File.WriteAllText(appHostFile.FullName, string.Empty);
390File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), """
432var result = command.Parse($"integration search redis --apphost \"{appHostFile.FullName}\" --format json");
461var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
462File.WriteAllText(appHostFile.FullName, string.Empty);
463File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), """
504var result = command.Parse($"integration search redis --apphost \"{appHostFile.FullName}\" --format json");
542var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
543File.WriteAllText(appHostFile.FullName, string.Empty);
544File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), """
591var result = command.Parse($"integration search foundry --apphost \"{appHostFile.FullName}\" --format json");
641var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
642File.WriteAllText(appHostFile.FullName, string.Empty);
645File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), $$"""
686var result = command.Parse($"integration search redis --apphost \"{appHostFile.FullName}\" --format json");
724var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "elsewhere"));
725var appHostFile = new FileInfo(Path.Combine(projectDirectory.FullName, "apphost.ts"));
726File.WriteAllText(appHostFile.FullName, string.Empty);
727File.WriteAllText(Path.Combine(projectDirectory.FullName, AspireConfigFile.FileName), """
748var result = command.Parse($"integration search redis --apphost \"{appHostFile.FullName}\" --format json");
769var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
770File.WriteAllText(appHostFile.FullName, string.Empty);
797var result = command.Parse($"integration search redis --apphost \"{appHostFile.FullName}\" --format json");
842var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
843File.WriteAllText(appHostFile.FullName, string.Empty);
844File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), """
880var result = command.Parse($"integration search foundry --apphost \"{appHostFile.FullName}\" --format json");
912Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives", "test-hive"));
2490var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, isTypeScript ? "apphost.ts" : "AppHost.csproj"));
2491File.WriteAllText(appHostFile.FullName, isTypeScript ? string.Empty : "<Project />");
2495File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), $$"""
2504var hivesDirectory = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
2515CanHandleCallback = file => string.Equals(file.FullName, appHostFile.FullName, StringComparison.Ordinal),
2569var result = command.Parse($"add {packageId} --apphost \"{appHostFile.FullName}\"");
2599var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
2600File.WriteAllText(appHostFile.FullName, string.Empty);
2601File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), """
2641var result = command.Parse($"add Aspire.Hosting.Azure.Storage --apphost \"{appHostFile.FullName}\"");
2714var hivesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
2786var hivesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
2811var localPackagesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives", PackageChannelNames.Local, "packages"));
2814File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.{cliVersion}.nupkg"), string.Empty);
2815File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.Redis.{cliVersion}.nupkg"), string.Empty);
2846var hivesRoot = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
2847var localPackagesDir = new DirectoryInfo(Path.Combine(hivesRoot.FullName, PackageChannelNames.Local, "packages"));
2848var prPackagesDir = new DirectoryInfo(Path.Combine(hivesRoot.FullName, "pr-12345", "packages"));
2852File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.{cliVersion}.nupkg"), string.Empty);
2853File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.Redis.{cliVersion}.nupkg"), string.Empty);
2855File.WriteAllText(Path.Combine(prPackagesDir.FullName, $"Aspire.Hosting.{staleVersion}.nupkg"), string.Empty);
2856File.WriteAllText(Path.Combine(prPackagesDir.FullName, $"Aspire.Hosting.Redis.{staleVersion}.nupkg"), string.Empty);
2882File.WriteAllText(Path.Combine(identityPackagesDir.FullName, $"Aspire.Hosting.{cliVersion}.nupkg"), string.Empty);
2883File.WriteAllText(Path.Combine(identityPackagesDir.FullName, $"Aspire.Hosting.Redis.{cliVersion}.nupkg"), string.Empty);
3010var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3011File.WriteAllText(appHostFile.FullName, string.Empty);
3045var result = command.Parse($"add Aspire.Hosting.Foo --apphost \"{appHostFile.FullName}\"");
3060var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3061File.WriteAllText(appHostFile.FullName, string.Empty);
3095var result = command.Parse($"add Aspire.Hosting.Redis --apphost \"{appHostFile.FullName}\"");
3110var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3111File.WriteAllText(appHostFile.FullName, string.Empty);
3145var result = command.Parse($"add Aspire.Hosting.Foo --all --apphost \"{appHostFile.FullName}\"");
3164var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3165File.WriteAllText(appHostFile.FullName, string.Empty);
3191var result = command.Parse($"integration list --apphost \"{appHostFile.FullName}\" --format json");
3212var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3213File.WriteAllText(appHostFile.FullName, string.Empty);
3239var result = command.Parse($"integration list --apphost \"{appHostFile.FullName}\"");
3260var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3261File.WriteAllText(appHostFile.FullName, string.Empty);
3286var result = command.Parse($"integration list --apphost \"{appHostFile.FullName}\"");
3308var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3309File.WriteAllText(appHostFile.FullName, string.Empty);
3335var result = command.Parse($"integration search zzznomatch --apphost \"{appHostFile.FullName}\"");
3360var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3361File.WriteAllText(appHostFile.FullName, string.Empty);
3393var result = command.Parse($"add Aspire.Hosting.Foo --apphost \"{appHostFile.FullName}\"");
3411var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3412File.WriteAllText(appHostFile.FullName, string.Empty);
3447var result = command.Parse($"add Aspire.Hosting.Redis --apphost \"{appHostFile.FullName}\"");
3469var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
3470File.WriteAllText(appHostFile.FullName, string.Empty);
3493var result = command.Parse($"integration list --apphost \"{appHostFile.FullName}\" --format json");
3541var hivesDirectory = new DirectoryInfo(Path.Combine(aspireDirectory.FullName, "hives"));
3542var cacheDirectory = new DirectoryInfo(Path.Combine(aspireDirectory.FullName, "cache"));
3543var sdksDirectory = new DirectoryInfo(Path.Combine(aspireDirectory.FullName, "sdks"));
3544var logsDirectory = new DirectoryInfo(Path.Combine(aspireDirectory.FullName, "logs"));
3552Path.Combine(logsDirectory.FullName, "test.log"),
Commands\AgentInitCommandTests.cs (40)
28interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
69interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
102var blockedSkillParentPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents");
106interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
129var expectedSkillDirectoryPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireSkillName);
144var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all --skills all");
183interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
225interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
289interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
337interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
379var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all --skills {FakeAspireSkillsInstaller.AspireMonitoringSkillName}");
407var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all --skills PLAYWRIGHT-CLI");
427interactionService.SetupStringPromptResponse(workspace.WorkspaceRoot.FullName);
468var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations none --skills all");
475var agentsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents");
488var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skills none");
504var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all");
518var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireifySkillName);
551var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all --skills {skillsArg}");
574var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all --skills {FakeAspireSkillsInstaller.AspireOrchestrationSkillName}");
581var aspireSkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireSkillName);
594var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations invalid --skills all");
621var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireifySkillName);
642var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all");
750var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireifySkillName);
763var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all --skills none");
770var aspireSkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireSkillName);
784var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations all --skills none");
800var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations none --skills all");
807var agentsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills");
820var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations standard --skills {CommonAgentApplicators.AspireSkillName}");
829var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireifySkillName);
835var skillPath = Path.Combine(workspaceRoot.FullName, relativeSkillDirectory, skillName, "SKILL.md");
841var bundleDirectory = new DirectoryInfo(Path.Combine(workspaceRoot.FullName, $".test-aspire-skills-bundle-{Guid.NewGuid():N}"));
842Directory.CreateDirectory(bundleDirectory.FullName);
847var skillDirectory = Path.Combine(bundleDirectory.FullName, "skills", name);
886var manifestPath = Path.Combine(bundleDirectory.FullName, "skill-manifest.json");
912var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations none --skills none");
917var hookFile = Path.Combine(homeDirectory.FullName, ".copilot", "hooks", "aspire-telemetry.json");
943var result = command.Parse($"agent init --workspace-root {workspace.WorkspaceRoot.FullName} --skill-locations none --skills none");
Commands\AgentMcpCommandTests.cs (5)
141AppHostPath = Path.Combine(ctx.Workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
209AppHostPath = Path.Combine(ctx.Workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
284AppHostPath = Path.Combine(ctx.Workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
399AppHostPath = Path.Combine(ctx.Workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
481AppHostPath = Path.Combine(ctx.Workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
Commands\AppHostLauncherTests.cs (20)
79var homeDirectory = workspace.WorkspaceRoot.FullName;
85var symlinkDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "link");
86Directory.CreateSymbolicLink(symlinkDirectory, realDirectory.FullName);
88var realProjectPath = Path.Combine(realDirectory.FullName, "AppHost.csproj");
961var childLogFile = Path.Combine(workspace.WorkspaceRoot.FullName, "child.log");
989var childLogFile = Path.Combine(workspace.WorkspaceRoot.FullName, "child.log");
1012var childLogFile = Path.Combine(workspace.WorkspaceRoot.FullName, "child.log");
1074var childLogFile = Path.Combine(workspace.WorkspaceRoot.FullName, "child.log");
1166var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1167File.WriteAllText(appHostFile.FullName, "<Project />");
1175Path.Combine(logsDirectory.FullName, "parent.log"),
1227var socketPrefix = AppHostHelper.ComputeAuxiliarySocketPrefix(AppHostFile.FullName, _homeDirectory.FullName);
1232AppHostPath = AppHostFile.FullName,
1243_workspace.WorkspaceRoot.FullName,
1244Path.Combine(_workspace.WorkspaceRoot.FullName, "common", ".git"));
1249var backchannelsDir = Path.Combine(_homeDirectory.FullName, ".aspire", "cli", "bch");
1252var resolvedAppHostPath = PathNormalizer.ResolveSymlinks(AppHostFile.FullName);
1253var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(resolvedAppHostPath, _homeDirectory.FullName);
1309CreatedExecution = new TestDetachedProcessExecution(this, fileName, args, workingDirectory.FullName, environment, options);
Commands\CacheCommandTests.cs (14)
47var packagesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "packages"));
49File.WriteAllText(Path.Combine(restoreDir.FullName, "test.dll"), "fake");
63Assert.False(File.Exists(Path.Combine(restoreDir.FullName, "test.dll")));
70var appHostInfoCacheDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cache", "apphost-info"));
72var cacheEntry = Path.Combine(appHostInfoCacheDir.FullName, "entry.json");
105await File.WriteAllTextAsync(Path.Combine(firstBuildCache.FullName, "Aspire.Hosting.dll"), "fake").DefaultTimeout();
106await File.WriteAllTextAsync(Path.Combine(secondBuildCache.FullName, "Aspire.Hosting.dll"), "fake").DefaultTimeout();
116Assert.False(Directory.Exists(Path.Combine(stagingCacheRoot.FullName, "deadbeef")));
117Assert.False(Directory.Exists(Path.Combine(stagingCacheRoot.FullName, "cafef00d")));
147var packagesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "packages-nonexistent"));
171File.WriteAllText(Path.Combine(tempDir.FullName, "root.txt"), "root");
172File.WriteAllText(Path.Combine(subDir.FullName, "nested.txt"), "nested");
196var keepFile = Path.Combine(tempDir.FullName, "keep.txt");
197var deleteFile = Path.Combine(tempDir.FullName, "delete.txt");
Commands\ConfigCommandTests.cs (15)
122var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
182var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
207var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
241var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
361var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
690var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
722var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
753var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
784var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
798var settingsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
831var settingsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
873var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
890var legacySettingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.json");
903var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1000var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
Commands\DeployCommandTests.cs (8)
39var expectedAspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, ".home", ".aspire");
87var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
88await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
89var expectedAspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, ".home", ".aspire");
123var invocation = explicitAppHost ? $"{commandText} --apphost \"{appHostFile.FullName}\"" : commandText;
129Assert.Equal(workspace.WorkspaceRoot.FullName, workingDirectory);
130Assert.Equal(appHostFile.FullName, projectFile);
324var expectedAspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, ".home", ".aspire");
Commands\DoctorCommandTests.cs (29)
166var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
167await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
193var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
194await File.WriteAllTextAsync(appHostFile.FullName, "export {};");
196Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json"),
243await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
269var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Normal.csproj"));
270await File.WriteAllTextAsync(projectFile.FullName, "<Project />");
297var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Normal.csproj"));
298await File.WriteAllTextAsync(projectFile.FullName, "<Project />");
300var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
301await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
323await File.WriteAllTextAsync(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"), "<Project />");
324await File.WriteAllTextAsync(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.fsproj"), "<Project />");
350var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
351await File.WriteAllTextAsync(appHostFile.FullName, "export {};");
405await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
407Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json"),
411"path": "{{Path.GetRelativePath(workspace.WorkspaceRoot.FullName, appHostFile.FullName).Replace('\\', '/')}}"
495var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
496await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
498Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json"),
526var appHostFile = new FileInfo(Path.Combine(nestedAppHostDir.FullName, "AppHost.csproj"));
527await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
529Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json"),
560var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
561await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1077return new FileInfo(Path.Combine(directory.FullName, "AppHost.csproj"));
Commands\ExportCommandTests.cs (17)
27var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
115var customDir = Path.Combine(workspace.WorkspaceRoot.FullName, "custom", "nested");
149var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
152var appHostDir = Path.Combine(workspace.WorkspaceRoot.FullName, "MyAppHost");
182var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
215AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TargetAppHost", "TargetAppHost.csproj"),
301var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
427var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
485var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
539var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
604var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
648var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
692var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
734var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
762var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
815var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "export.zip");
882AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
Commands\ExtensionInternalCommandTests.cs (11)
61var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "MyApp.AppHost.csproj"));
93Assert.Equal(projectFile.FullName, searchResult.SelectedProjectFile);
95Assert.Equal(projectFile.FullName, searchResult.AllProjectFileCandidates[0]);
102var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "MyApp.AppHost.csproj"));
103await File.WriteAllTextAsync(projectFile.FullName, """
129Assert.Equal(projectFile.FullName, searchResult.SelectedProjectFile);
130Assert.Equal([projectFile.FullName], searchResult.AllProjectFileCandidates);
137var projectFile1 = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App1.AppHost.csproj"));
138var projectFile2 = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App2.AppHost.csproj"));
172Assert.Contains(projectFile1.FullName, searchResult.AllProjectFileCandidates);
173Assert.Contains(projectFile2.FullName, searchResult.AllProjectFileCandidates);
Commands\InitCommandTests.cs (101)
66var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
67File.WriteAllText(solutionFile.FullName, "Fake solution file");
69var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, projectFileName));
70File.WriteAllText(projectFile.FullName, "<Project />");
109Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json")));
117var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
118File.WriteAllText(solutionFile.FullName, "Fake solution file");
150Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json")));
166Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs")));
168var config = JsonNode.Parse(File.ReadAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json")))!.AsObject();
193var runJsonPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.run.json");
220var aspireConfig = JsonNode.Parse(File.ReadAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json")))!.AsObject();
263File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json"), existingAspireConfig);
274var runJson = JsonNode.Parse(File.ReadAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.run.json")))!.AsObject();
313var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json");
338Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.run.json")));
362Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs")));
397Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts")));
399var config = JsonNode.Parse(File.ReadAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json")))!.AsObject();
410var existingAppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts");
413File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), """{ "type": "commonjs" }""");
428Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts")));
429Assert.Equal("""{ "type": "commonjs" }""", File.ReadAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json")));
436File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{}");
444Directory.CreateDirectory(scaffoldDirectory.FullName);
445File.WriteAllText(Path.Combine(scaffoldDirectory.FullName, context.Language.AppHostFileName!), string.Empty);
475Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts")));
476Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-apphost", "apphost.mts")));
587Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs")));
589var aspireSkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireSkillName);
592var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireifySkillName);
609Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs")));
612var agentsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills");
629Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs")));
631var aspireSkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireSkillName, "SKILL.md");
635var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, ".agents", "skills", CommonAgentApplicators.AspireifySkillName);
653var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs");
671var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
704var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
723var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs");
743var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
744File.WriteAllText(solutionFile.FullName, "Fake solution file");
787File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")),
796var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
797File.WriteAllText(solutionFile.FullName, "Fake solution file");
800var hivesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
801Directory.CreateDirectory(Path.Combine(hivesDir.FullName, "pr-12345", "packages"));
831[new PackageMapping("Aspire*", hivesDir.FullName + "/pr-12345/packages")],
873var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
874File.WriteAllText(solutionFile.FullName, "Fake solution file");
939var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
940File.WriteAllText(solutionFile.FullName, "Fake solution file");
988var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
989File.WriteAllText(solutionFile.FullName, "Fake solution file");
1058Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs")));
1060var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1093Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs")));
1095var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1130var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1154var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1203var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1247var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1362var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1469var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1470File.WriteAllText(solutionFile.FullName, "Fake solution file");
1548var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1549File.WriteAllText(solutionFile.FullName, "Fake solution file");
1552var hivesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
1636var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1637File.WriteAllText(solutionFile.FullName, "Fake solution file");
1639var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1697var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1698File.WriteAllText(solutionFile.FullName, "Fake solution file");
1726var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1744var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1745File.WriteAllText(solutionFile.FullName, "Fake solution file");
1748var appHostDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.AppHost"));
1750Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")));
1771var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1789var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs");
1791Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")));
1808var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1827var solutionFile = new FileInfo(Path.Combine(solutionDir.FullName, "Test.sln"));
1828File.WriteAllText(solutionFile.FullName, "Fake solution file");
1857Assert.True(File.Exists(Path.Combine(solutionDir.FullName, "nuget.config")),
1859Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")),
1861AssertNuGetConfigHasChannelShape(Path.Combine(solutionDir.FullName, "nuget.config"), contextChannel);
1877var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1878File.WriteAllText(solutionFile.FullName, "Fake solution file");
1889var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1938var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1939File.WriteAllText(solutionFile.FullName, "Fake solution file");
1970var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1993var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1994File.WriteAllText(solutionFile.FullName, "Fake solution file");
2038File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")),
2054var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.slnx"));
2055File.WriteAllText(solutionFile.FullName, """<Solution />""");
2084var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
2188File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, appHostFileName), string.Empty);
2198File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, AspireConfigFile.FileName), config.ToJsonString());
Commands\LogsCommandTests.cs (5)
728AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
818AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
985AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
1548AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
1626AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TestAppHost", "TestAppHost.csproj"),
Commands\LsCommandTests.cs (20)
93var appHostPath1 = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
94var appHostPath2 = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "App2.AppHost.csproj");
174var configuredAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "ConfiguredAppHost.csproj"));
175await File.WriteAllTextAsync(configuredAppHost.FullName, "Not a real apphost");
176await File.WriteAllTextAsync(Path.Combine(workingDirectory.FullName, "aspire.config.json"), JsonSerializer.Serialize(new
203Assert.Equal(configuredAppHost.FullName, candidate.Path);
214var appHostPath1 = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
215var appHostPath2 = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "App2.AppHost.csproj");
289var appHostPath1 = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
290var appHostPath2 = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "App2.AppHost.csproj");
374var appHostPathZ = Path.Combine(workspace.WorkspaceRoot.FullName, "ZApp", "Z.AppHost.csproj");
375var appHostPathA = Path.Combine(workspace.WorkspaceRoot.FullName, "AApp", "A.AppHost.csproj");
376var appHostPathM = Path.Combine(workspace.WorkspaceRoot.FullName, "MApp", "M.AppHost.csproj");
419var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App", "App.AppHost.csproj");
520var appHostPath1 = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
521var appHostPath2 = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "App2.AppHost.csproj");
556var appHostPath1 = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
557var appHostPath2 = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "App2.AppHost.csproj");
609var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App", "App.AppHost.csproj");
762var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App", "App.AppHost.csproj");
Commands\NewCommandTemplateConfigPersistenceTests.cs (11)
254dotNetTemplateInstalls.Add(new DotNetTemplateInstall(packageName, version, nugetConfigFile?.FullName, nugetSource));
296var outputDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, outputDirectoryName);
311Assert.Contains(packagesDirectory.FullName.Replace('\\', '/'), csharpNuGetConfig);
327Assert.Equal(packagesDirectory.FullName.Replace('\\', '/'), install.NuGetSource);
335Assert.Contains(packagesDirectory.FullName.Replace('\\', '/'), dotNetNuGetConfig);
409var outputDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, outputDirectoryName);
485hivesDirectory: new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives")),
521var installPrefix = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "custom-aspire-prefix"));
522var processPath = Path.Combine(installPrefix.FullName, "dogfood", PrChannelName, "bin", "aspire");
526var packagesDirectory = Directory.CreateDirectory(Path.Combine(installPrefix.FullName, "hives", PrChannelName, "packages"));
527File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.ProjectTemplates.{s_prVersion}.nupkg"), string.Empty);
Commands\NewCommandTests.cs (103)
147var outputDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "TemplateOut");
553var config = AspireConfigFile.Load(Path.Combine(workspace.WorkspaceRoot.FullName, "output"));
916File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.mts"), "// test apphost");
933Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", "apphost.mts")));
934Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", "aspire.config.json")));
1082File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "AppHost.java"), "package aspire;");
1107File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json"), """
1145File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "AppHost.java"), "package aspire;");
1173File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.mts"), "// test apphost");
1185Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", "apphost.mts")));
1204var document = XDocument.Load(nugetConfig.FullName);
1250AssertSourceOverrideNuGetConfig(Path.Combine(workspace.WorkspaceRoot.FullName, "output"), expectedSource);
1260var expectedSource = Path.Combine(workspace.WorkspaceRoot.FullName, "relative-feed");
1262File.WriteAllText(Path.Combine(nestedDirectory.FullName, "Aspire.ProjectTemplates.9.2.0.nupkg"), string.Empty);
1293AssertSourceOverrideNuGetConfig(Path.Combine(workspace.WorkspaceRoot.FullName, "output"), expectedSource);
1305var sourceOverride = Path.Combine(workspace.WorkspaceRoot.FullName, "source-feed");
1330File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, scaffoldFileName), "// test apphost");
1342AssertSourceOverrideNuGetConfig(Path.Combine(workspace.WorkspaceRoot.FullName, "output"), sourceOverride);
1353var sourceOverride = Path.Combine(workspace.WorkspaceRoot.FullName, "source-feed");
1366AssertSourceOverrideNuGetConfig(Path.Combine(workspace.WorkspaceRoot.FullName, "output"), sourceOverride);
1401Assert.False(Directory.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output")));
1433var expectedSource = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.org");
1436Assert.False(Directory.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output")));
1456File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.mts"), "// test apphost");
1495File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "AppHost.java"), "package aspire;");
1507Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", "AppHost.java")));
1531File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.py"), "# test apphost");
1543Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", "apphost.py")));
1559Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", "apphost.cs")));
1589var appHostCreated = File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", "apphost.cs"));
1614var outputDir = Path.Combine(workspace.WorkspaceRoot.FullName, "output");
1648var outputDir = Path.Combine(workspace.WorkspaceRoot.FullName, "output");
1723var outputRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "output");
1839capturedTargetDirectory = context.TargetDirectory.FullName;
1857var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "TestApp");
1902await File.WriteAllTextAsync(Path.Combine(context.TargetDirectory.FullName, "aspire.config.json"), """
1932var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, "output", "aspire.config.json");
1992var config = AspireConfigFile.Load(directory.FullName);
1996var modulesDir = Directory.CreateDirectory(Path.Combine(directory.FullName, LanguageInfo.GeneratedFolderName));
1997File.WriteAllText(Path.Combine(modulesDir.FullName, "aspire.mts"), "// generated sdk");
2012Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "output", LanguageInfo.GeneratedFolderName, "aspire.mts")));
2082var sourceOverride = Path.Combine(workspace.WorkspaceRoot.FullName, "source-feed");
2120var modulesDir = Directory.CreateDirectory(Path.Combine(directory.FullName, ".aspire", "modules"));
2121File.WriteAllText(Path.Combine(modulesDir.FullName, "aspire.ts"), "// generated sdk");
2134AssertSourceOverrideNuGetConfig(Path.Combine(workspace.WorkspaceRoot.FullName, "output"), sourceOverride);
2156var document = XDocument.Load(nugetConfigFile.FullName);
2182AssertSourceOverrideNuGetConfig(Path.Combine(workspace.WorkspaceRoot.FullName, "output"), sourceOverride);
2192var sourceOverride = Path.Combine(workspace.WorkspaceRoot.FullName, "source-feed");
2291var outputDir = Path.Combine(workspace.WorkspaceRoot.FullName, "output");
2316var outputDir = Path.Combine(workspace.WorkspaceRoot.FullName, "output");
2413Assert.Equal(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-starter"), capturedOutputPath);
2448var result = command.Parse($"new aspire-starter --name MyProject --output {Path.Combine(workspace.WorkspaceRoot.FullName, "my-project")} --use-redis-cache --test-framework None");
2490var outputDir = Path.Combine(workspace.WorkspaceRoot.FullName, "output");
2609Path.Combine(workspace.WorkspaceRoot.FullName, "source");
2640var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "source", "MyFirstApp");
2668Path.Combine(workspace.WorkspaceRoot.FullName, "source", "MyFirstApp");
2699var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "source", "MyFirstApp");
2725Path.Combine(workspace.WorkspaceRoot.FullName, "source");
2756var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "source");
2787selectedPathFactory(workspace.WorkspaceRoot.FullName);
2816Assert.Equal(expectedPathFactory(workspace.WorkspaceRoot.FullName), capturedOutputPath);
2853Path.Combine(workspace.WorkspaceRoot.FullName, "source");
2864File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.ts"), "// test apphost");
2878var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "source", projectName);
2879Assert.Equal(expectedPath, capturedTargetDirectory.FullName);
2890File.WriteAllText(Path.Combine(selectedParent.FullName, "existing.txt"), "existing content");
2912var validationResult = validator(selectedParent.FullName);
2915return selectedParent.FullName;
2927File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.ts"), "// test apphost");
2942var expectedPath = Path.Combine(selectedParent.FullName, projectName);
2943Assert.Equal(expectedPath, capturedTargetDirectory.FullName);
2954var collidingProject = Directory.CreateDirectory(Path.Combine(collidingParent.FullName, projectName));
2955File.WriteAllText(Path.Combine(collidingProject.FullName, "existing.txt"), "existing content");
2957var selectedParents = new Queue<string?>([collidingParent.FullName, validParent.FullName]);
3020Assert.Equal(Path.Combine(validParent.FullName, projectName), capturedOutputPath);
3024collidingProject.FullName);
3068return selectedParent.FullName;
3080File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.ts"), "// test apphost");
3095var expectedPath = Path.Combine(selectedParent.FullName, projectName);
3096Assert.Equal(expectedPath, capturedTargetDirectory.FullName);
3138selectedOutputPath.FullName;
3149File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.ts"), "// test apphost");
3164Assert.Equal(selectedOutputPath.FullName, capturedTargetDirectory.FullName);
3165Assert.True(File.Exists(Path.Combine(selectedOutputPath.FullName, "apphost.ts")));
3166Assert.False(File.Exists(Path.Combine(selectedOutputPath.FullName, projectName, "apphost.ts")));
3192Path.Combine(workspace.WorkspaceRoot.FullName, "source", projectName);
3203File.WriteAllText(Path.Combine(context.TargetDirectory.FullName, "apphost.ts"), "// test apphost");
3217var expectedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "source", projectName);
3218Assert.Equal(expectedPath, capturedTargetDirectory.FullName);
3244var skillPath = Path.Combine(workspace.WorkspaceRoot.FullName, "output", ".agents", "skills", CommonAgentApplicators.AspireSkillName, "SKILL.md");
3270var skillPath = Path.Combine(workspace.WorkspaceRoot.FullName, "output", ".agents", "skills", CommonAgentApplicators.AspireSkillName, "SKILL.md");
3272var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, "output", ".agents", "skills", CommonAgentApplicators.AspireifySkillName, "SKILL.md");
3298var skillPath = Path.Combine(workspace.WorkspaceRoot.FullName, "output", ".agents", "skills", CommonAgentApplicators.AspireSkillName, "SKILL.md");
3300var aspireifySkillPath = Path.Combine(workspace.WorkspaceRoot.FullName, "output", ".agents", "skills", CommonAgentApplicators.AspireifySkillName, "SKILL.md");
3311File.WriteAllText(Path.Combine(existingDir.FullName, "file.txt"), "content");
3325var result = command.Parse($"new aspire-starter --name TestApp --output {existingDir.FullName} --use-redis-cache --test-framework None");
3330var expectedError = string.Format(CultureInfo.CurrentCulture, NewCommandStrings.OutputDirectoryNotEmptyNonInteractive, existingDir.FullName);
3347var result = command.Parse($"new aspire-starter --name TestApp --output {emptyDir.FullName} --use-redis-cache --test-framework None");
3360File.WriteAllText(Path.Combine(existingDir.FullName, "file.txt"), "content");
3457Assert.Equal(projectDir.FullName, capturedOutputPath);
3464var validator = OutputPathHelper.CreateOutputPathValidator(workspace.WorkspaceRoot.FullName);
Commands\PsCommandTests.cs (17)
126AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
142AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "App2.AppHost.csproj"),
194var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
233AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
273AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
279AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
317AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
361AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
398var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
431var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
501AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
540AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
604AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
648AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
688AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
695AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
735AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj"),
Commands\RunCommandTests.cs (125)
98var result = command.Parse(["run", "--apphost", appHostFile.FullName, "--launch-profile", "E2E"]);
140var result = command.Parse(["run", "--detach", "--apphost", appHostFile.FullName, "--launch-profile", "E2E"]);
158File.WriteAllText(Path.Combine(propertiesDirectory.FullName, "launchSettings.json"), """
191var result = command.Parse(["run", "--apphost", appHostFile.FullName, "--launch-profile", "missing"]);
207File.WriteAllText(Path.Combine(propertiesDirectory.FullName, "launchSettings.json"), $$"""
236var result = command.Parse(["run", "--apphost", appHostFile.FullName, "--launch-profile", "container"]);
272var result = command.Parse(["run", "--apphost", appHostFile.FullName, "--launch-profile", "E2E"]);
373var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
374await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
405var result = command.Parse($"run --apphost {appHostFile.FullName}");
437var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
438await File.WriteAllTextAsync(appHostFile.FullName, "<Project />", TestContext.Current.CancellationToken);
487var result = command.Parse($"run --apphost {appHostFile.FullName}");
525var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
526await File.WriteAllTextAsync(appHostFile.FullName, "<Project />", TestContext.Current.CancellationToken);
588var result = command.Parse($"run --apphost {appHostFile.FullName}");
630var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
631await File.WriteAllTextAsync(appHostFile.FullName, "<Project />", TestContext.Current.CancellationToken);
686var result = command.Parse($"run --apphost {appHostFile.FullName}");
787await File.WriteAllTextAsync(Path.Combine(appHost1Dir.FullName, "AppHost1.csproj"), "fake");
790await File.WriteAllTextAsync(Path.Combine(appHost2Dir.FullName, "AppHost2.csproj"), "fake");
855File.WriteAllText(projectFile.FullName, """
891var appHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj"));
903var result = command.Parse($"run --apphost {appHostProjectFile.FullName}");
917var appHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj"));
921Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
950var appHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj"));
981var appHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj"));
992var result = command.Parse($"run --apphost {appHostProjectFile.FullName}");
1010var appHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj"));
1052var result = command.Parse($"run --apphost {appHostProjectFile.FullName}");
1087var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
1088await File.WriteAllTextAsync(appHostFile.FullName, "<Project />", TestContext.Current.CancellationToken);
1105var parentResult = parentCommand.Parse($"run --detach --apphost {appHostFile.FullName}");
1161File.WriteAllText(Path.Combine(propertiesDirectory.FullName, "launchSettings.json"), """
1193"--apphost", appHostFile.FullName,
1280var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1281await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1326var result = command.Parse($"run --apphost {appHostFile.FullName}");
1356var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1357await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1396var result = command.Parse($"run --apphost {appHostFile.FullName}");
1420var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1421await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1464var result = command.Parse($"run --apphost {appHostFile.FullName}");
1482var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1483await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1521var result = command.Parse($"run --apphost {appHostFile.FullName}");
1540var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1541await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1578var result = command.Parse($"run --apphost {appHostFile.FullName}");
1602var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1603await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1641var result = command.Parse($"run --apphost {appHostFile.FullName}");
1663var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1664await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1708var result = command.Parse($"run --apphost {appHostFile.FullName}");
1726var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1727await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1769var result = command.Parse($"run --apphost {appHostFile.FullName}");
1787var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1788await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1821var result = command.Parse($"run --apphost {appHostFile.FullName}");
1849var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
1850await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1893var result = command.Parse($"run --apphost {appHostFile.FullName}");
2399var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "cli [run].log");
2521var appHostDirectoryPath = Path.Combine(workspace.WorkspaceRoot.FullName, "src", "MyApp.AppHost");
2523var appHostProjectPath = Path.Combine(appHostDirectory.FullName, "MyApp.AppHost.csproj");
2525File.WriteAllText(appHostProjectFile.FullName, "<Project></Project>");
3164var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
3165await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
3212var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
3213await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
3256var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
3257await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
3304var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
3305await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
3347var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
3348await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
3391var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
3392await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
3435var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
3436await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
3729var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
3791var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
3833var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
3891var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
3935var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
3996Path.Combine(workspace.WorkspaceRoot.FullName, "test.log"),
4034Path.Combine(workspace.WorkspaceRoot.FullName, "test.log"),
4069var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
4118var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
4162var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
4218Path.Combine(workspace.WorkspaceRoot.FullName, "test.log"),
4260var logFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test.log");
4317var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
4318await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
4344var result = command.Parse(explicitAppHost ? $"run --apphost \"{appHostFile.FullName}\"" : "run");
4349Assert.Equal(workspace.WorkspaceRoot.FullName, workingDirectory);
4350Assert.Equal(explicitAppHost ? appHostFile.FullName : null, projectFile);
4363workspace.WorkspaceRoot.FullName,
4364Path.Combine(workspace.WorkspaceRoot.FullName, "common", ".git"));
4366var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
4367File.WriteAllText(appHostFile.FullName, "<Project />");
4382"--apphost", appHostFile.FullName,
4416"--capture-profile-output", new FileInfo(relativeCapturePath).FullName,
4430workspace.WorkspaceRoot.FullName,
4431Path.Combine(workspace.WorkspaceRoot.FullName, "common", ".git"));
4433var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
4434File.WriteAllText(appHostFile.FullName, "<Project />");
4442var result = command.Parse(["run", "--apphost", appHostFile.FullName, "--debug", "--", "--custom-arg", "value"]);
4458workspace.WorkspaceRoot.FullName,
4459Path.Combine(workspace.WorkspaceRoot.FullName, "common", ".git"));
4461var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
4462File.WriteAllText(appHostFile.FullName, "<Project />");
4470var result = command.Parse(["run", "--apphost", appHostFile.FullName, "--debug", "--secret", "value"]);
4713var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
4714File.WriteAllText(appHostFile.FullName, "<Project />");
4729var args = new List<string> { commandName, "--apphost", appHostFile.FullName };
4754var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
4755File.WriteAllText(appHostFile.FullName, "<Project />");
4762var backchannelsDirectory = Path.Combine(homeDirectory.FullName, ".aspire", "cli", "bch");
4765var resolvedAppHostPath = PathNormalizer.ResolveSymlinks(appHostFile.FullName);
4766var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(resolvedAppHostPath, homeDirectory.FullName);
Commands\StartCommandTests.cs (29)
153var result = command.Parse(["start", "--apphost", appHostFile.FullName, "--launch-profile", "E2E"]);
217File.WriteAllText(Path.Combine(propertiesDirectory.FullName, "launchSettings.json"), """
248"--apphost", appHostFile.FullName,
268await File.WriteAllTextAsync(Path.Combine(appHost1Dir.FullName, "AppHost1.csproj"), "fake");
271await File.WriteAllTextAsync(Path.Combine(appHost2Dir.FullName, "AppHost2.csproj"), "fake");
299await File.WriteAllTextAsync(Path.Combine(appHost1Dir.FullName, "AppHost1.csproj"), "fake");
302await File.WriteAllTextAsync(Path.Combine(appHost2Dir.FullName, "AppHost2.csproj"), "fake");
330var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
331await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
360var result = command.Parse($"start --apphost {appHostFile.FullName}");
383var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
384File.WriteAllText(appHostFile.FullName, "<Project />");
404"--project", appHostFile.FullName,
424Assert.Equal(workspace.WorkspaceRoot.FullName, workingDirectory);
425Assert.Equal(appHostFile.FullName, projectFile);
505var result = command.Parse($"start --apphost {appHostFile.FullName} --start-debug-session");
521workspace.WorkspaceRoot.FullName,
522Path.Combine(workspace.WorkspaceRoot.FullName, "common", ".git"));
530var result = provider.GetRequiredService<RootCommand>().Parse($"start --apphost {appHostFile.FullName}");
568var result = command.Parse($"start --apphost {appHostFile.FullName}");
604var result = command.Parse(string.Format(CultureInfo.InvariantCulture, commandTemplate, appHostFile.FullName));
617workspace.WorkspaceRoot.FullName,
618Path.Combine(workspace.WorkspaceRoot.FullName, "common", ".git"));
650Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".git"));
667var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.csproj"));
668File.WriteAllText(appHostFile.FullName, "<Project />");
675var backchannelsDirectory = Path.Combine(homeDirectory.FullName, ".aspire", "cli", "bch");
678var resolvedAppHostPath = PathNormalizer.ResolveSymlinks(appHostFile.FullName);
679var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(resolvedAppHostPath, homeDirectory.FullName);
Commands\StopCommandTests.cs (84)
87var resolvedProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Resolved.AppHost", "Resolved.AppHost.csproj"));
104var result = command.Parse($"stop --apphost \"{appHostDirectory.FullName}\"");
125var appHostPath1 = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "AppHost.cs");
126var appHostPath2 = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "AppHost.cs");
160var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost", "App1.AppHost.csproj");
197var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost", "App1.AppHost.csproj");
225Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".git"));
226var worktreeRoot = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".worktrees", "feature")).FullName;
229Path.Combine(workspace.WorkspaceRoot.FullName, ".git"));
235var primaryAppHost = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj");
237Assert.True(AuxiliaryBackchannelMonitor.IsAppHostInScopeOfDirectory(primaryAppHost, workspace.WorkspaceRoot.FullName));
238Assert.False(AuxiliaryBackchannelMonitor.IsAppHostInScopeOfDirectory(nestedAppHost, workspace.WorkspaceRoot.FullName));
244isInScope: AuxiliaryBackchannelMonitor.IsAppHostInScopeOfDirectory(primaryAppHost, workspace.WorkspaceRoot.FullName));
249isInScope: AuxiliaryBackchannelMonitor.IsAppHostInScopeOfDirectory(nestedAppHost, workspace.WorkspaceRoot.FullName));
280var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
281await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
297var result = command.Parse($"stop --apphost \"{appHostFile.FullName}\"");
312var commonGitDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, ".git");
314var worktreeRoot = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".worktrees", "feature")).FullName;
363var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost", "App1.AppHost.csproj");
398var appHostPath1 = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
399var appHostPath2 = Path.Combine(workspace.WorkspaceRoot.FullName, "App2", "App2.AppHost.csproj");
474var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
475await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
492var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
508var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
509await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
526var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
540var runningAppHostFile = new FileInfo(Path.Combine(runningAppHostDirectory.FullName, "Running.AppHost.csproj"));
541await File.WriteAllTextAsync(runningAppHostFile.FullName, "<Project />");
543var discoveredAppHostFile = new FileInfo(Path.Combine(discoveredAppHostDirectory.FullName, "Discovered.AppHost.csproj"));
544await File.WriteAllTextAsync(discoveredAppHostFile.FullName, "<Project />");
550var connection = CreateConnection(runningAppHostFile.FullName, int.MaxValue - 11);
551connection.SocketPath = CreateMatchingSocketFile(runningAppHostFile.FullName, workspace, 11);
592var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
593await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
610var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
624var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
625await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
659var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
660await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
665var outOfScopeAppHostFile = Path.Combine(workspace.WorkspaceRoot.FullName, "OtherWorkspace", "Other.AppHost.csproj");
699var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
700await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
720var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
734var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
735await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
757var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
774var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
775await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
797var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
814var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
815await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
836var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
853var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "apphost.ts"));
854await File.WriteAllTextAsync(appHostFile.FullName, "");
880var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
899var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
900await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
922var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
936var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
937await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
964var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
981var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
982await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1002var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
1019var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
1020await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1040var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
1057var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
1058await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1074var result = command.Parse($"stop --force --apphost \"{appHostFile.FullName}\"");
1125var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
1126await File.WriteAllTextAsync(appHostFile.FullName, "<Project />");
1131var connection = CreateConnection(appHostFile.FullName, int.MaxValue - 10);
1132connection.SocketPath = CreateMatchingSocketFile(appHostFile.FullName, workspace, 10);
1190var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "App1", "App1.AppHost.csproj");
1228File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), "");
1233LayoutPath = layoutRoot.FullName,
1298var homeDirectory = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".home"));
1299var backchannelsDirectory = Path.Combine(homeDirectory.FullName, ".aspire", "cli", "bch");
1303var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(resolvedAppHostPath, homeDirectory.FullName);
Commands\UpdateCommandTests.cs (98)
88var appHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
89await File.WriteAllTextAsync(appHostProjectFile.FullName, """
124var result = command.Parse($"update --apphost {appHostProjectFile.FullName}");
129Assert.Equal(appHostProjectFile.FullName, updatedProjectFile?.FullName);
186var targetExePath = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.exe");
187var oldBackup1 = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.exe.old.1234567890");
188var oldBackup2 = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.exe.old.9876543210");
189var otherFile = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.exe.something");
197FileDeleteHelper.TryCleanupOldItems(workspace.WorkspaceRoot.FullName, "aspire.exe");
210var oldBackup = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.exe.old.1234567890");
217FileDeleteHelper.TryCleanupOldItems(workspace.WorkspaceRoot.FullName, "aspire.exe");
245FileDeleteHelper.TryCleanupOldItems(workspace.WorkspaceRoot.FullName, "aspire.exe");
307return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
376var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts");
439var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts");
494var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts");
564return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
627var toolPath = Path.Combine(installDir.FullName, "custom tool path");
643return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
720return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
793return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
836return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
877return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
961return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
1014Assert.Equal(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"), pendingMigration.DetectedContext.AppHostFile.FullName);
1042Assert.Equal(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"), pendingMigration.DetectedContext.AppHostFile.FullName);
1044Assert.Equal(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"), pendingMigration.AppliedContext.AppHostFile.FullName);
1119return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
1220var processPath = CreateNixInstall(installDir.FullName);
1257var processPath = CreateNixInstall(installDir.FullName);
1258var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts");
1301UseOrFindAppHostProjectFileAsyncCallback = (_, _, _) => Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")))
1383var toolPath = Path.Combine(installDir.FullName, "custom tool path");
1466var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
1492var processPath = Path.Combine(installDirectory.FullName, "aspire");
1496var sidecarPath = Path.Combine(installDirectory.FullName, InstallSidecarReader.SidecarFileName);
1534var processPath = Path.Combine(installDirectory.FullName, "aspire");
1539var sidecarPath = Path.Combine(installDirectory.FullName, InstallSidecarReader.SidecarFileName);
1591var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
1632var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
1666return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
1731return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
1795return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
1853return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
1930return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
1975return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
2031var localConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2050var globalDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
2070var localConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2088var globalDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
2092var localConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2112var globalDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
2133var localConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2142return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
2195Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")))
2248var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "elsewhere"));
2249var projectConfigPath = Path.Combine(projectDirectory.FullName, AspireConfigFile.FileName);
2254updateArgs: $"update --apphost {Path.Combine(projectDirectory.FullName, "AppHost.csproj")}",
2268Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
2271var globalDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
2275var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "elsewhere"));
2279updateArgs: $"update --apphost {Path.Combine(projectDirectory.FullName, "AppHost.csproj")}",
2296Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
2299var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "elsewhere"));
2301Path.Combine(projectDirectory.FullName, AspireConfigFile.FileName),
2306updateArgs: $"update --apphost {Path.Combine(projectDirectory.FullName, "AppHost.csproj")}",
2322Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
2325var globalDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
2329var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "elsewhere"));
2331Path.Combine(projectDirectory.FullName, AspireConfigFile.FileName),
2336updateArgs: $"update --apphost {Path.Combine(projectDirectory.FullName, "AppHost.csproj")}",
2379Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
2416return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
2502var resolved = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2587return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
2629var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "elsewhere"));
2630var appHostFile = new FileInfo(Path.Combine(projectDirectory.FullName, "AppHost.csproj"));
2631File.WriteAllText(appHostFile.FullName, string.Empty);
2633Path.Combine(projectDirectory.FullName, AspireConfigFile.FileName),
2669var result = command.Parse($"update --apphost \"{appHostFile.FullName}\"");
2776Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
2828return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(projectDirectory.FullName, "AppHost.csproj")));
2865var hivesDirectory = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
2959var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
3004var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
3049var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
3082var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
3115return Task.FromResult<FileInfo?>(new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj")));
3269var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
3291var executablePath = Path.Combine(contentDirectory.FullName, "aspire");
3309var tarPath = Path.Combine(archiveDirectory.FullName, "aspire.tar");
3310TarFile.CreateFromDirectory(contentDirectory.FullName, tarPath, includeBaseDirectory: false);
3312var archivePath = Path.Combine(archiveDirectory.FullName, "aspire.tar.gz");
3435var archivePath = Path.Combine(workspace.WorkspaceRoot.FullName, "test-cli.tar.gz");
Commands\VsCodeExtensionCheckTests.cs (15)
37["VSCODE_EXTENSIONS"] = extensions.FullName
63Directory.CreateDirectory(Path.Combine(extensions.FullName, "microsoft-aspire.aspire-vscode-1.2.3"));
67["VSCODE_EXTENSIONS"] = extensions.FullName
91Directory.CreateDirectory(Path.Combine(extensions.FullName, "microsoft-aspire.aspire-vscode-1.2.3"));
96["VSCODE_EXTENSIONS"] = extensions.FullName
116Directory.CreateDirectory(Path.Combine(home.FullName, rootFolder, "extensions", "microsoft-aspire.aspire-vscode-1.2.3"));
137Directory.CreateDirectory(Path.Combine(home.FullName, ".vscode", "extensions", "microsoft-aspire.aspire-vscode-1.2.3"));
142["VSCODE_EXTENSIONS"] = overrideDirectory.FullName
188Directory.CreateDirectory(Path.Combine(extensions.FullName, "Microsoft-Aspire.Aspire-VSCode-9.9.9"));
193["VSCODE_EXTENSIONS"] = extensions.FullName
207Directory.CreateDirectory(Path.Combine(extensions.FullName, "ms-dotnettools.csharp-2.0.0"));
212["VSCODE_EXTENSIONS"] = extensions.FullName
229Directory.CreateDirectory(Path.Combine(extensions.FullName, "microsoft-aspire.aspire-vscode-extras-1.0.0"));
234["VSCODE_EXTENSIONS"] = extensions.FullName
250var missingExtensionsDirectory = Path.Combine(home.FullName, "does-not-exist");
Configuration\AspireConfigFileTests.cs (44)
16var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
26var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
34var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
46var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
58var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
70var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
82var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
94var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
105var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
117var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
125var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
136var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
139var ex = Assert.Throws<JsonException>(() => AspireConfigFile.Load(workspace.WorkspaceRoot.FullName));
150var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
153var ex = Assert.Throws<JsonException>(() => AspireConfigFile.Load(workspace.WorkspaceRoot.FullName));
163var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
166var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
184config.Save(workspace.WorkspaceRoot.FullName);
186var filePath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
199var subDir = Path.Combine(workspace.WorkspaceRoot.FullName, "nested", "dir");
212Assert.False(AspireConfigFile.Exists(workspace.WorkspaceRoot.FullName));
220File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), "{}");
222Assert.True(AspireConfigFile.Exists(workspace.WorkspaceRoot.FullName));
361var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
368var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
382var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
389var result = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
411config.Save(workspace.WorkspaceRoot.FullName);
412var loaded = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
440config.Save(workspace.WorkspaceRoot.FullName);
441var loaded = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
454var root = workspace.WorkspaceRoot.FullName;
476var root = workspace.WorkspaceRoot.FullName;
496var root = workspace.WorkspaceRoot.FullName;
518var root = workspace.WorkspaceRoot.FullName;
544var root = workspace.WorkspaceRoot.FullName;
564var root = workspace.WorkspaceRoot.FullName;
586var root = workspace.WorkspaceRoot.FullName;
606var root = workspace.WorkspaceRoot.FullName;
626var root = workspace.WorkspaceRoot.FullName;
645var root = workspace.WorkspaceRoot.FullName;
665var root = workspace.WorkspaceRoot.FullName;
685var root = workspace.WorkspaceRoot.FullName;
705var root = workspace.WorkspaceRoot.FullName;
Configuration\ConfigurationHelperTests.cs (21)
17var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
21var globalSettingsFile = new FileInfo(Path.Combine(globalDir.FullName, AspireConfigFile.FileName));
118var settingsPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
138var config = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
150Directory.CreateDirectory(Path.Combine(configRoot.FullName, "nested", "apphost"));
151File.WriteAllText(Path.Combine(configRoot.FullName, AspireConfigFile.FileName), "{}");
154new DirectoryInfo(Path.Combine(configRoot.FullName, "nested", "apphost")));
156Assert.Equal(configRoot.FullName, resolvedRoot.FullName);
164var appHostDirectory = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "nested", "apphost"));
170Path.Combine(workspace.WorkspaceRoot.FullName, AspireJsonConfiguration.SettingsFolder),
171aspireDirectory.FullName);
191var legacySettingsPath = Path.Combine(legacyDir.FullName, AspireJsonConfiguration.FileName);
199var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
203var globalSettingsFile = new FileInfo(Path.Combine(globalDir.FullName, AspireConfigFile.FileName));
229var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
239var legacySettingsPath = Path.Combine(legacyDir.FullName, AspireJsonConfiguration.FileName);
245var globalSettingsFile = new FileInfo(Path.Combine(globalDir.FullName, AspireConfigFile.FileName));
263var legacySettingsPath = Path.Combine(legacyDir.FullName, AspireJsonConfiguration.FileName);
267var globalSettingsFile = new FileInfo(Path.Combine(globalDir.FullName, AspireConfigFile.FileName));
276var migratedPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
DotNet\DotNetCliRunnerTests.cs (176)
45var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
46await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
64["run", "--no-launch-profile", "--project", projectFile.FullName, "--", "--operation", "inspect"],
94var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, appHostFileName));
95await File.WriteAllTextAsync(appHostFile.FullName, "Not a real AppHost.");
107? ["run", "--launch-profile=--no-build", $"/p:{KnownConfigNames.SuppressCliRunHook}=true", "--file", appHostFile.FullName, "--"]
109? ["watch", "--non-interactive", "--launch-profile=--no-build", "--project", appHostFile.FullName, "--"]
110: ["run", "--launch-profile=--no-build", "--project", appHostFile.FullName, "--"];
133var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
134await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
145["run", "--project", projectFile.FullName, "--", .. appHostArguments],
167var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
168var appHostCommand = Path.Combine(workspace.WorkspaceRoot.FullName, "bin", "Debug", "net10.0", "AppHost");
169var runWorkingDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "run-cwd"));
170await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
186Assert.Equal(runWorkingDirectory.FullName, workingDirectory.FullName);
209var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
210var appHostAssembly = Path.Combine(workspace.WorkspaceRoot.FullName, "bin", "Debug", "net10.0", "AppHost.dll");
211var runWorkingDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "run-cwd"));
212await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
229Assert.Equal(runWorkingDirectory.FullName, workingDirectory.FullName);
250var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
251await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
278var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
279await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
311var cliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "artifacts", "bin", "Aspire.Cli", "Debug", "net10.0"));
312var cliPath = Path.Combine(cliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.exe" : "aspire");
314File.WriteAllText(Path.Combine(cliDirectory.FullName, "aspire.dll"), string.Empty);
324var cliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "artifacts", "bin", "Aspire.Cli", "Debug", "net10.0"));
325var cliPath = Path.Combine(cliDirectory.FullName, "aspire");
327File.WriteAllText(Path.Combine(cliDirectory.FullName, "aspire.dll"), string.Empty);
329var linkDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "bin"));
330var linkPath = Path.Combine(linkDirectory.FullName, "aspire");
340var dotnetDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "dotnet"));
341var dotnetPath = Path.Combine(dotnetDirectory.FullName, OperatingSystem.IsWindows() ? "dotnet.exe" : "dotnet");
351var cliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "bin"));
352var cliPath = Path.Combine(cliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.exe" : "aspire");
354File.WriteAllText(Path.Combine(cliDirectory.FullName, "aspire.dll"), string.Empty);
355File.WriteAllText(Path.Combine(cliDirectory.FullName, ".aspire-install.json"), """{"source":"script"}""");
364var cliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "bin"));
365var cliPath = Path.Combine(cliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.exe" : "aspire");
367File.WriteAllText(Path.Combine(cliDirectory.FullName, "aspire.dll"), string.Empty);
368Directory.CreateDirectory(Path.Combine(cliDirectory.FullName, "dcp"));
369Directory.CreateDirectory(Path.Combine(cliDirectory.FullName, "managed"));
370File.WriteAllText(Path.Combine(cliDirectory.FullName, "dcp", OperatingSystem.IsWindows() ? "dcp.exe" : "dcp"), string.Empty);
371File.WriteAllText(Path.Combine(cliDirectory.FullName, "managed", OperatingSystem.IsWindows() ? "aspire-managed.exe" : "aspire-managed"), string.Empty);
380var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
381await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
395Assert.Equal(projectFile.FullName, args[1]);
408var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
409await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
445var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
446await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
474var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
475await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
503var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
504await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
510[KnownConfigNames.CliDotnetBinlogDirectory] = binlogDirectory.FullName
527Assert.Equal(binlogDirectory.FullName, Path.GetDirectoryName(binlogPath));
547[KnownConfigNames.CliDotnetBinlogDirectory] = workspace.WorkspaceRoot.CreateSubdirectory("binlogs").FullName
576var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
577await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
613var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
614await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
654var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
655await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
699var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
700await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
754var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
755await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
851var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
852await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
891var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
892await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
933var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
934await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
980var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
981await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1022[KnownConfigNames.UnixSocketPath] = Path.Combine(workspace.WorkspaceRoot.FullName, "cli.sock")
1043var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1044await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1077[KnownConfigNames.UnixSocketPath] = Path.Combine(workspace.WorkspaceRoot.FullName, "cli.sock")
1089var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1090await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1115[KnownConfigNames.UnixSocketPath] = Path.Combine(workspace.WorkspaceRoot.FullName, "cli.sock")
1131var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1132await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1157[KnownConfigNames.UnixSocketPath] = Path.Combine(workspace.WorkspaceRoot.FullName, "cli.sock")
1173var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1174await File.WriteAllTextAsync(appHostFile.FullName, "// Single-file AppHost");
1191Assert.Contains(appHostFile.FullName, args);
1199var filePathIndex = Array.IndexOf(args, appHostFile.FullName);
1226var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1227await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
1243Assert.Contains(projectFile.FullName, args);
1254var projectValueIndex = Array.IndexOf(args, projectFile.FullName);
1293var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1294await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
1314Assert.Contains(projectFile.FullName, args);
1324var projectValueIndex = Array.IndexOf(args, projectFile.FullName);
1359var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1360await File.WriteAllTextAsync(projectFile.FullName, "<Project></Project>");
1380Assert.Contains(projectFile.FullName, args);
1392var projectValueIndex = Array.IndexOf(args, projectFile.FullName);
1432var solutionFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Test.sln"));
1433await File.WriteAllTextAsync(solutionFile.FullName, "Not a real solution file.");
1437var project1File = new FileInfo(Path.Combine(project1Dir.FullName, "Project1.csproj"));
1438await File.WriteAllTextAsync(project1File.FullName, "Not a real project file.");
1441var project2File = new FileInfo(Path.Combine(project2Dir.FullName, "Project2.csproj"));
1442await File.WriteAllTextAsync(project2File.FullName, "Not a real project file.");
1479var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1480await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1482var referencedProject = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Service.csproj"));
1483await File.WriteAllTextAsync(referencedProject.FullName, "Not a real project file.");
1497Assert.Contains(projectFile.FullName, args);
1499Assert.Contains(referencedProject.FullName, args);
1512var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1513await File.WriteAllTextAsync(appHostFile.FullName, "// Single-file AppHost");
1535arg => Assert.Equal(appHostFile.FullName, arg),
1559var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1560await File.WriteAllTextAsync(appHostFile.FullName, "// Single-file AppHost");
1581arg => Assert.Equal(appHostFile.FullName, arg),
1605var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1606await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1642var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1643await File.WriteAllTextAsync(appHostFile.FullName, "// Single-file AppHost");
1679var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1680await File.WriteAllTextAsync(appHostFile.FullName, "// Single-file AppHost");
1695arg => Assert.Equal(appHostFile.FullName, arg),
1720var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1721await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1765var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1766await File.WriteAllTextAsync(appHostFile.FullName, "// Single-file AppHost");
1793arg => Assert.Equal(appHostFile.FullName, arg),
1817var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1818await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1842arg => Assert.Equal(projectFile.FullName, arg),
1866var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1867await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1890arg => Assert.Equal(projectFile.FullName, arg),
1914var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1915await File.WriteAllTextAsync(appHostFile.FullName, "// Single-file AppHost");
1951var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1952await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1986var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1987await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2029var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2030await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2071var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2072await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2111var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2112await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2150var projectDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "RunPropertiesApp"));
2151var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "RunPropertiesApp.csproj"));
2152await File.WriteAllTextAsync(projectFile.FullName, """
2162await File.WriteAllTextAsync(Path.Combine(projectDirectory.FullName, "Program.cs"), "Console.WriteLine(\"Hello\");");
2166WorkingDirectory = projectDirectory.FullName,
2172processStartInfo.ArgumentList.Add(projectFile.FullName);
2188Assert.Equal(Path.Combine(projectDirectory.FullName, "relative-working-directory"), properties.GetProperty("RunWorkingDirectory").GetString());
2196var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2197await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2417var packagePath = Path.Combine(packagesDirectory.FullName, $"Aspire.ProjectTemplates.{packageVersion}.nupkg");
2430Assert.Equal(workspace.WorkspaceRoot.FullName, workingDirectory.FullName);
2487var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2488await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2525var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2526await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2563var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2564await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2603var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2604await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2642var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2643await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
DotNet\ProcessExecutionDetachedTests.cs (27)
53var dcpPath = Path.Combine(workspace.WorkspaceRoot.FullName, "fake-dcp");
54var capturePath = Path.Combine(workspace.WorkspaceRoot.FullName, "capture.txt");
92workspace.WorkspaceRoot.FullName,
107$"cwd={PathNormalizer.ResolveSymlinks(workspace.WorkspaceRoot.FullName)}",
135var dcpPath = Path.Combine(workspace.WorkspaceRoot.FullName, "fake-dcp");
136var startedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "dcp-started.txt");
162workspace.WorkspaceRoot.FullName,
217var dcpPath = Path.Combine(workspace.WorkspaceRoot.FullName, "fake-dcp");
240workspace.WorkspaceRoot.FullName,
255var dcpPath = Path.Combine(workspace.WorkspaceRoot.FullName, "fake-dcp");
256var capturePath = Path.Combine(workspace.WorkspaceRoot.FullName, "child-pid.txt");
282workspace.WorkspaceRoot.FullName,
309var dcpPath = BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName);
310var capturePath = Path.Combine(workspace.WorkspaceRoot.FullName, "bundle-version-dir.txt");
332LayoutPath = versionDirectory.FullName
334var versionLease = BundleVersionLease.Acquire(versionDirectory.FullName, "test", "dcp-fork-process");
340workspace.WorkspaceRoot.FullName,
352Assert.Equal(Path.GetFullPath(versionDirectory.FullName), (await File.ReadAllTextAsync(capturePath)).Trim());
365var dcpPath = BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName);
386LayoutPath = versionDirectory.FullName
392workspace.WorkspaceRoot.FullName,
398Assert.True(BundleVersionLease.HasActiveLease(versionDirectory.FullName));
402Assert.False(BundleVersionLease.HasActiveLease(versionDirectory.FullName));
415var dcpPath = BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName);
436LayoutPath = versionDirectory.FullName
443workspace.WorkspaceRoot.FullName,
463Assert.False(BundleVersionLease.HasActiveLease(versionDirectory.FullName));
DotNet\ProcessExecutionTests.cs (27)
40var outputFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "output.json"));
41await File.WriteAllTextAsync(outputFile.FullName, CreateJsonPayload(lineCount: 400));
100var outputFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "output.json"));
101await File.WriteAllTextAsync(outputFile.FullName, CreateJsonPayload(lineCount: 400));
290var scriptFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "emit-output.cmd"));
293$"type \"{outputFile.FullName}\"" + Environment.NewLine;
294await File.WriteAllTextAsync(scriptFile.FullName, content);
299var scriptFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "emit-output.sh"));
302$"cat \"{outputFile.FullName}\"" + Environment.NewLine;
303await File.WriteAllTextAsync(scriptFile.FullName, content);
306scriptFile.FullName,
319var scriptFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "emit-delayed-output.cmd"));
326$"type \"{outputFile.FullName}\"" + Environment.NewLine;
327await File.WriteAllTextAsync(scriptFile.FullName, content);
332var scriptFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "emit-delayed-output.sh"));
337$"cat \"{outputFile.FullName}\"" + Environment.NewLine;
338await File.WriteAllTextAsync(scriptFile.FullName, content);
341scriptFile.FullName,
354var scriptFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "long-running.cmd"));
358await File.WriteAllTextAsync(scriptFile.FullName, content);
363var scriptFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "long-running.sh"));
367await File.WriteAllTextAsync(scriptFile.FullName, content);
370scriptFile.FullName,
390WorkingDirectory = scriptFile.Directory!.FullName,
391ArgumentList = { "/d", "/c", scriptFile.FullName }
402WorkingDirectory = scriptFile.Directory!.FullName,
403ArgumentList = { scriptFile.FullName }
Git\GitRepositoryTests.cs (16)
37await GitTestHelper.ConfigureGitIdentityAsync(workspace.WorkspaceRoot.FullName);
41var trackedFile = Path.Combine(appDir.FullName, "AppHost.csproj");
46var untrackedFile = Path.Combine(samplesDir.FullName, "Sample.csproj");
50var gitignorePath = Path.Combine(workspace.WorkspaceRoot.FullName, ".gitignore");
55var ignoredFile = Path.Combine(binDir.FullName, "Stale.csproj");
59await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "add", "App/AppHost.csproj", ".gitignore");
60await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "commit", "-m", "init");
80await GitTestHelper.ConfigureGitIdentityAsync(workspace.WorkspaceRoot.FullName);
82var trackedFile = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj");
84await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "add", "AppHost.csproj");
85await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "commit", "-m", "init");
107await GitTestHelper.ConfigureGitIdentityAsync(workspace.WorkspaceRoot.FullName);
109var trackedFile = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj");
111await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "add", "AppHost.csproj");
112await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "commit", "-m", "init");
135Assert.Equal(workspace.WorkspaceRoot.FullName, startedActivity.GetTagItem(ProfilingTelemetry.Tags.GitWorkingDirectory));
Git\GitWorktreeTests.cs (52)
17Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".git"));
18var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost", "AppHost.csproj");
21Assert.Null(GitWorktree.TryGetLinkedWorktreeRoot(workspace.WorkspaceRoot.FullName));
28var fixtureRoot = workspace.WorkspaceRoot.FullName;
29var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
47var fixtureRoot = workspace.WorkspaceRoot.FullName;
48var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
63var worktreeRoot = workspace.WorkspaceRoot.FullName;
79var fixtureRoot = workspace.WorkspaceRoot.FullName;
81Path.Combine(fixtureRoot, "physical", "checkouts", "feature")).FullName;
119var fixtureRoot = workspace.WorkspaceRoot.FullName;
120var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
139var fixtureRoot = workspace.WorkspaceRoot.FullName;
140var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "checkout")).FullName;
142Path.Combine(fixtureRoot, "physical", "primary", ".git", "worktrees", "feature")).FullName;
181var worktreeRoot = workspace.WorkspaceRoot.FullName;
199var fixtureRoot = workspace.WorkspaceRoot.FullName;
200var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
219var worktreeRoot = workspace.WorkspaceRoot.FullName;
240var fixtureRoot = workspace.WorkspaceRoot.FullName;
241var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
281var fixtureRoot = workspace.WorkspaceRoot.FullName;
282var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
286var submoduleRoot = Directory.CreateDirectory(Path.Combine(worktreeRoot, "extern", "dep")).FullName;
298var fixtureRoot = workspace.WorkspaceRoot.FullName;
299var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
313var fixtureRoot = workspace.WorkspaceRoot.FullName;
315var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
317var otherWorktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "other-worktree")).FullName;
332var fixtureRoot = workspace.WorkspaceRoot.FullName;
333var worktreeRoot = Directory.CreateDirectory(Path.Combine(fixtureRoot, "worktree")).FullName;
345Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".git"));
346var submoduleRoot = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "extern", "dep")).FullName;
349Path.Combine(workspace.WorkspaceRoot.FullName, ".git", "modules", "dep"));
360Assert.Null(GitWorktree.TryGetLinkedWorktreeRoot(workspace.WorkspaceRoot.FullName));
369var primaryRoot = workspace.WorkspaceRoot.FullName;
371var worktreeRoot = Directory.CreateDirectory(Path.Combine(primaryRoot, ".worktrees", "feature")).FullName;
386var primaryRoot = workspace.WorkspaceRoot.FullName;
388var worktreeRoot = Directory.CreateDirectory(Path.Combine(primaryRoot, ".worktrees", "feature")).FullName;
390var submoduleRoot = Directory.CreateDirectory(Path.Combine(worktreeRoot, "extern", "dep")).FullName;
403var primaryRoot = workspace.WorkspaceRoot.FullName;
405var submoduleRoot = Directory.CreateDirectory(Path.Combine(primaryRoot, "extern", "dep")).FullName;
442var repoBSubmoduleRoot = Directory.CreateDirectory(Path.Combine(repoBRoot, "extern", "dep")).FullName;
457var worktreeRoot = Directory.CreateDirectory(Path.Combine(primaryRoot, ".worktrees", "feature")).FullName;
468var workingDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "plain")).FullName;
469var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "other", "App.csproj");
479var unmanagedDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "outside")).FullName;
493var root = Directory.CreateDirectory(Path.Combine(parent.FullName, name)).FullName;
Layout\LayoutDiscoveryReparsePointTests.cs (11)
37workspace.WorkspaceRoot.FullName,
46var linksDir = Path.Combine(workspace.WorkspaceRoot.FullName, "WinGet", "Links");
69var rawLayoutRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "custom-layout");
72var realBinaryDir = Path.Combine(workspace.WorkspaceRoot.FullName, "real-binary");
95var layoutRoot = workspace.WorkspaceRoot.FullName;
139var binaryDir = Path.Combine(workspace.WorkspaceRoot.FullName, "opt", "aspire", "bin");
144var aspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, "home", ".aspire");
182var relativeLayoutRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "colocated");
190var aspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, "home", ".aspire");
221var layoutRoot = workspace.WorkspaceRoot.FullName;
228Path.Combine(managedDir.FullName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
Mcp\Docs\DocsCacheTests.cs (4)
37var cacheFiles = Directory.GetFiles(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cache", "docs"))
87var cacheFiles = Directory.GetFiles(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cache", "docs"))
125new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives")),
126new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cache")),
Migrations\TypeScriptAppHostMigrationTests.cs (28)
54var appHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts");
71Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts"),
83await File.WriteAllTextAsync(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"), "// legacy");
84await File.WriteAllTextAsync(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts"), "// modern");
95await File.WriteAllTextAsync(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"), "// csharp");
106var appHostDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "external-apphost"));
108var appHostPath = Path.Combine(appHostDirectory.FullName, "apphost.ts");
152await File.WriteAllTextAsync(Path.Combine(root.FullName, "apphost.ts"), LegacyAppHostContent);
154Path.Combine(root.FullName, "aspire.config.json"),
163Path.Combine(root.FullName, "tsconfig.apphost.json"),
171Path.Combine(root.FullName, "package.json"),
181await File.WriteAllTextAsync(Path.Combine(root.FullName, "eslint.config.mjs"), LegacyEslintConfigContent);
183var modulesDir = Directory.CreateDirectory(Path.Combine(root.FullName, ".modules"));
184await File.WriteAllTextAsync(Path.Combine(modulesDir.FullName, "aspire.ts"), "// generated");
189var config = JsonNode.Parse(await File.ReadAllTextAsync(Path.Combine(root.FullName, "aspire.config.json")))!;
192var tsconfig = JsonNode.Parse(await File.ReadAllTextAsync(Path.Combine(root.FullName, "tsconfig.apphost.json")))!;
196var packageJson = JsonNode.Parse(await File.ReadAllTextAsync(Path.Combine(root.FullName, "package.json")))!;
201var eslintConfig = await File.ReadAllTextAsync(Path.Combine(root.FullName, "eslint.config.mjs"));
214Assert.False(File.Exists(Path.Combine(root.FullName, "apphost.ts")));
215Assert.False(Directory.Exists(Path.Combine(root.FullName, ".modules")));
217var modernContent = await File.ReadAllTextAsync(Path.Combine(root.FullName, "apphost.mts"));
229var appHostDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "external-apphost"));
232await CreateMigration(workspace).ApplyAsync(new MigrationContext(new FileInfo(Path.Combine(appHostDirectory.FullName, "apphost.ts"))), CancellationToken.None);
234Assert.False(File.Exists(Path.Combine(appHostDirectory.FullName, "apphost.ts")));
235Assert.False(Directory.Exists(Path.Combine(appHostDirectory.FullName, ".modules")));
236Assert.Equal(ExpectedModernAppHostContent, await File.ReadAllTextAsync(Path.Combine(appHostDirectory.FullName, "apphost.mts")));
278var migratedContent = await File.ReadAllTextAsync(Path.Combine(root.FullName, "apphost.mts"));
282Assert.Equal(migratedContent, await File.ReadAllTextAsync(Path.Combine(root.FullName, "apphost.mts")));
NuGet\BundleNuGetServiceTests.cs (39)
25managedDirectory.FullName,
36new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
44workingDirectory: appHostDirectory.FullName);
46var restoreRoot = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "integrations", "package-restore");
47var restoreDirectory = Directory.GetParent(manifestPath)!.FullName;
66managedDirectory.FullName,
72new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
81workingDirectory: appHostDirectory.FullName);
86workingDirectory: appHostDirectory.FullName);
100managedDirectory.FullName,
104var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
114new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
122workingDirectory: appHostDirectory.FullName,
137managedDirectory.FullName,
144workspace.WorkspaceRoot.FullName,
160new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
166var result = await service.RestorePackagesAsync(packageList, workingDirectory: appHostDirectory.FullName);
181managedDirectory.FullName,
188workspace.WorkspaceRoot.FullName,
211new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
217var result = await service.RestorePackagesAsync(packageList, workingDirectory: appHostDirectory.FullName);
234managedDirectory.FullName,
240new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
248workingDirectory: appHostDirectory.FullName);
254workingDirectory: appHostDirectory.FullName);
269managedDirectory.FullName,
275new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
281var restoreRoot = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "integrations", "package-restore");
286workingDirectory: firstAppHost.FullName);
289workingDirectory: secondAppHost.FullName);
298workingDirectory: secondAppHost.FullName);
313managedDirectory.FullName,
354new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
361var firstRestoreTask = service.RestorePackagesAsync(packageList, workingDirectory: appHostDirectory.FullName);
364var secondRestoreTask = service.RestorePackagesAsync(packageList, workingDirectory: appHostDirectory.FullName);
384managedDirectory.FullName,
390var restoreDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "integrations", "package-restore", packageHash);
403new FixedLayoutDiscovery(new LayoutConfiguration { LayoutPath = layoutRoot.FullName }),
411var result = await service.RestorePackagesAsync(packageList, workingDirectory: appHostDirectory.FullName);
Packaging\NuGetConfigMergerSnapshotTests.cs (11)
34var path = Path.Combine(dir.FullName, "nuget.config");
73var updated = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
80var hivePath = Path.Combine(hivesDir.FullName, channelName).Replace('\\', '/');
135var updated = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
142var hivePath = Path.Combine(hivesDir.FullName, channelName).Replace('\\', '/');
196var updated = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
203var hivePath = Path.Combine(hivesDir.FullName, channelName).Replace('\\', '/');
255var updated = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
262var hivePath = Path.Combine(hivesDir.FullName, channelName).Replace('\\', '/');
319var updated = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
326var hivePath = Path.Combine(hivesDir.FullName, channelName).Replace('\\', '/');
Packaging\NuGetConfigMergerTests.cs (23)
24var path = Path.Combine(dir.FullName, "nuget.config");
46var targetConfigPath = Path.Combine(root.FullName, "nuget.config");
50var expected = await File.ReadAllTextAsync(tempConfig.ConfigFile.FullName);
70var targetConfigPath = Path.Combine(root.FullName, "nuget.config");
114var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
153var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
197var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
237var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
347var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
397var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
466var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
530var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
586var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
668var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
718var xml = XDocument.Load(Path.Combine(root.FullName, "nuget.config"));
759var targetConfigPath = Path.Combine(root.FullName, "nuget.config");
761Assert.Equal(targetConfigPath, callbackTargetFile.FullName);
789var targetConfigPath = Path.Combine(root.FullName, "nuget.config");
839var targetConfigPath = Path.Combine(root.FullName, "nuget.config");
841Assert.Equal(targetConfigPath, callbackTargetFile.FullName);
861var originalContent = await File.ReadAllTextAsync(Path.Combine(root.FullName, "nuget.config")).DefaultTimeout();
882var targetConfigPath = Path.Combine(root.FullName, "nuget.config");
904var targetConfigPath = Path.Combine(root.FullName, "nuget.config");
Packaging\PackageChannelTests.cs (61)
142packagesDirectory.FullName,
147Path.Combine(nestedDirectory.FullName, "Aspire.ProjectTemplates.13.6.0.nupkg"),
150var packageSource = packagesDirectory.FullName.Replace('\\', '/');
176var packageSource = packagesDirectory.FullName.Replace('\\', '/');
178File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.5.0.nupkg"), string.Empty);
182File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.ProjectTemplates.{pinnedVersion}.nupkg"), string.Empty);
223var packageSource = packagesDirectory.FullName.Replace('\\', '/');
225File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.5.0.nupkg"), string.Empty);
228File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.ProjectTemplates.{pinnedVersion}.nupkg"), string.Empty);
266File.WriteAllText(Path.Combine(channelPackagesDirectory.FullName, "Aspire.ProjectTemplates.13.4.0-preview.1.nupkg"), string.Empty);
269var nestedDirectory = Directory.CreateDirectory(Path.Combine(overridePackagesDirectory.FullName, "aspire.projecttemplates", "13.5.0-preview.2"));
270File.WriteAllText(Path.Combine(nestedDirectory.FullName, "Aspire.ProjectTemplates.13.5.0-preview.2.nupkg"), string.Empty);
276var channelSource = channelPackagesDirectory.FullName.Replace('\\', '/');
277var overrideSource = overridePackagesDirectory.FullName.Replace('\\', '/');
304var nestedDirectory = Directory.CreateDirectory(Path.Combine(packagesDirectory.FullName, "aspire.projecttemplates", "13.5.0-preview.2"));
305File.WriteAllText(Path.Combine(nestedDirectory.FullName, "Aspire.ProjectTemplates.13.5.0-preview.2.nupkg"), string.Empty);
312var source = packagesDirectory.FullName.Replace('\\', '/');
332File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.Redis.{pinnedVersion}.nupkg"), string.Empty);
333File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.PostgreSQL.{pinnedVersion}.nupkg"), string.Empty);
334File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"CommunityToolkit.Aspire.Hosting.NodeJS.{pinnedVersion}.nupkg"), string.Empty);
337File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.SqlServer.13.3.0.nupkg"), string.Empty);
340File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.ProjectTemplates.{pinnedVersion}.nupkg"), string.Empty);
347File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.AppHost.{pinnedVersion}.nupkg"), string.Empty);
348File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.Sdk.{pinnedVersion}.nupkg"), string.Empty);
349File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.Orchestration.linux-arm64.{pinnedVersion}.nupkg"), string.Empty);
350File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.Testing.{pinnedVersion}.nupkg"), string.Empty);
351File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.Msi.{pinnedVersion}.nupkg"), string.Empty);
352File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.Integration.Analyzers.{pinnedVersion}.nupkg"), string.Empty);
355File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.Dapr.{pinnedVersion}.nupkg"), string.Empty);
356File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.GitHub.Models.{pinnedVersion}.nupkg"), string.Empty);
357File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.Hosting.NodeJs.{pinnedVersion}.nupkg"), string.Empty);
363var packageSource = packagesDirectory.FullName.Replace('\\', '/');
411var packageSource = packagesDirectory.FullName.Replace('\\', '/');
434var config = AspireConfigFile.LoadOrCreate(workspace.WorkspaceRoot.FullName);
437config.Save(workspace.WorkspaceRoot.FullName);
439var packageSource = packagesDirectory.FullName.Replace('\\', '/');
469var packageSource = packagesDirectory.FullName.Replace('\\', '/');
640File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Redis.13.4.0.nupkg"), string.Empty);
641File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Redis.13.5.0-preview.1.nupkg"), string.Empty);
642File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.PostgreSQL.13.4.0-preview.1.nupkg"), string.Empty);
659File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Redis.13.4.0.nupkg"), string.Empty);
660File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Redis.13.5.0-preview.1.nupkg"), string.Empty);
661File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.PostgreSQL.13.4.0.nupkg"), string.Empty);
678File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Redis.13.5.0.nupkg"), string.Empty);
679File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Redis.13.6.0-preview.1.nupkg"), string.Empty);
680File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Azure.Kubernetes.13.6.0-pr.19404.gf51e8e1d.nupkg"), string.Empty);
709File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Dapr.13.4.0.nupkg"), string.Empty);
710File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Sql.13.4.0.nupkg"), string.Empty);
729File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Dapr.13.4.0.nupkg"), string.Empty);
730File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.Hosting.Sql.13.4.0.nupkg"), string.Empty);
749var config = AspireConfigFile.LoadOrCreate(workspace.WorkspaceRoot.FullName);
752config.Save(workspace.WorkspaceRoot.FullName);
754var packageSource = packagesDirectory.FullName.Replace('\\', '/');
780var config = AspireConfigFile.LoadOrCreate(workspace.WorkspaceRoot.FullName);
783config.Save(workspace.WorkspaceRoot.FullName);
785var packageSource = packagesDirectory.FullName.Replace('\\', '/');
908new PackageMapping("Aspire*", packagesDirectory.FullName.Replace('\\', '/')),
925new PackageMapping("Aspire*", new Uri(packagesDirectory.FullName).AbsoluteUri),
1000var packageSource = packagesDirectory.FullName.Replace('\\', '/');
1012CreatePackageWithTags(Path.Combine(packagesDirectory.FullName, $"{packageId}.{version}.nupkg"), packageId, version, tags);
1017var packagePath = Path.Combine(packagesDirectory.FullName, packageId.ToLowerInvariant(), version, $"{packageId}.{version}.nupkg");
Packaging\PackagingServiceTests.cs (135)
27var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
60var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
96var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
200var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
237var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
270var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
304var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
360var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
425var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
457var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
487var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
512var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
540var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
567var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
593var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
613var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
634var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
664var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
696var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
718var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
746var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
771var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
815var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
839var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
882var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
914var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
946var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
977var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1007var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1037var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1067var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1121var nugetConfigPath = Path.Combine(tempDir.FullName, "nuget.config");
1146var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1150Directory.CreateDirectory(Path.Combine(hivesDir.FullName, "pr-10167"));
1151Directory.CreateDirectory(Path.Combine(hivesDir.FullName, "pr-11832"));
1202var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1206Directory.CreateDirectory(Path.Combine(hivesDir.FullName, "pr-12345"));
1242var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1277var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1312var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1376var nugetConfigPath = Path.Combine(tempDir.FullName, "nuget.config");
1393var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1425var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1455var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1486var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1488var localPackagesDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, "local", "packages"));
1492File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.ProjectTemplates.{localVersion}.nupkg"), string.Empty);
1493File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.{localVersion}.nupkg"), string.Empty);
1513var installPrefix = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "custom-aspire-prefix"));
1514var processPath = Path.Combine(installPrefix.FullName, "dogfood", prChannelName, "bin", "aspire");
1518var packagesDirectory = Directory.CreateDirectory(Path.Combine(installPrefix.FullName, "hives", prChannelName, "packages"));
1519File.WriteAllText(Path.Combine(packagesDirectory.FullName, $"Aspire.ProjectTemplates.{prVersion}.nupkg"), string.Empty);
1524var defaultHivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1543mapping.Source == packagesDirectory.FullName.Replace('\\', '/'));
1556var defaultHivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1557var defaultPackagesDirectory = Directory.CreateDirectory(Path.Combine(defaultHivesDir.FullName, prChannelName, "packages"));
1558File.WriteAllText(Path.Combine(defaultPackagesDirectory.FullName, $"Aspire.ProjectTemplates.{defaultHiveVersion}.nupkg"), string.Empty);
1560var installPrefix = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "custom-aspire-prefix"));
1561var processPath = Path.Combine(installPrefix.FullName, "dogfood", prChannelName, "bin", "aspire");
1565var dogfoodPackagesDirectory = Directory.CreateDirectory(Path.Combine(installPrefix.FullName, "hives", prChannelName, "packages"));
1566File.WriteAllText(Path.Combine(dogfoodPackagesDirectory.FullName, $"Aspire.ProjectTemplates.{dogfoodHiveVersion}.nupkg"), string.Empty);
1586mapping.Source == dogfoodPackagesDirectory.FullName.Replace('\\', '/'));
1596var installPrefix = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "custom-aspire-prefix"));
1597var processPath = Path.Combine(installPrefix.FullName, "dogfood", prChannelName, "bin", "aspire");
1601var packagesDirectory = Directory.CreateDirectory(Path.Combine(installPrefix.FullName, "hives", prChannelName, "packages"));
1602File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.not-a-semver.nupkg"), string.Empty);
1606hivesDirectory: new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives")),
1622mapping.Source == packagesDirectory.FullName.Replace('\\', '/'));
1632var installPrefix = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "custom-aspire-prefix"));
1633var processPath = Path.Combine(installPrefix.FullName, "dogfood", prChannelName, "bin", "aspire");
1639hivesDirectory: new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives")),
1662var installPrefix = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "custom-aspire-prefix"));
1663var processPath = Path.Combine(installPrefix.FullName, "dogfood", installedPrChannelName, "bin", "aspire");
1666Directory.CreateDirectory(Path.Combine(installPrefix.FullName, "hives", identityPrChannelName, "packages"));
1670hivesDirectory: new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives")),
1694hivesDirectory: new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives")),
1718var installPrefix = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "custom-aspire-prefix"));
1719var processPath = Path.Combine(installPrefix.FullName, "dogfood", prChannelName, "bin", "aspire");
1722Directory.CreateDirectory(Path.Combine(installPrefix.FullName, "hives", prChannelName, "packages"));
1726hivesDirectory: new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives")),
1754var installPrefix = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "custom-aspire-prefix"));
1755var processPath = Path.Combine(installPrefix.FullName, "bin", "aspire");
1758Directory.CreateDirectory(Path.Combine(installPrefix.FullName, "hives", prChannelName, "packages"));
1774var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1776var localPackagesDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, "local", "packages"));
1780File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.ProjectTemplates.{localVersion}.nupkg"), string.Empty);
1793Assert.Equal(localPackagesDir.FullName.Replace('\\', '/'), package.Source);
1815var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1867var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1918var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1964var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
1968var localPackagesDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, localHiveName, "packages"));
1972File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.ProjectTemplates.{pinnedVersion}.nupkg"), string.Empty);
1998var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
2001var runPackagesDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, runHiveName, "packages"));
2005File.WriteAllText(Path.Combine(runPackagesDir.FullName, $"Aspire.ProjectTemplates.{pinnedVersion}.nupkg"), string.Empty);
2032var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
2035var localPackagesDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, "local", "packages"));
2040File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.{localVersion}.nupkg"), string.Empty);
2042File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.Redis.{localVersion}.nupkg"), string.Empty);
2043File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.Hosting.JavaScript.{localVersion}.nupkg"), string.Empty);
2045File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.ProjectTemplates.{localVersion}.nupkg"), string.Empty);
2046File.WriteAllText(Path.Combine(localPackagesDir.FullName, $"Aspire.AppHost.Sdk.{localVersion}.nupkg"), string.Empty);
2072var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
2075var localPackagesDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, PackageChannelNames.Local, "packages"));
2077File.WriteAllText(Path.Combine(localPackagesDir.FullName, "Aspire.Hosting.13.4.0-pr.16820.g1a99aa46.nupkg"), string.Empty);
2087var expectedLocalPath = localPackagesDir.FullName.Replace('\\', '/');
2112var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
2116var localHiveDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, PackageChannelNames.Local));
2131var expectedLocalPackagesPath = Path.Combine(localHiveDir.FullName, "packages").Replace('\\', '/');
2142var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
2145var localPackagesDir = new DirectoryInfo(Path.Combine(hivesDir.FullName, PackageChannelNames.Local, "packages"));
2165var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
2167var packagesOverrideDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "shipping"));
2169File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, $"Aspire.ProjectTemplates.{overrideVersion}.nupkg"), string.Empty);
2170File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, $"Aspire.Hosting.{overrideVersion}.nupkg"), string.Empty);
2184Assert.Equal(packagesOverrideDir.FullName.Replace('\\', '/'), aspireMapping.Source);
2194var hivesDir = new DirectoryInfo(Path.Combine(tempDir.FullName, ".aspire", "hives"));
2196var staleHiveDir = Directory.CreateDirectory(Path.Combine(hivesDir.FullName, PackageChannelNames.Daily, "packages"));
2197File.WriteAllText(Path.Combine(staleHiveDir.FullName, "Aspire.Hosting.13.4.0.nupkg"), string.Empty);
2199var packagesOverrideDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "shipping"));
2201File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, $"Aspire.Hosting.{overrideVersion}.nupkg"), string.Empty);
2214Assert.Equal(packagesOverrideDir.FullName.Replace('\\', '/'), aspireMapping.Source);
2226var packagesOverrideDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "shipping"));
2227File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, "Aspire.Hosting.13.4.1.nupkg"), string.Empty);
2228File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, "Aspire.Hosting.13.4.2.nupkg"), string.Empty);
2230File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, "Aspire.ProjectTemplates.13.4.2.nupkg"), string.Empty);
2254var packagesOverrideDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, "shipping"));
2255File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, "Aspire.Hosting.13.4.1.nupkg"), string.Empty);
2256var nestedDir = Directory.CreateDirectory(Path.Combine(packagesOverrideDir.FullName, "nested"));
2257File.WriteAllText(Path.Combine(nestedDir.FullName, "Aspire.Hosting.13.4.2.nupkg"), string.Empty);
2259File.WriteAllText(Path.Combine(nestedDir.FullName, "Aspire.ProjectTemplates.13.4.2.nupkg"), string.Empty);
2260File.WriteAllText(Path.Combine(packagesOverrideDir.FullName, "Aspire.ProjectTemplates.13.4.2.nupkg"), string.Empty);
2281var missingDir = new DirectoryInfo(Path.Combine(tempDir.FullName, "does-not-exist"));
2289Assert.Contains(missingDir.FullName, ex.Message);
Processes\ProcessTreeGracefulShutdownServiceTests.cs (23)
25File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), string.Empty);
38var signaler = CreateService(workspace, dcpDirectory.FullName, executionFactory);
46Assert.Equal(workspace.WorkspaceRoot.FullName, capturedWorkingDirectory.FullName);
62File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), string.Empty);
69var signaler = CreateService(workspace, dcpDirectory.FullName, executionFactory);
87File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(mutableDcpDirectory.FullName), string.Empty);
91var leasedDcpPath = BundleDiscovery.GetDcpExecutablePath(leasedDcpDirectory.FullName);
97Layout = new LayoutConfiguration { LayoutPath = versionRoot.FullName }
99var signaler = CreateService(workspace, mutableDcpDirectory.FullName, executionFactory, bundleService);
150File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), string.Empty);
168dcpDirectory.FullName,
175AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"),
206File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), string.Empty);
213dcpDirectory.FullName,
220AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"),
245File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), string.Empty);
252dcpDirectory.FullName,
259AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"),
284File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), string.Empty);
291dcpDirectory.FullName,
297AppHostPath = Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"),
330Path.Combine(workspace.WorkspaceRoot.FullName, "test.log"),
ProfileCaptureOptionsTests.cs (11)
39var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "profiles", "startup.zip");
64Assert.StartsWith(workspace.WorkspaceRoot.FullName, options.OutputPath, StringComparison.Ordinal);
74var outputDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "profiles"));
77["--capture-profile", "--capture-profile-output", outputDirectory.FullName],
83Assert.Equal(outputDirectory.FullName, Path.GetDirectoryName(options.OutputPath));
92var outputDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "profiles") + Path.DirectorySeparatorChar;
111workspace.WorkspaceRoot.FullName,
118managedBaseDirectory.FullName,
132workspace.WorkspaceRoot.FullName,
139managedBaseDirectory.FullName,
143var resolvedPath = ProfileCaptureService.ResolveRepoLocalManagedPath(workspace.WorkspaceRoot.FullName);
ProfileCaptureServiceTests.cs (9)
93var managedPath = Path.Combine(managedDirectory.FullName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName));
98Layout = new LayoutConfiguration { LayoutPath = layoutRoot.FullName }
321var outputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nested", "profile.zip");
463var managedPath = Path.Combine(managedDirectory.FullName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName));
467CreateConfiguration((BundleDiscovery.ManagedPathEnvVar, managedDirectory.FullName)));
476var missingPath = Path.Combine(workspace.WorkspaceRoot.FullName, "missing");
488var logPath = Path.Combine(workspace.WorkspaceRoot.FullName, "profile-service.log");
675var path = Path.Combine(workspace.WorkspaceRoot.FullName, fileName);
686outputPath ?? Path.Combine(workspace.WorkspaceRoot.FullName, "profile.zip"),
Projects\AppHostCandidateFinderTests.cs (99)
48var gitRepository = CreateGitRepository(gitListedAppHost.FullName);
53var path = Assert.Single(result.Files).FullName;
54Assert.Equal(gitListedAppHost.FullName, path);
55Assert.DoesNotContain(result.Files, file => file.FullName == diskOnlyAppHost.FullName);
73appHost.FullName
81var path = Assert.Single(result.Files).FullName;
82Assert.Equal(appHost.FullName, path);
83Assert.Equal(searchDirectory.FullName, capturedSearchRoot?.FullName);
92var missingAppHost = Path.Combine(workspace.WorkspaceRoot.FullName, "Removed", "AppHost.csproj");
93var gitRepository = CreateGitRepository(appHost.FullName, skipListedAppHost.FullName, missingAppHost);
98var path = Assert.Single(result.Files).FullName;
99Assert.Equal(appHost.FullName, path);
111var gitRepository = CreateGitRepository(agentSkillSnippetAppHost.FullName, claudeSkillSnippetAppHost.FullName);
129var gitRepository = CreateGitRepository(gitHubSkillSnippetAppHost.FullName, openCodeSkillSnippetAppHost.FullName, gitHubNonSkillAppHost.FullName);
134var path = Assert.Single(result.Files).FullName;
135Assert.Equal(gitHubNonSkillAppHost.FullName, path);
156var paths = result.Files.Select(file => file.FullName).ToHashSet();
158Assert.Equal(nonSkillAppHost.FullName, path);
168var searchRoot = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "obj"));
170var gitRepository = CreateGitRepository(appHost.FullName);
175var path = Assert.Single(result.Files).FullName;
176Assert.Equal(appHost.FullName, path);
186var gitRepository = CreateGitRepository(appHostNamedLikeExcludedDirectory.FullName, appHostInExcludedDirectory.FullName);
191var path = Assert.Single(result.Files).FullName;
192Assert.Equal(appHostNamedLikeExcludedDirectory.FullName, path);
193Assert.DoesNotContain(result.Files, file => file.FullName == appHostInExcludedDirectory.FullName);
203var gitRepository = CreateGitRepository(appHost.FullName, cachedAppHost.FullName);
205var nugetCachePath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget-cache");
209var path = Assert.Single(result.Files).FullName;
210Assert.Equal(appHost.FullName, path);
225var gitRepository = CreateGitRepository(appHost.FullName);
264var path = Assert.Single(result.Files).FullName;
265Assert.Equal(appHost.FullName, path);
291Assert.Equal(appHost.FullName, file.FullName);
315var nugetCachePath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget-cache");
319var paths = result.Files.Select(file => file.FullName).ToHashSet();
321Assert.Contains(appHost.FullName, paths);
322Assert.Contains(siblingAppHost.FullName, paths);
323Assert.DoesNotContain(cachedAppHost.FullName, paths);
339var differentlyCasedNuGetCachePath = Path.Combine(workspace.WorkspaceRoot.FullName, "NUGET-CACHE");
343var path = Assert.Single(result.Files).FullName;
344Assert.Equal(appHost.FullName, path);
345Assert.DoesNotContain(result.Files, file => file.FullName == cachedAppHost.FullName);
368var paths = result.Files.Select(file => file.FullName).ToHashSet();
370Assert.Contains(appHost.FullName, paths);
371Assert.Contains(skipListedAppHost.FullName, paths);
383var nugetCachePath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget-cache");
387var paths = result.Files.Select(file => file.FullName).ToHashSet();
389Assert.Contains(appHost.FullName, paths);
390Assert.DoesNotContain(cachedAppHost.FullName, paths);
413var path = Assert.Single(result.Files).FullName;
414Assert.Equal(appHost.FullName, path);
429var path = Assert.Single(result.Files).FullName;
430Assert.Equal(directAppHost.FullName, path);
431Assert.DoesNotContain(result.Files, file => file.FullName == nestedAppHost.FullName);
445Assert.DoesNotContain(result.Files, file => file.FullName == nestedAppHost.FullName);
455var gitRepository = CreateGitRepository(directAppHost.FullName, nestedAppHost.FullName);
460var path = Assert.Single(result.Files).FullName;
461Assert.Equal(directAppHost.FullName, path);
462Assert.DoesNotContain(result.Files, file => file.FullName == nestedAppHost.FullName);
477var paths = result.Files.Select(file => file.FullName).ToHashSet();
479Assert.Contains(csAppHost.FullName, paths);
480Assert.Contains(tsAppHost.FullName, paths);
492var gitRepository = CreateGitRepository(appHost.FullName);
524var path = Assert.Single(result.Files).FullName;
525Assert.Equal(appHost.FullName, path);
535await GitTestHelper.ConfigureGitIdentityAsync(workspace.WorkspaceRoot.FullName);
541await File.WriteAllTextAsync(Path.Combine(workspace.WorkspaceRoot.FullName, ".gitignore"), "legacy/\n");
543await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "add", "App/AppHost.csproj", ".gitignore");
544await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "commit", "-m", "init");
550var paths = result.Files.Select(file => file.FullName).ToHashSet();
552Assert.Contains(trackedAppHost.FullName, paths);
553Assert.Contains(untrackedTypeScriptAppHost.FullName, paths);
554Assert.DoesNotContain(ignoredAppHost.FullName, paths);
555Assert.DoesNotContain(skipListedAppHost.FullName, paths);
566await GitTestHelper.ConfigureGitIdentityAsync(workspace.WorkspaceRoot.FullName);
570await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "add", "src/App/AppHost.csproj", "Other/AppHost.csproj");
571await GitTestHelper.RunGitAsync(workspace.WorkspaceRoot.FullName, "commit", "-m", "init");
573var searchDirectory = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "src"));
578var path = Assert.Single(result.Files).FullName;
579Assert.Equal(scopedAppHost.FullName, path);
580Assert.DoesNotContain(result.Files, file => file.FullName == outsideAppHost.FullName);
607var fullPath = Path.Combine(root.FullName, relativePath.Replace('/', Path.DirectorySeparatorChar));
Projects\AppHostWorkloadIdTests.cs (18)
14var target = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
15File.WriteAllText(target.FullName, "<Project />");
17var linkPath = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.Link.csproj");
18TryCreateSymlink(linkPath, target.FullName, isDirectory: false);
31var target = new FileInfo(Path.Combine(nestedDirectory.FullName, "AppHost.csproj"));
32File.WriteAllText(target.FullName, "<Project />");
34var linkDirectoryPath = Path.Combine(workspace.WorkspaceRoot.FullName, "link");
35TryCreateSymlink(linkDirectoryPath, realDirectory.FullName, isDirectory: true);
49var target = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
50File.WriteAllText(target.FullName, "<Project />");
53AppHostWorkloadId.Create(target.FullName),
54AppHostWorkloadId.Create(Path.Combine(nestedDirectory.FullName, "..", "AppHost.csproj")));
61var target = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
62File.WriteAllText(target.FullName, "<Project />");
64var actual = AppHostWorkloadId.Create(target.FullName);
65var differentCasing = AppHostWorkloadId.Create(target.FullName.ToUpperInvariant());
81var target = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
82File.WriteAllText(target.FullName, "<Project />");
Projects\DotNetAppHostProjectTests.cs (115)
324Assert.Equal(appHostFile.FullName, projectFile.FullName);
357Assert.Equal(appHostFile.FullName, projectFile.FullName);
387var socketPath = CreateMatchingSocketFile(appHostFile.FullName, int.MaxValue - 1);
404var socketPath = CreateMatchingSocketFile(appHostFile.FullName, Environment.ProcessId);
445Assert.Equal(appHostFile.FullName, projectFile.FullName);
449Assert.Equal(bundleRoot.FullName, env!["AspireCliBundlePath"]);
450Assert.Equal(Path.Combine(bundleRoot.FullName, BundleDiscovery.DcpDirectoryName), env![BundleDiscovery.DcpPathEnvVar]);
452Path.Combine(bundleRoot.FullName, BundleDiscovery.ManagedDirectoryName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
458Path.Combine(bundleRoot.FullName, BundleDiscovery.ManagedDirectoryName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
482var customDcpDirectory = Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, "custom-dcp"));
483File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(customDcpDirectory.FullName), "");
485_workspace.WorkspaceRoot.FullName,
508Assert.Equal(customDcpDirectory.FullName, env![BundleDiscovery.DcpPathEnvVar]);
521[BundleDiscovery.DcpPathEnvVar] = customDcpDirectory.FullName,
535var inheritedDcpDirectory = Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, "inherited-dcp")).FullName;
537var inheritedDashboardPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "inherited-dashboard");
568Assert.Equal(bundleRoot.FullName, env["AspireCliBundlePath"]);
598: Path.Combine(_workspace.WorkspaceRoot.FullName, "missing-dcp");
601: Path.Combine(_workspace.WorkspaceRoot.FullName, "missing-dashboard");
833Assert.Equal(appHostFile.FullName, projectFile.FullName);
842Path.Combine(bundleRoot.FullName, BundleDiscovery.ManagedDirectoryName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
870var repoLocalManaged = Path.Combine(_workspace.WorkspaceRoot.FullName, "repo-local-aspire-managed");
899Path.Combine(bundleRoot.FullName, BundleDiscovery.ManagedDirectoryName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
928var customTerminalHost = Path.Combine(_workspace.WorkspaceRoot.FullName, "my-custom-terminal-host");
981var runWorkingDirectory = Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, "run-cwd"));
982var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
983var targetPathJson = JsonSerializer.Serialize(targetPath.FullName);
984var runWorkingDirectoryJson = JsonSerializer.Serialize(runWorkingDirectory.FullName);
1037Assert.Equal(appHostFile.FullName, projectFile.FullName);
1038Assert.Equal(appHostCommand.FullName, command);
1039Assert.Equal(runWorkingDirectory.FullName, workingDirectory.FullName);
1110GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1121"--apphost", appHostFile.FullName,
1122"--log-file", Path.Combine(_workspace.WorkspaceRoot.FullName, "child.log"),
1131Assert.Equal(appHostCommand.FullName, command);
1181GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1220GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1263GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1304GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1352GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1396GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1447GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1454Assert.Equal(appHostCommand.FullName, command);
1481var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
1512Assert.Equal(appHostFile.FullName, projectFile.FullName);
1536var missingTargetPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "bin", "missing", "AppHost.dll");
1547var outputDirectory = Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, "bin", Guid.NewGuid().ToString("N")));
1548var targetPath = Path.Combine(outputDirectory.FullName, "AppHost.dll");
1560var missingRunCommand = Path.Combine(_workspace.WorkspaceRoot.FullName, "bin", "missing", "AppHost");
1574() => CreateAppHostInfoJson(runCommand: appHostCommand.FullName, targetFrameworks: "net10.0;net9.0"));
1603() => CreateAppHostInfoJson(runCommand: appHostCommand.FullName),
1616() => CreateAppHostInfoJson(runCommand: appHostCommand.FullName),
1631var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
1668Assert.Equal(appHostCommand.FullName, command);
1717GetProjectItemsAndPropertiesAsyncCallback = (_, _, _, _, _) => (0, CreateAppHostInfoJson(runCommand: appHostCommand.FullName)),
1752var escapedTargetPath = targetPath.FullName.Replace("\\", "\\\\", StringComparison.Ordinal).Replace("\"", "\\\"", StringComparison.Ordinal);
1780Assert.Equal(["exec", targetPath.FullName, "--from-msbuild", "--explicit", "1"], args);
1802var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
1841Assert.Equal(appHostCommand.FullName, command);
1867var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
1904Assert.Equal(appHostCommand.FullName, command);
1928var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
1965Assert.Equal(appHostFile.FullName, projectFile.FullName);
1993var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
2025Assert.Equal(appHostFile.FullName, projectFile.FullName);
2050var appHostCommandJson = JsonSerializer.Serialize(appHostCommand.FullName);
2091Assert.Equal(appHostCommand.FullName, command);
2122Assert.Equal(appHostFile.FullName, projectFile.FullName);
2127Assert.Equal(appHostFile.FullName, projectFile.FullName);
2144Assert.Equal(appHostFile.FullName, projectFile.FullName);
2149Assert.Equal(Path.Combine(bundleRoot.FullName, BundleDiscovery.DcpDirectoryName), env![BundleDiscovery.DcpPathEnvVar]);
2151Path.Combine(bundleRoot.FullName, BundleDiscovery.ManagedDirectoryName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
2154Path.Combine(bundleRoot.FullName, BundleDiscovery.ManagedDirectoryName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
2198Assert.Equal(appHostFile.FullName, projectFile.FullName);
2233Assert.Equal(appHostFile.FullName, projectFile.FullName);
2278Assert.Equal(appHostFile.FullName, projectFile.FullName);
2532var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.cs");
2547var backchannelsDir = Path.Combine(_workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
2551var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(resolvedAppHostPath, _workspace.WorkspaceRoot.FullName);
2562var outputDirectory = Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, "bin", Guid.NewGuid().ToString("N")));
2563var targetPath = Path.Combine(outputDirectory.FullName, fileName);
2571var outputDirectory = Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, "bin", Guid.NewGuid().ToString("N")));
2572var commandPath = Path.Combine(outputDirectory.FullName, fileName);
2594Assert.Equal(appHostFile.FullName, projectFile.FullName);
3241Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, "outer", "inner-repo", ".git"));
3725var externalAnchor = Path.Combine(_workspace.WorkspaceRoot.FullName, "external", "anchor");
4155while (dir is not null && !File.Exists(Path.Combine(dir.FullName, "Aspire.slnx")))
4159return dir?.FullName;
4171Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, ".git"));
4173var path = Path.Combine(_workspace.WorkspaceRoot.FullName, fileName);
4208var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, fileName);
4225var projectPath = Path.Combine(_workspace.WorkspaceRoot.FullName, fileName);
4239var bundleRoot = Directory.CreateDirectory(Path.Combine(_workspace.WorkspaceRoot.FullName, Guid.NewGuid().ToString()));
4240var dcpDirectory = Directory.CreateDirectory(Path.Combine(bundleRoot.FullName, BundleDiscovery.DcpDirectoryName));
4241var managedDirectory = Directory.CreateDirectory(Path.Combine(bundleRoot.FullName, BundleDiscovery.ManagedDirectoryName));
4242File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), "");
4244Path.Combine(managedDirectory.FullName, BundleDiscovery.GetExecutableFileName(BundleDiscovery.ManagedExecutableName)),
4249LayoutPath = bundleRoot.FullName,
Projects\FallbackProjectParserTests.cs (14)
24var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.csproj");
46var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.csproj");
71var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.csproj");
96var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.csproj");
121var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.csproj");
147var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.csproj");
186var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.csproj");
208var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.cs");
232var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.cs");
262var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.cs");
285var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.cs");
309var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.cs");
332var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.cs");
354var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Test.txt");
Projects\GuestAppHostProjectTests.cs (60)
51var outputPath = Path.Combine(_workspace.WorkspaceRoot.FullName, ".aspire", "modules");
79var outputPath = Path.Combine(_workspace.WorkspaceRoot.FullName, ".aspire", "modules");
95var filePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "Generated.java");
111var filePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "Generated.java");
125var filePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "New.java");
136var filePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "aspire_app.py");
164var directory = _workspace.WorkspaceRoot.FullName;
178var settingsPath = Path.Combine(settingsDir.FullName, "settings.json");
187var config = AspireJsonConfiguration.LoadOrCreate(_workspace.WorkspaceRoot.FullName, "13.1.0");
198var settingsPath = Path.Combine(settingsDir.FullName, "settings.json");
210var config = AspireJsonConfiguration.Load(_workspace.WorkspaceRoot.FullName);
213config.Save(_workspace.WorkspaceRoot.FullName);
216var reloaded = AspireJsonConfiguration.Load(_workspace.WorkspaceRoot.FullName);
384var settingsPath = Path.Combine(settingsDir.FullName, "settings.json");
397var config = AspireJsonConfiguration.Load(_workspace.WorkspaceRoot.FullName);
400config.Save(_workspace.WorkspaceRoot.FullName);
428config.Save(_workspace.WorkspaceRoot.FullName);
431var settingsPath = AspireJsonConfiguration.GetFilePath(_workspace.WorkspaceRoot.FullName);
444var launchSettingsPath = Path.Combine(propertiesDir.FullName, "launchSettings.json");
533var aspireConfigPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
725var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
733var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
767var reloaded = AspireConfigFile.Load(_workspace.WorkspaceRoot.FullName);
778var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
786var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
808var reloaded = AspireConfigFile.Load(_workspace.WorkspaceRoot.FullName);
819var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
829var socketPath = CreateMatchingSocketFile(_workspace.WorkspaceRoot.FullName, int.MaxValue - 1);
843var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
852var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
889var reloaded = AspireConfigFile.Load(_workspace.WorkspaceRoot.FullName);
899var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
907var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
944var reloaded = AspireConfigFile.Load(_workspace.WorkspaceRoot.FullName);
954var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
963var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
995var reloaded = AspireConfigFile.Load(_workspace.WorkspaceRoot.FullName);
1024var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1041var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
1066var reloaded = AspireConfigFile.Load(_workspace.WorkspaceRoot.FullName);
1138var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
1180var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
1229var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
1259var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1267var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
1348var configPath = Path.Combine(_workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1356var appHostPath = Path.Combine(_workspace.WorkspaceRoot.FullName, "apphost.ts");
1437var backchannelsDir = Path.Combine(_workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
1441var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(resolvedAppHostPath, _workspace.WorkspaceRoot.FullName);
1471var logFilePath = Path.Combine(_workspace.WorkspaceRoot.FullName, $"test-guest-{Guid.NewGuid()}.log");
1536var devCertificatePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "aspire-dev-cert.pem");
1552Assert.False(Directory.Exists(Path.Combine(_workspace.WorkspaceRoot.FullName, "bundles")));
1558var devCertificatePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "aspire-dev-cert.pem");
1579var lowerCaseDirectory = Path.Combine(_workspace.WorkspaceRoot.FullName, "certificates");
1580var upperCaseDirectory = Path.Combine(_workspace.WorkspaceRoot.FullName, "CERTIFICATES");
1633var existingBundlePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "existing-ca-certs.pem");
1634var inheritedBundlePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "inherited-ca-certs.pem");
1635var devCertificateDirectory = Path.Combine(homeDirectory.FullName, ".aspire", "dev-certs");
1658homeDirectory.FullName,
1708var devCertificatePath = Path.Combine(_workspace.WorkspaceRoot.FullName, "aspire-dev-cert.pem");
Projects\GuestRuntimeTests.cs (33)
134Assert.Contains(appHostFile.FullName, launcher.LastArgs);
195Assert.Equal(["--project", directory.FullName], launcher.Calls[0].Args);
220Assert.Equal(["--no-install", "tsx", "--tsconfig", "tsconfig.apphost.json", appHostFile.FullName], call.Args);
285var appHostFile = new FileInfo(Path.Combine(directory.FullName, "apphost.ts"));
312Assert.Equal(new[] { "tsx", "--tsconfig", "tsconfig.apphost.json", appHostFile.FullName }, Assert.IsType<string[]>(executeActivity.GetTagItem(ProfilingTelemetry.Tags.ProcessCommandArgs)));
491Assert.Equal(["--no-install", "tsx", "--tsconfig", "tsconfig.apphost.json", appHostFile.FullName, "--operation", "publish"], call.Args);
565Assert.Equal(new[] { "tsx", appHostFile.FullName }, launcher.LastArgs);
583Assert.Equal(new[] { "--dir", directory.FullName }, launcher.LastArgs);
601Assert.Equal(appHostFile.FullName, launcher.LastArgs[0]);
1059Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "classes", ".aspire-compile-stamp")));
1089var input = Path.Combine(workspace.WorkspaceRoot.FullName, relativeInput.Replace('/', Path.DirectorySeparatorChar));
1110var classFile = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.class");
1138File.Delete(Path.Combine(workspace.WorkspaceRoot.FullName, relativeInput.Replace('/', Path.DirectorySeparatorChar)));
1153var pom = Path.Combine(workspace.WorkspaceRoot.FullName, "pom.xml");
1175var dependencies = Path.Combine(workspace.WorkspaceRoot.FullName, "target", "dependency");
1204var dependencies = Path.Combine(workspace.WorkspaceRoot.FullName, "target", "dependency");
1233var unrelated = Path.Combine(workspace.WorkspaceRoot.FullName, "vendor", "nested", "Vendored.java");
1275var nested = Path.Combine(workspace.WorkspaceRoot.FullName, "config", "Resources.java");
1299Path.Combine(workspace.WorkspaceRoot.FullName, "classes", "config", "Resources.class"),
1300Path.Combine(workspace.WorkspaceRoot.FullName, "node_modules", "vendor", "Vendored.java"),
1301Path.Combine(workspace.WorkspaceRoot.FullName, ".gradle", "caches", "Cached.java")
1346var unreadable = Path.Combine(workspace.WorkspaceRoot.FullName, "src", "main", "java", "locked");
1389Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "classes", ".aspire-compile-stamp")));
1414var appHostFile = new FileInfo(Path.Combine(root.FullName, "AppHost.java"));
1415File.WriteAllText(appHostFile.FullName, "class AppHost { }");
1416File.WriteAllText(Path.Combine(root.FullName, "Helper.java"), "class Helper { }");
1418var generated = Path.Combine(root.FullName, ".aspire", "modules", "com", "example");
1422var sources = Path.Combine(root.FullName, "src", "main", "java", "com", "example");
1426Directory.CreateDirectory(Path.Combine(root.FullName, "classes"));
1437foreach (var file in Directory.EnumerateFiles(root.FullName, "*", SearchOption.AllDirectories))
1443foreach (var directory in Directory.EnumerateDirectories(root.FullName, "*", SearchOption.AllDirectories))
1448Directory.SetLastWriteTimeUtc(root.FullName, timestampUtc);
1453var stamp = Path.Combine(root.FullName, "classes", ".aspire-compile-stamp");
Projects\LanguageInfoTests.cs (9)
65File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"), "");
67var result = s_typescript.FindInDirectory(workspace.WorkspaceRoot.FullName);
76File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "MyApp.csproj"), "");
78var result = s_csharp.FindInDirectory(workspace.WorkspaceRoot.FullName);
87var nested = Path.Combine(workspace.WorkspaceRoot.FullName, "src", "AppHost");
91var result = s_csharp.FindInDirectory(workspace.WorkspaceRoot.FullName);
101var deep = Path.Combine(workspace.WorkspaceRoot.FullName, "a", "b", "c", "d", "e", "f");
105var result = s_csharp.FindInDirectory(workspace.WorkspaceRoot.FullName);
114var result = s_csharp.FindInDirectory(workspace.WorkspaceRoot.FullName);
Projects\PrebuiltAppHostServerTests.cs (79)
31var path = Path.Combine(workspace.WorkspaceRoot.FullName, "IntegrationRestore.csproj");
48var path = Path.Combine(workspace.WorkspaceRoot.FullName, "IntegrationRestore.csproj");
61var path = Path.Combine(workspace.WorkspaceRoot.FullName, "IntegrationRestore.csproj");
87Assert.False(PrebuiltAppHostServer.CanSkipIntegrationRestore(workspace.WorkspaceRoot.FullName, "fingerprint", NullLogger.Instance));
94WriteRestoreState(workspace.WorkspaceRoot.FullName, fingerprint: "fingerprint", writeAssets: false);
96Assert.False(PrebuiltAppHostServer.CanSkipIntegrationRestore(workspace.WorkspaceRoot.FullName, "fingerprint", NullLogger.Instance));
103WriteRestoreState(workspace.WorkspaceRoot.FullName, fingerprint: "old-fingerprint");
105Assert.False(PrebuiltAppHostServer.CanSkipIntegrationRestore(workspace.WorkspaceRoot.FullName, "new-fingerprint", NullLogger.Instance));
112WriteRestoreState(workspace.WorkspaceRoot.FullName, fingerprint: "fingerprint");
114Assert.True(PrebuiltAppHostServer.CanSkipIntegrationRestore(workspace.WorkspaceRoot.FullName, "fingerprint", NullLogger.Instance));
121var referencedProject = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Hosting.Java.csproj");
139var referencedProject = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Hosting.Java.csproj");
144var packagesProps = Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props");
160var leaf = Path.Combine(workspace.WorkspaceRoot.FullName, "Leaf.csproj");
162var referencedProject = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Hosting.Java.csproj");
180var leaf = Path.Combine(workspace.WorkspaceRoot.FullName, "Leaf.csproj");
182var referencedProject = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Hosting.Java.csproj");
195var first = Path.Combine(workspace.WorkspaceRoot.FullName, "First.csproj");
196var second = Path.Combine(workspace.WorkspaceRoot.FullName, "Second.csproj");
212var referencedProject = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Hosting.Java.csproj");
226var referencedProject = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Hosting.Java.csproj");
241var referencedProject = Path.Combine(workspace.WorkspaceRoot.FullName, "Aspire.Hosting.Java.csproj");
571var server = CreatePrebuiltAppHostServer(workspace, appPath: appHostDirectory.FullName);
578var rootDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "integrations", "apphosts");
608var firstServer = CreateServer(firstAppHost.FullName);
609var secondServer = CreateServer(secondAppHost.FullName);
616var appHostsRoot = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "integrations", "apphosts");
760var doc = XDocument.Load(result.ConfigFile.FullName);
770var tempConfigDir = result.ConfigFile.Directory!.FullName;
819var doc = XDocument.Load(result.ConfigFile.FullName);
827var tempConfigDir = result.ConfigFile.Directory!.FullName;
879var doc = XDocument.Load(result.ConfigFile.FullName);
908var doc = XDocument.Load(result.ConfigFile.FullName);
937var doc = XDocument.Load(result.ConfigFile.FullName);
950var tempConfigDir = result.ConfigFile.Directory!.FullName;
984var doc = XDocument.Load(result.ConfigFile.FullName);
1030var doc = XDocument.Load(result.ConfigFile.FullName);
1053var doc = XDocument.Load(result.ConfigFile.FullName);
1288appPath ?? workspace.WorkspaceRoot.FullName,
1372var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1434Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "integrations", "package-restore"),
1563var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1573mappings: [new PackageMapping("Aspire*", packageSource.FullName)],
1603Assert.Equal([packageSource.FullName, NuGetOrgSource], GetSourceArguments(restoreArgs!));
1619var packageSourceUri = new Uri(packageSource.FullName).AbsoluteUri;
1622var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1682var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1694new PackageMapping("Aspire*", hivePackageSource.FullName),
1720packageSourceOverride: explicitPackageSource.FullName);
1724Assert.Equal([explicitPackageSource.FullName, channelSource], GetSourceArguments(restoreArgs!));
1725Assert.DoesNotContain(hivePackageSource.FullName, restoreArgs!);
1741var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1801var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1852var missingPackageSource = Path.Combine(workspace.WorkspaceRoot.FullName, "this-hive-was-deleted");
1856var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1921var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2004var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2093var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2108generatedProject = XDocument.Load(projectFilePath.FullName);
2173var localHive = workspace.CreateDirectory("local-aspire-hive").FullName;
2175var aspireConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2249generatedProject = XDocument.Load(projectFilePath.FullName);
2297var config = AspireConfigFile.LoadOrCreate(projectDirectory.FullName);
2299config.Save(projectDirectory.FullName);
2346appPath: projectDirectory.FullName,
2364Assert.Contains(projectDirectory.FullName, restoreInvocation!);
2675var firstSourcePath = Path.Combine(firstPackageRoot.FullName, "Aspire.Hosting.Redis.dll");
2676var secondSourcePath = Path.Combine(secondPackageRoot.FullName, "Aspire.Hosting.Redis.dll");
2720var firstPackagePath = Path.Combine(firstPackageRoot.FullName, "Aspire.Hosting.Redis.dll");
2721var secondPackagePath = Path.Combine(secondPackageRoot.FullName, "Aspire.Hosting.Redis.dll");
2722var projectPath = Path.Combine(projectRoot.FullName, "MyIntegration.dll");
2860managedDirectory.FullName,
2864return new LayoutConfiguration { LayoutPath = layoutRoot.FullName };
2880var sourcePath = Path.Combine(sourceRoot.FullName, relativePath.Replace('/', Path.DirectorySeparatorChar));
2900File.WriteAllLines(Path.Combine(restoreDirectory.FullName, PrebuiltAppHostServer.ClosureMetadataFileName), metadataLines);
2901File.WriteAllLines(Path.Combine(restoreDirectory.FullName, PrebuiltAppHostServer.ClosureSourcesFileName), sourcePaths);
2902File.WriteAllLines(Path.Combine(restoreDirectory.FullName, PrebuiltAppHostServer.ClosureTargetsFileName), targetPaths);
2903File.WriteAllLines(Path.Combine(restoreDirectory.FullName, PrebuiltAppHostServer.ProjectRefAssemblyNamesFileName), projectReferenceAssemblyNames);
2946File.WriteAllText(Path.Combine(objDirectory.FullName, "project.assets.json"), projectAssetsContent);
Projects\ProcessGuestLauncherTests.cs (12)
207var descendantPidFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "descendant.pid"));
334var scriptFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "spawn-descendant.ps1"));
341$"Set-Content -Path '{descendantPidFile.FullName}' -Value $child.Id" + Environment.NewLine +
343await File.WriteAllTextAsync(scriptFile.FullName, content);
345return ("powershell.exe", ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", scriptFile.FullName]);
348var shellFile = new FileInfo(Path.Combine(workspaceRoot.FullName, "spawn-descendant.sh"));
352$"echo $! > \"{descendantPidFile.FullName}\"" + Environment.NewLine +
354await File.WriteAllTextAsync(shellFile.FullName, shellContent);
356shellFile.FullName,
361return ("/bin/bash", [shellFile.FullName]);
378using var stream = new FileStream(pidFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
396throw new TimeoutException($"Timed out waiting for descendant pid file '{pidFile.FullName}'.");
Projects\ProjectLocatorTests.cs (729)
38var appHostFile = new FileInfo(Path.Combine(directory.FullName, "apphost.cs"));
50appHostFile.FullName,
64var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
65await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
68var secondAppHostProjectFile = new FileInfo(Path.Combine(secondAppHostDirectory.FullName, "SecondAppHost.csproj"));
69await File.WriteAllTextAsync(secondAppHostProjectFile.FullName, "Not a real apphost");
71var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
85Assert.Equal(secondAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
95var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
96await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
99var secondAppHostProjectFile = new FileInfo(Path.Combine(secondAppHostDirectory.FullName, "SecondAppHost.csproj"));
100await File.WriteAllTextAsync(secondAppHostProjectFile.FullName, "Not a real apphost");
102var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
114Assert.Equal(secondAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
124var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
125await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
128var secondAppHostProjectFile = new FileInfo(Path.Combine(secondAppHostDirectory.FullName, "SecondAppHost.csproj"));
129await File.WriteAllTextAsync(secondAppHostProjectFile.FullName, "Not a real apphost");
131var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
145Assert.Equal(secondAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
157var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
158await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
161var secondAppHostProjectFile = new FileInfo(Path.Combine(secondAppHostDirectory.FullName, "SecondAppHost.csproj"));
162await File.WriteAllTextAsync(secondAppHostProjectFile.FullName, "Not a real apphost");
164var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
177Assert.Equal(secondAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
190var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
191await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
194var firstAlternative = new FileInfo(Path.Combine(alternativesDirectory.FullName, "FirstAlternative.csproj"));
195await File.WriteAllTextAsync(firstAlternative.FullName, "Not a real apphost");
196var secondAlternative = new FileInfo(Path.Combine(alternativesDirectory.FullName, "SecondAlternative.csproj"));
197await File.WriteAllTextAsync(secondAlternative.FullName, "Not a real apphost");
199var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
207new FileInfo(alternativesDirectory.FullName),
212Assert.Equal(firstAlternative.FullName, result.SelectedProjectFile?.FullName);
223var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
224await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
227var alternativeAppHost = new FileInfo(Path.Combine(alternativeDirectory.FullName, "Alternative.csproj"));
228await File.WriteAllTextAsync(alternativeAppHost.FullName, "Not a real apphost");
230var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
237new FileInfo(alternativeDirectory.FullName),
242Assert.Equal(alternativeAppHost.FullName, result.SelectedProjectFile?.FullName);
252var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
253await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real apphost");
255var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
266Assert.Equal(appHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
276var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
277await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real apphost");
279var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
288Assert.Equal(appHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
301var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, $"AppHost{index}.csproj"));
302await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real apphost");
306var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
333appHostProjectFiles.Select(appHostProjectFile => appHostProjectFile.FullName),
334results.Select(result => result.SelectedProjectFile?.FullName));
371var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
372await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
375var secondAppHostProjectFile = new FileInfo(Path.Combine(secondAppHostDirectory.FullName, "SecondAppHost.csproj"));
376await File.WriteAllTextAsync(secondAppHostProjectFile.FullName, "Not a real apphost");
378var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
392Assert.Equal(secondAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
402var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
403await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
406var secondAppHostProjectFile = new FileInfo(Path.Combine(secondAppHostDirectory.FullName, "SecondAppHost.csproj"));
407await File.WriteAllTextAsync(secondAppHostProjectFile.FullName, "Not a real apphost");
409var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
415ValidateAppHostCallback = file => new AppHostValidationResult(IsValid: file.FullName == secondAppHostProjectFile.FullName)
428Assert.Equal(secondAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
438var firstAppHostProjectFile = new FileInfo(Path.Combine(firstAppHostDirectory.FullName, "FirstAppHost.csproj"));
439await File.WriteAllTextAsync(firstAppHostProjectFile.FullName, "Not a real apphost");
442var secondAppHostProjectFile = new FileInfo(Path.Combine(secondAppHostDirectory.FullName, "SecondAppHost.csproj"));
443await File.WriteAllTextAsync(secondAppHostProjectFile.FullName, "Not a real apphost");
445var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
457Assert.Equal(secondAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
487var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
508var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
509await File.WriteAllTextAsync(projectFile.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
524Assert.Equal(projectFile.FullName, result.SelectedProjectFile?.FullName);
525Assert.Equal(projectFile.FullName, Assert.Single(result.AllProjectFileCandidates).FullName);
529Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName)));
540var brokenAppHost = new FileInfo(Path.Combine(brokenDirectory.FullName, "BrokenAppHost.csproj"));
541await File.WriteAllTextAsync(brokenAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
544var decoyAppHost = new FileInfo(Path.Combine(decoyDirectory.FullName, "HealthyAppHost.csproj"));
545await File.WriteAllTextAsync(decoyAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
547var aspireSettingsDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire"));
549var aspireSettingsFile = new FileInfo(Path.Combine(aspireSettingsDir.FullName, "settings.json"));
550await File.WriteAllTextAsync(aspireSettingsFile.FullName, JsonSerializer.Serialize(new
552appHostPath = Path.GetRelativePath(aspireSettingsDir.FullName, brokenAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
557ValidateAppHostCallback = file => file.FullName == brokenAppHost.FullName
565var globalSettingsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json"));
575Assert.Equal(brokenAppHost.FullName, result.SelectedProjectFile?.FullName);
579Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName)));
590var outsideAppHost = new FileInfo(Path.Combine(outsideDirectory.FullName, "OutsideAppHost.csproj"));
591await File.WriteAllTextAsync(outsideAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
594var configPath = Path.Combine(workingDirectory.FullName, AspireConfigFile.FileName);
599path = Path.GetRelativePath(workingDirectory.FullName, outsideAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
616Assert.Equal(outsideAppHost.FullName, result.SelectedProjectFile?.FullName);
628var appHostFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
629await File.WriteAllTextAsync(appHostFile.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
660var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Missing.csproj"));
691var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "WebApp.csproj"));
692await File.WriteAllTextAsync(projectFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk.Web\"></Project>");
720var targetAppHostProjectFile = new FileInfo(Path.Combine(targetAppHostDirectory.FullName, "TargetAppHost.csproj"));
721await File.WriteAllTextAsync(targetAppHostProjectFile.FullName, "Not a real apphost");
724var otherAppHostProjectFile = new FileInfo(Path.Combine(otherAppHostDirectory.FullName, "OtherAppHost.csproj"));
725await File.WriteAllTextAsync(otherAppHostProjectFile.FullName, "Not a real apphost");
728var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
733appHostPath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, targetAppHostProjectFile.FullName)
744Assert.Equal(targetAppHostProjectFile.FullName, foundAppHost?.FullName);
753var targetAppHostProjectFile = new FileInfo(Path.Combine(targetAppHostDirectory.FullName, "TargetAppHost.csproj"));
754await File.WriteAllTextAsync(targetAppHostProjectFile.FullName, "Not a real apphost");
757var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
762appHostPath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, targetAppHostProjectFile.FullName)
772Assert.Equal(targetAppHostProjectFile.FullName, foundAppHost?.FullName);
784var targetAppHostProjectFile = new FileInfo(Path.Combine(targetAppHostDirectory.FullName, "TargetAppHost.csproj"));
785await File.WriteAllTextAsync(targetAppHostProjectFile.FullName, "Not a real apphost");
788var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
793appHostPath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, targetAppHostProjectFile.FullName)
802Assert.Equal(targetAppHostProjectFile.FullName, foundAppHost?.FullName);
811var realAppHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "RealAppHost.csproj"));
812await File.WriteAllTextAsync(realAppHostProjectFile.FullName, "Not a real apphost project");
816var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
829if (projectFile.FullName == realAppHostProjectFile.FullName)
843Assert.Equal(realAppHostProjectFile.FullName, foundAppHost?.FullName);
852var staleProjectFile = new FileInfo(Path.Combine(staleProjectDirectory.FullName, "StaleProject.csproj"));
853await File.WriteAllTextAsync(staleProjectFile.FullName, "Not a real apphost project");
855var realAppHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "RealAppHost.csproj"));
856await File.WriteAllTextAsync(realAppHostProjectFile.FullName, "Not a real apphost project");
859var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
864appHostPath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, staleProjectFile.FullName)
872if (projectFile.FullName == realAppHostProjectFile.FullName)
886Assert.Equal(realAppHostProjectFile.FullName, foundAppHost?.FullName);
905var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
906await File.WriteAllTextAsync(aspireSettingsFile.FullName, JsonSerializer.Serialize(new
916Assert.Equal(appHostFile.FullName, foundAppHost?.FullName);
928var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
939Assert.Equal(appHostFile.FullName, foundAppHost?.FullName);
963var targetAppHostProjectFile = new FileInfo(Path.Combine(targetAppHostDirectory.FullName, "TargetAppHost.csproj"));
964await File.WriteAllTextAsync(targetAppHostProjectFile.FullName, "Not a real apphost");
967var decoyAppHostProjectFile = new FileInfo(Path.Combine(decoyAppHostDirectory.FullName, "DecoyAppHost.csproj"));
968await File.WriteAllTextAsync(decoyAppHostProjectFile.FullName, "Not a real apphost");
970var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
975path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, targetAppHostProjectFile.FullName).Replace(Path.DirectorySeparatorChar, '/')
990Assert.Equal(targetAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
992Assert.Equal(targetAppHostProjectFile.FullName, candidate.FullName);
1001var targetAppHostProjectFile = new FileInfo(Path.Combine(targetAppHostDirectory.FullName, "TargetAppHost.csproj"));
1002await File.WriteAllTextAsync(targetAppHostProjectFile.FullName, "Not a real apphost");
1005var decoyAppHostProjectFile = new FileInfo(Path.Combine(decoyAppHostDirectory.FullName, "DecoyAppHost.csproj"));
1006await File.WriteAllTextAsync(decoyAppHostProjectFile.FullName, "Not a real apphost");
1008var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1013path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, targetAppHostProjectFile.FullName).Replace(Path.DirectorySeparatorChar, '/')
1028Assert.Equal(targetAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
1030Assert.Equal(targetAppHostProjectFile.FullName, candidate.FullName);
1038var guestAppHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
1039await File.WriteAllTextAsync(guestAppHostFile.FullName, "// guest apphost");
1041var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1064Assert.Equal(guestAppHostFile.FullName, result.SelectedProjectFile?.FullName);
1066Assert.Equal(guestAppHostFile.FullName, candidate.FullName);
1075var configuredAppHostProjectFile = new FileInfo(Path.Combine(configuredAppHostDirectory.FullName, "ConfiguredAppHost.csproj"));
1076await File.WriteAllTextAsync(configuredAppHostProjectFile.FullName, "Not a real apphost");
1078var realAppHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "RealAppHost.csproj"));
1079await File.WriteAllTextAsync(realAppHostProjectFile.FullName, "Not a real apphost");
1081var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1086path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, configuredAppHostProjectFile.FullName).Replace(Path.DirectorySeparatorChar, '/')
1094if (projectFile.FullName == realAppHostProjectFile.FullName)
1098if (projectFile.FullName == configuredAppHostProjectFile.FullName)
1115Assert.Equal(realAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
1128var configuredAppHostProjectFile = new FileInfo(Path.Combine(configuredAppHostDirectory.FullName, "ConfiguredAppHost.csproj"));
1129await File.WriteAllTextAsync(configuredAppHostProjectFile.FullName, "Not a real apphost");
1131var realAppHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "RealAppHost.csproj"));
1132await File.WriteAllTextAsync(realAppHostProjectFile.FullName, "Not a real apphost");
1134var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1139path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, configuredAppHostProjectFile.FullName).Replace(Path.DirectorySeparatorChar, '/')
1147if (projectFile.FullName == realAppHostProjectFile.FullName)
1151if (projectFile.FullName == configuredAppHostProjectFile.FullName)
1168Assert.Equal(configuredAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
1170[realAppHostProjectFile.FullName, configuredAppHostProjectFile.FullName],
1171result.AllProjectFileCandidates.Select(f => f.FullName));
1180var targetAppHostProjectFile = new FileInfo(Path.Combine(targetAppHostDirectory.FullName, "TargetAppHost.csproj"));
1181await File.WriteAllTextAsync(targetAppHostProjectFile.FullName, "Not a real apphost");
1184var otherAppHostProjectFile = new FileInfo(Path.Combine(otherAppHostDirectory.FullName, "OtherAppHost.csproj"));
1185await File.WriteAllTextAsync(otherAppHostProjectFile.FullName, "Not a real apphost");
1187var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1192path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, targetAppHostProjectFile.FullName).Replace(Path.DirectorySeparatorChar, '/')
1205Assert.Equal(targetAppHostProjectFile.FullName, result.SelectedProjectFile?.FullName);
1207Assert.Contains(result.AllProjectFileCandidates, file => file.FullName == targetAppHostProjectFile.FullName);
1208Assert.Contains(result.AllProjectFileCandidates, file => file.FullName == otherAppHostProjectFile.FullName);
1217var settingsAppHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "SettingsAppHost.csproj"));
1218await File.WriteAllTextAsync(settingsAppHostFile.FullName, "Not a real apphost");
1223var configPath = Path.Combine(workingDirectory.FullName, AspireConfigFile.FileName);
1246Assert.Equal(settingsAppHostFile.FullName, result.SelectedProjectFile?.FullName);
1247Assert.Contains(result.AllProjectFileCandidates, file => file.FullName == settingsAppHostFile.FullName);
1256var settingsAppHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.custom"));
1257await File.WriteAllTextAsync(settingsAppHostFile.FullName, "Not a supported apphost type");
1259var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1291var targetAppHostProjectFile = new FileInfo(Path.Combine(targetAppHostDirectory.FullName, "TargetAppHost.csproj"));
1292await File.WriteAllTextAsync(targetAppHostProjectFile.FullName, "Not a real apphost");
1295var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
1298var relativePath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, targetAppHostProjectFile.FullName);
1314Assert.Equal(targetAppHostProjectFile.FullName, foundAppHost?.FullName);
1321var projectFile1 = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost1.csproj"));
1322await File.WriteAllTextAsync(projectFile1.FullName, "Not a real project file.");
1324var projectFile2 = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost2.csproj"));
1325await File.WriteAllTextAsync(projectFile2.FullName, "Not a real project file.");
1332Assert.Equal(projectFile1.FullName, selectedProjectFile!.FullName);
1339var appHostProject = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1340await File.WriteAllTextAsync(appHostProject.FullName, "Not a real apphost project.");
1342var webProject = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "WebProject.csproj"));
1343await File.WriteAllTextAsync(webProject.FullName, "Not a real web project.");
1349if (projectFile.FullName == appHostProject.FullName)
1360Assert.Equal(appHostProject.FullName, foundAppHost?.FullName);
1385var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectFileExtension}"));
1386await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1403var onDiskProjectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyAppHost.csproj"));
1404await File.WriteAllTextAsync(onDiskProjectFile.FullName, "Not a real project file.");
1411var mismatchedCasePath = ToggleCase(onDiskProjectFile.FullName);
1412Assert.False(string.Equals(onDiskProjectFile.FullName, mismatchedCasePath, StringComparison.Ordinal));
1425Assert.Equal(onDiskProjectFile.FullName, result.SelectedProjectFile!.FullName);
1432var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1433await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1439Assert.Equal(projectFile.FullName, returnedProjectFile!.FullName);
1447var legacyAppHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.ts"));
1448var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts"));
1449await File.WriteAllTextAsync(appHostFile.FullName, "// TypeScript AppHost");
1451await File.WriteAllTextAsync(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName), JsonSerializer.Serialize(new
1460var globalSettingsFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json");
1472Assert.Equal(appHostFile.FullName, returnedProjectFile!.FullName);
1474var updatedConfig = AspireConfigFile.Load(workspace.WorkspaceRoot.FullName);
1486var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
1487await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real project file.");
1495var globalSettingsFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json");
1506var settingsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName));
1509var settingsJson = await File.ReadAllTextAsync(settingsFile.FullName);
1523var appHostFile = new FileInfo(Path.Combine(srcDirectory.FullName, "apphost.ts"));
1524await File.WriteAllTextAsync(appHostFile.FullName, "// TypeScript apphost");
1526var adjacentConfigPath = Path.Combine(srcDirectory.FullName, AspireConfigFile.FileName);
1550var globalSettingsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json"));
1570Assert.Equal(appHostFile.FullName, result.SelectedProjectFile?.FullName);
1571Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName)));
1590var appHost1File = new FileInfo(Path.Combine(appHost1Directory.FullName, "apphost.ts"));
1591await File.WriteAllTextAsync(appHost1File.FullName, "// TypeScript apphost");
1592var appHost1ConfigPath = Path.Combine(appHost1Directory.FullName, AspireConfigFile.FileName);
1602var appHost2File = new FileInfo(Path.Combine(appHost2Directory.FullName, "apphost.ts"));
1603await File.WriteAllTextAsync(appHost2File.FullName, "// TypeScript apphost");
1604var appHost2ConfigPath = Path.Combine(appHost2Directory.FullName, AspireConfigFile.FileName);
1619var globalSettingsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json"));
1640Assert.Equal(appHost2File.FullName, result.SelectedProjectFile?.FullName);
1641Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName)));
1660var appHostFile = new FileInfo(Path.Combine(srcDirectory.FullName, "apphost.ts"));
1661await File.WriteAllTextAsync(appHostFile.FullName, "// TypeScript apphost");
1671staleConfig.Save(srcDirectory.FullName);
1674var globalSettingsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json"));
1694Assert.Equal(appHostFile.FullName, result.SelectedProjectFile?.FullName);
1695Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName)));
1697var healedConfig = AspireConfigFile.Load(srcDirectory.FullName);
1709var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "MyAppHost.csproj"));
1710await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real apphost");
1716var aspireSettingsDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire"));
1717var aspireSettingsFile = new FileInfo(Path.Combine(aspireSettingsDir.FullName, "settings.json"));
1719.GetRelativePath(aspireSettingsDir.FullName, appHostProjectFile.FullName)
1721await File.WriteAllTextAsync(aspireSettingsFile.FullName, JsonSerializer.Serialize(new { appHostPath = relativeAppHostPath }));
1724var globalSettingsFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "settings.global.json");
1736Assert.Equal(appHostProjectFile.FullName, foundAppHost.FullName);
1739var aspireConfigFilePath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
1753var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1755appHostFile.FullName,
1766var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
1769Assert.Equal(appHostFile.FullName, foundFiles[0].FullName);
1778var appHostFile = new FileInfo(Path.Combine(subDir.FullName, "apphost.cs"));
1780appHostFile.FullName,
1791var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
1794Assert.Equal(appHostFile.FullName, foundFiles[0].FullName);
1804var appHostFile = new FileInfo(Path.Combine(dirWithBoth.FullName, "apphost.cs"));
1806appHostFile.FullName,
1814var csprojFile = new FileInfo(Path.Combine(dirWithBoth.FullName, "RegularProject.csproj"));
1815await File.WriteAllTextAsync(csprojFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\"></Project>");
1819var validAppHostFile = new FileInfo(Path.Combine(dirWithOnlyAppHost.FullName, "apphost.cs"));
1821validAppHostFile.FullName,
1833if (projectFile.FullName == csprojFile.FullName)
1840var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
1847var foundPaths = foundFiles.Select(f => f.FullName).ToHashSet();
1848Assert.Contains(validAppHostFile.FullName, foundPaths);
1849Assert.Contains(csprojFile.FullName, foundPaths);
1850Assert.DoesNotContain(appHostFile.FullName, foundPaths);
1859var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1860await File.WriteAllTextAsync(appHostFile.FullName, @"using Aspire.Hosting
1867var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
1879var csprojFile = new FileInfo(Path.Combine(subDir1.FullName, "AppHost.csproj"));
1880await File.WriteAllTextAsync(csprojFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\"></Project>");
1884var appHostFile = new FileInfo(Path.Combine(subDir2.FullName, "apphost.cs"));
1886appHostFile.FullName,
1897if (projectFile.FullName == csprojFile.FullName)
1904var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
1908Assert.True(foundFiles[0].FullName.CompareTo(foundFiles[1].FullName) < 0);
1910var foundPaths = foundFiles.Select(f => f.FullName).ToHashSet();
1911Assert.Contains(csprojFile.FullName, foundPaths);
1912Assert.Contains(appHostFile.FullName, foundPaths);
1920var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1921await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
1936var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
1939Assert.Equal(projectFile.FullName, foundFile.FullName);
1947var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1949appHostFile.FullName,
1962Assert.Equal(appHostFile.FullName, result!.FullName);
1971var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1972await File.WriteAllTextAsync(appHostFile.FullName, @"using Aspire.Hosting;
1992var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
1993await File.WriteAllTextAsync(appHostFile.FullName, "using Aspire.Hosting;");
1995var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
1996await File.WriteAllTextAsync(projectFile.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2009Assert.Equal(projectFile.FullName, result.SelectedProjectFile?.FullName);
2018var appHostFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.cs"));
2020appHostFile.FullName,
2029var csprojFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "SomeProject.csproj"));
2030await File.WriteAllTextAsync(csprojFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\"></Project>");
2044var txtFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "readme.txt"));
2045await File.WriteAllTextAsync(txtFile.FullName, "Some text file");
2064var csprojFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2065await File.WriteAllTextAsync(csprojFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\"></Project>");
2069var appHostFile = new FileInfo(Path.Combine(subDir.FullName, "apphost.cs"));
2071appHostFile.FullName,
2082if (projectFile.FullName == csprojFile.FullName)
2095Assert.True(result.FullName == csprojFile.FullName || result.FullName == appHostFile.FullName);
2141? Path.Combine(executionContext.HomeDirectory.FullName, ".aspire", AspireConfigFile.FileName)
2142: Path.Combine(executionContext.WorkingDirectory.FullName, AspireConfigFile.FileName);
2256var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "MyAppHost.csproj"));
2257await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2263if (file.FullName == projectFile.FullName)
2275var directoryAsFileInfo = new FileInfo(projectDirectory.FullName);
2278Assert.Equal(projectFile.FullName, returnedProjectFile!.FullName);
2293var directoryAsFileInfo = new FileInfo(projectDirectory.FullName);
2311var projectFile = new FileInfo(Path.Combine(projectDirectory.FullName, "UnbuildableAppHost.csproj"));
2312await File.WriteAllTextAsync(projectFile.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2320var directoryAsFileInfo = new FileInfo(projectDirectory.FullName);
2328Assert.Equal(projectFile.FullName, result.SelectedProjectFile?.FullName);
2329Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName)));
2341var first = new FileInfo(Path.Combine(firstProjectDirectory.FullName, "FirstAppHost.csproj"));
2342await File.WriteAllTextAsync(first.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2344var second = new FileInfo(Path.Combine(secondProjectDirectory.FullName, "SecondAppHost.csproj"));
2345await File.WriteAllTextAsync(second.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2353var directoryAsFileInfo = new FileInfo(projectDirectory.FullName);
2381var brokenAppHost = new FileInfo(Path.Combine(brokenDirectory.FullName, "BrokenAppHost.csproj"));
2382await File.WriteAllTextAsync(brokenAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2386var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2391path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, brokenAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
2405new FileInfo(emptyDirectory.FullName),
2423var healthyAppHost = new FileInfo(Path.Combine(healthyDirectory.FullName, "HealthyAppHost.csproj"));
2424await File.WriteAllTextAsync(healthyAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2428var brokenAppHost = new FileInfo(Path.Combine(brokenDirectory.FullName, "BrokenAppHost.csproj"));
2429await File.WriteAllTextAsync(brokenAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2431var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2436path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, healthyAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
2442ValidateAppHostCallback = file => file.FullName == healthyAppHost.FullName
2450new FileInfo(servicesDirectory.FullName),
2455Assert.Equal(brokenAppHost.FullName, result.SelectedProjectFile?.FullName);
2464var configuredAppHost = new FileInfo(Path.Combine(configuredDirectory.FullName, "ConfiguredAppHost.csproj"));
2465await File.WriteAllTextAsync(configuredAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2469var firstAppHost = new FileInfo(Path.Combine(firstDirectory.FullName, "FirstAppHost.csproj"));
2470await File.WriteAllTextAsync(firstAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2472var secondAppHost = new FileInfo(Path.Combine(secondDirectory.FullName, "SecondAppHost.csproj"));
2473await File.WriteAllTextAsync(secondAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2475var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2480path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, configuredAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
2492new FileInfo(servicesDirectory.FullName),
2499[firstAppHost.FullName, secondAppHost.FullName],
2500result.AllProjectFileCandidates.Select(file => file.FullName));
2509var unsupportedAppHost = new FileInfo(Path.Combine(unsupportedDirectory.FullName, "UnsupportedAppHost.csproj"));
2510await File.WriteAllTextAsync(unsupportedAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2514var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2519path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, unsupportedAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
2533new FileInfo(emptyDirectory.FullName),
2563var brokenAppHost = new FileInfo(Path.Combine(brokenDirectory.FullName, "BrokenAppHost.csproj"));
2564await File.WriteAllTextAsync(brokenAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2567var firstHealthy = new FileInfo(Path.Combine(firstHealthyDirectory.FullName, "FirstHealthyAppHost.csproj"));
2568await File.WriteAllTextAsync(firstHealthy.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2571var secondHealthy = new FileInfo(Path.Combine(secondHealthyDirectory.FullName, "SecondHealthyAppHost.csproj"));
2572await File.WriteAllTextAsync(secondHealthy.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
2574var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
2579path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, brokenAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
2585ValidateAppHostCallback = file => file.FullName == brokenAppHost.FullName
2600Assert.Equal(brokenAppHost.FullName, result.SelectedProjectFile?.FullName);
2602new[] { firstHealthy.FullName, secondHealthy.FullName, brokenAppHost.FullName },
2603result.AllProjectFileCandidates.Select(f => f.FullName).ToArray());
2613var projectFile1 = new FileInfo(Path.Combine(projectDirectory.FullName, "Project1.csproj"));
2614await File.WriteAllTextAsync(projectFile1.FullName, "Not a real project file.");
2615var projectFile2 = new FileInfo(Path.Combine(projectDirectory.FullName, "Project2.csproj"));
2616await File.WriteAllTextAsync(projectFile2.FullName, "Not a real project file.");
2623if (file.FullName == projectFile1.FullName || file.FullName == projectFile2.FullName)
2635var directoryAsFileInfo = new FileInfo(projectDirectory.FullName);
2640Assert.Equal(projectFile1.FullName, returnedProjectFile!.FullName);
2650var appHostFile = new FileInfo(Path.Combine(projectDirectory.FullName, "apphost.cs"));
2652appHostFile.FullName,
2664var directoryAsFileInfo = new FileInfo(projectDirectory.FullName);
2667Assert.Equal(appHostFile.FullName, returnedProjectFile!.FullName);
2678var projectFile = new FileInfo(Path.Combine(subDirectory.FullName, "Mongo.AppHost.csproj"));
2679await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2685if (file.FullName == projectFile.FullName)
2697var directoryAsFileInfo = new FileInfo(topDirectory.FullName);
2700Assert.Equal(projectFile.FullName, returnedProjectFile!.FullName);
2717var csprojFile = new FileInfo(Path.Combine(appHostDir.FullName, "MyApp.AppHost.csproj"));
2718await File.WriteAllTextAsync(csprojFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\"></Project>");
2722var appHostCsFile = new FileInfo(Path.Combine(appHostDir.FullName, "AppHost.cs"));
2723await File.WriteAllTextAsync(appHostCsFile.FullName, """
2740var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2744Assert.Equal(csprojFile.FullName, foundFiles[0].FullName);
2760var csprojFile = new FileInfo(Path.Combine(appHostDir.FullName, "MyApp.AppHost.csproj"));
2761await File.WriteAllTextAsync(csprojFile.FullName, "<Project Sdk=\"Microsoft.NET.Sdk\"></Project>");
2764var appHostCsFile = new FileInfo(Path.Combine(appHostDir.FullName, "apphost.cs"));
2765await File.WriteAllTextAsync(appHostCsFile.FullName, """
2784var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2788Assert.Equal(csprojFile.FullName, foundFiles[0].FullName);
2802var appHostCsFile = new FileInfo(Path.Combine(appHostDir.FullName, "apphost.cs"));
2803await File.WriteAllTextAsync(appHostCsFile.FullName, """
2813var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2817Assert.Equal(appHostCsFile.FullName, foundFiles[0].FullName);
2825var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2826await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2836var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2846var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2847await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2857var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2860Assert.Equal(projectFile.FullName, foundFiles[0].FullName);
2868var projectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
2869await File.WriteAllTextAsync(projectFile.FullName, "Not a real project file.");
2908var foundFiles = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2920var normalProject = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "MyApp", "AppHost.csproj"));
2922await File.WriteAllTextAsync(normalProject.FullName, "Not a real project file.");
2925var nugetCacheDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".nuget", "packages",
2929await File.WriteAllTextAsync(cachedProject.FullName, "Not a real project file.");
2938["NUGET_PACKAGES"] = Path.Combine(workspace.WorkspaceRoot.FullName, ".nuget", "packages")
2944workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2948Assert.Equal(normalProject.FullName, foundFiles[0].FullName);
2957var project1 = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "src", "App1", "AppHost.csproj"));
2959await File.WriteAllTextAsync(project1.FullName, "Not a real project file.");
2961var project2 = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "samples", "App2", "AppHost.csproj"));
2963await File.WriteAllTextAsync(project2.FullName, "Not a real project file.");
2974workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
2977var foundPaths = foundFiles.Select(f => f.FullName).ToHashSet();
2978Assert.Contains(project1.FullName, foundPaths);
2979Assert.Contains(project2.FullName, foundPaths);
2988var normalProject = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "MyApp", "AppHost.csproj"));
2990await File.WriteAllTextAsync(normalProject.FullName, "Not a real project file.");
2993var customCacheDir = Path.Combine(workspace.WorkspaceRoot.FullName, "custom-nuget-cache");
2997await File.WriteAllTextAsync(cachedProject.FullName, "Not a real project file.");
3012workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
3016Assert.Equal(normalProject.FullName, foundFiles[0].FullName);
3025var customCacheDir = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget-cache");
3028var siblingDir = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget-cache-extra", "MyApp");
3031await File.WriteAllTextAsync(siblingProject.FullName, "Not a real project file.");
3037await File.WriteAllTextAsync(cachedProject.FullName, "Not a real project file.");
3052workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
3056Assert.Equal(siblingProject.FullName, foundFiles[0].FullName);
3066var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "MyAppHost.csproj"));
3067await File.WriteAllTextAsync(appHostFile.FullName, "Not a real apphost");
3071config.Save(workspace.WorkspaceRoot.FullName);
3079Assert.Equal(appHostFile.FullName, result.SelectedProjectFile!.FullName);
3089var appHost1File = new FileInfo(Path.Combine(appHost1Dir.FullName, "AppHost1.csproj"));
3090await File.WriteAllTextAsync(appHost1File.FullName, "Not a real apphost");
3092config1.Save(appHost1Dir.FullName);
3095var appHost2File = new FileInfo(Path.Combine(appHost2Dir.FullName, "AppHost2.csproj"));
3096await File.WriteAllTextAsync(appHost2File.FullName, "Not a real apphost");
3098config2.Save(appHost2Dir.FullName);
3119var appHostFile = new FileInfo(Path.Combine(appHostDir.FullName, "RealAppHost.csproj"));
3120await File.WriteAllTextAsync(appHostFile.FullName, "Not a real apphost");
3124config.Save(workspace.WorkspaceRoot.FullName);
3133Assert.Equal(appHostFile.FullName, result.SelectedProjectFile!.FullName);
3143await File.WriteAllTextAsync(Path.Combine(appHost1Dir.FullName, "AppHost1.csproj"), "Not a real apphost");
3146await File.WriteAllTextAsync(Path.Combine(appHost2Dir.FullName, "AppHost2.csproj"), "Not a real apphost");
3164var appHost1File = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost1.csproj"));
3165await File.WriteAllTextAsync(appHost1File.FullName, "Not a real apphost");
3167var appHost2File = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost2.csproj"));
3168await File.WriteAllTextAsync(appHost2File.FullName, "Not a real apphost");
3170var slowValidationFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "SlowValidation.csproj"));
3171await File.WriteAllTextAsync(slowValidationFile.FullName, "Not a real apphost");
3180if (string.Equals(projectFile.FullName, slowValidationFile.FullName, StringComparison.Ordinal))
3195if (string.Equals(projectFile.FullName, appHost2File.FullName, StringComparison.Ordinal))
3223var appHost1File = new FileInfo(Path.Combine(appHost1Dir.FullName, "AppHost1.csproj"));
3224await File.WriteAllTextAsync(appHost1File.FullName, "Not a real apphost");
3227var appHost2File = new FileInfo(Path.Combine(appHost2Dir.FullName, "AppHost2.csproj"));
3228await File.WriteAllTextAsync(appHost2File.FullName, "Not a real apphost");
3231var aspireSettingsDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire"));
3233var aspireSettingsFile = new FileInfo(Path.Combine(aspireSettingsDir.FullName, "settings.json"));
3235.GetRelativePath(aspireSettingsDir.FullName, appHost1File.FullName)
3237await File.WriteAllTextAsync(aspireSettingsFile.FullName, JsonSerializer.Serialize(new { appHostPath = relativeAppHostPath }));
3246Assert.Equal(appHost1File.FullName, result.SelectedProjectFile!.FullName);
3256var appHost1File = new FileInfo(Path.Combine(appHost1Dir.FullName, "AppHost1.csproj"));
3257await File.WriteAllTextAsync(appHost1File.FullName, "Not a real apphost");
3260var appHost2File = new FileInfo(Path.Combine(appHost2Dir.FullName, "AppHost2.csproj"));
3261await File.WriteAllTextAsync(appHost2File.FullName, "Not a real apphost");
3264var aspireSettingsDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire"));
3266var aspireSettingsFile = new FileInfo(Path.Combine(aspireSettingsDir.FullName, "settings.json"));
3268.GetRelativePath(aspireSettingsDir.FullName, appHost1File.FullName)
3270await File.WriteAllTextAsync(aspireSettingsFile.FullName, JsonSerializer.Serialize(new { appHostPath = relativeAppHostPath }));
3279Assert.Equal(appHost1File.FullName, result.SelectedProjectFile!.FullName);
3281Assert.Equal(appHost1File.FullName, candidate.FullName);
3290var realAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App", "AppHost.csproj"));
3292await File.WriteAllTextAsync(realAppHost.FullName, "Not a real project file.");
3295var staleAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "node_modules", "foo", "AppHost.csproj"));
3297await File.WriteAllTextAsync(staleAppHost.FullName, "Not a real project file.");
3310Assert.Equal(realAppHost.FullName, found[0].AppHostFile.FullName);
3318var realAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App", "AppHost.csproj"));
3320await File.WriteAllTextAsync(realAppHost.FullName, "Not a real project file.");
3322var staleAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "node_modules", "foo", "AppHost.csproj"));
3324await File.WriteAllTextAsync(staleAppHost.FullName, "Not a real project file.");
3337var paths = found.Select(c => c.AppHostFile.FullName).ToHashSet();
3338Assert.Contains(realAppHost.FullName, paths);
3339Assert.Contains(staleAppHost.FullName, paths);
3347var realAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App", "AppHost.csproj"));
3349await File.WriteAllTextAsync(realAppHost.FullName, "Not a real project file.");
3351var skipListedAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "node_modules", "foo", "AppHost.csproj"));
3353await File.WriteAllTextAsync(skipListedAppHost.FullName, "Not a real project file.");
3363var found = await projectLocator.FindAppHostProjectFilesAsync(workspace.WorkspaceRoot.FullName, CancellationToken.None).DefaultTimeout();
3365var paths = found.Select(file => file.FullName).ToHashSet();
3367Assert.Contains(realAppHost.FullName, paths);
3368Assert.Contains(skipListedAppHost.FullName, paths);
3376var buildableAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Buildable", "AppHost.csproj"));
3378await File.WriteAllTextAsync(buildableAppHost.FullName, "Not a real project file.");
3380var unbuildableAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Unbuildable", "AppHost.csproj"));
3382await File.WriteAllTextAsync(unbuildableAppHost.FullName, "Not a real project file.");
3386ValidateAppHostCallback = projectFile => projectFile.FullName == buildableAppHost.FullName
3396Assert.Collection(found.OrderBy(candidate => candidate.AppHostFile.FullName),
3399Assert.Equal(buildableAppHost.FullName, candidate.AppHostFile.FullName);
3404Assert.Equal(unbuildableAppHost.FullName, candidate.AppHostFile.FullName);
3415var realAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App", "AppHost.csproj"));
3417await File.WriteAllTextAsync(realAppHost.FullName, "Not a real project file.");
3420var staleAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "node_modules", "foo", "AppHost.csproj"));
3422await File.WriteAllTextAsync(staleAppHost.FullName, "Not a real project file.");
3435realAppHost.FullName,
3436staleAppHost.FullName
3446Assert.Equal(realAppHost.FullName, found[0].AppHostFile.FullName);
3455var configuredAppHost = new FileInfo(Path.Combine(configuredDirectory.FullName, "ConfiguredAppHost.csproj"));
3456await File.WriteAllTextAsync(configuredAppHost.FullName, "<Project Sdk=\"Aspire.AppHost.Sdk\"></Project>");
3459var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
3464path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, configuredAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
3490var trackedAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App", "AppHost.csproj"));
3492await File.WriteAllTextAsync(trackedAppHost.FullName, "Not a real project file.");
3494var ignoredAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "legacy", "Stale.csproj"));
3496await File.WriteAllTextAsync(ignoredAppHost.FullName, "Not a real project file.");
3507trackedAppHost.FullName
3517Assert.Equal(trackedAppHost.FullName, found[0].AppHostFile.FullName);
3525var realAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App", "AppHost.csproj"));
3527await File.WriteAllTextAsync(realAppHost.FullName, "Not a real project file.");
3530var nodeModulesAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "node_modules", "foo", "AppHost.csproj"));
3532await File.WriteAllTextAsync(nodeModulesAppHost.FullName, "Not a real project file.");
3543realAppHost.FullName,
3544nodeModulesAppHost.FullName
3554Assert.Equal(realAppHost.FullName, found[0].AppHostFile.FullName);
3562var realAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "App", "AppHost.csproj"));
3564await File.WriteAllTextAsync(realAppHost.FullName, "Not a real project file.");
3567var phantomAppHost = Path.Combine(workspace.WorkspaceRoot.FullName, "Removed", "AppHost.csproj");
3578realAppHost.FullName,
3589Assert.Equal(realAppHost.FullName, found[0].AppHostFile.FullName);
3619var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
3620await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real apphost");
3623var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
3629appHostPath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, appHostProjectFile.FullName)
3648Assert.Equal(appHostProjectFile.FullName, foundAppHost!.FullName);
3657var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
3686var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.unknown"));
3687await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real apphost");
3690var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
3696appHostPath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, appHostProjectFile.FullName)
3719var appHostProjectFile = new FileInfo(Path.Combine(appHostDirectory.FullName, "AppHost.csproj"));
3720await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real apphost");
3723var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
3729appHostPath = Path.GetRelativePath(aspireSettingsFile.Directory!.FullName, appHostProjectFile.FullName)
3767var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
3785Assert.Contains(aspireSettingsFile.FullName, warning.Message);
3802var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
3833var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
3834await File.WriteAllTextAsync(aspireSettingsFile.FullName, """
3845Assert.Contains(aspireSettingsFile.FullName, error);
3860var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
3885var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
3886await File.WriteAllTextAsync(aspireSettingsFile.FullName, """
3897Assert.Contains(aspireSettingsFile.FullName, error);
3910var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
3940var settingsPath = Path.Combine(workspaceSettingsDirectory.FullName, "settings.json");
3967var settingsPath = Path.Combine(workspaceSettingsDirectory.FullName, "settings.json");
3994var settingsPath = Path.Combine(workspaceSettingsDirectory.FullName, "settings.json");
4032var realAppHost = new FileInfo(Path.Combine(realAppDirectory.FullName, "AppHost.csproj"));
4033await File.WriteAllTextAsync(realAppHost.FullName, "Not a real project file.");
4039var linkDirectory = Path.Combine(nodeModulesDir.FullName, "link");
4042Directory.CreateSymbolicLink(linkDirectory, realAppDirectory.FullName);
4058Assert.NotEqual(realAppHost.FullName, pathThroughLink);
4061var aspireSettingsFile = new FileInfo(Path.Combine(workspaceSettingsDirectory.FullName, "settings.json"));
4094var appHostProjectFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost.csproj"));
4095await File.WriteAllTextAsync(appHostProjectFile.FullName, "Not a real project file.");
4097var differentlyCasedPath = Path.Combine(workspace.WorkspaceRoot.FullName, "APPHOST.csproj");
4103Assert.NotEqual(appHostProjectFile.FullName, differentlyCasedPath);
4105var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
4128var configuredAppHost = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "node_modules", "Configured", "AppHost.csproj"));
4130await File.WriteAllTextAsync(configuredAppHost.FullName, "Not a real project file.");
4132var configPath = Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName);
4137path = Path.GetRelativePath(workspace.WorkspaceRoot.FullName, configuredAppHost.FullName).Replace(Path.DirectorySeparatorChar, '/')
4154Assert.Equal(configuredAppHost.FullName, candidate.AppHostFile.FullName);
Projects\ProjectUpdaterTests.cs (227)
31var serviceDefaultsProjectFile = new FileInfo(Path.Combine(serviceDefaultsFolder.FullName, "UpdateTester.ServiceDefaults.csproj"));
34var webAppProjectFile = new FileInfo(Path.Combine(webAppFolder.FullName, "UpdateTester.WebApp.csproj"));
37var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
40appHostProjectFile.FullName,
74if (projectFile.FullName == appHostProjectFile.FullName)
79itemsAndProperties.WithProjectReference(webAppProjectFile.FullName);
81else if (projectFile.FullName == webAppProjectFile.FullName)
84itemsAndProperties.WithProjectReference(serviceDefaultsProjectFile.FullName);
86else if (projectFile.FullName == serviceDefaultsProjectFile.FullName)
141var serviceDefaultsProjectFile = new FileInfo(Path.Combine(serviceDefaultsFolder.FullName, "UpdateTester.ServiceDefaults.csproj"));
144var webAppProjectFile = new FileInfo(Path.Combine(webAppFolder.FullName, "UpdateTester.WebApp.csproj"));
147var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
150appHostProjectFile.FullName,
160var aspireConfigFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire.config.json"));
162aspireConfigFile.FullName,
199if (projectFile.FullName == appHostProjectFile.FullName)
204itemsAndProperties.WithProjectReference(webAppProjectFile.FullName);
206else if (projectFile.FullName == webAppProjectFile.FullName)
209itemsAndProperties.WithProjectReference(serviceDefaultsProjectFile.FullName);
211else if (projectFile.FullName == serviceDefaultsProjectFile.FullName)
270Assert.Equal(appHostProjectFile.FullName, item.ProjectFile.FullName);
281Assert.Equal(webAppProjectFile.FullName, item.ProjectFile.FullName);
288var updatedConfig = await File.ReadAllTextAsync(aspireConfigFile.FullName);
305var serviceDefaultsProjectFile = new FileInfo(Path.Combine(serviceDefaultsFolder.FullName, "UpdateTester.ServiceDefaults.csproj"));
308var webAppProjectFile = new FileInfo(Path.Combine(webAppFolder.FullName, "UpdateTester.WebApp.csproj"));
311var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
314appHostProjectFile.FullName,
323var aspireConfigFile = new FileInfo(Path.Combine(appHostFolder.FullName, "aspire.config.json"));
354if (projectFile.FullName == appHostProjectFile.FullName)
359itemsAndProperties.WithProjectReference(webAppProjectFile.FullName);
361else if (projectFile.FullName == webAppProjectFile.FullName)
364itemsAndProperties.WithProjectReference(serviceDefaultsProjectFile.FullName);
366else if (projectFile.FullName == serviceDefaultsProjectFile.FullName)
412var serviceDefaultsProjectFile = new FileInfo(Path.Combine(serviceDefaultsFolder.FullName, "UpdateTester.ServiceDefaults.csproj"));
415var webAppProjectFile = new FileInfo(Path.Combine(webAppFolder.FullName, "UpdateTester.WebApp.csproj"));
418var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
421appHostProjectFile.FullName,
428var aspireConfigFile = new FileInfo(Path.Combine(appHostFolder.FullName, "aspire.config.json"));
430aspireConfigFile.FullName,
473if (projectFile.FullName == appHostProjectFile.FullName)
479itemsAndProperties.WithProjectReference(webAppProjectFile.FullName);
481else if (projectFile.FullName == webAppProjectFile.FullName)
484itemsAndProperties.WithProjectReference(serviceDefaultsProjectFile.FullName);
486else if (projectFile.FullName == serviceDefaultsProjectFile.FullName)
545Assert.Equal(appHostProjectFile.FullName, item.ProjectFile.FullName);
556Assert.Equal(appHostProjectFile.FullName, item.ProjectFile.FullName);
567Assert.Equal(webAppProjectFile.FullName, item.ProjectFile.FullName);
571var updatedConfig = await File.ReadAllTextAsync(aspireConfigFile.FullName);
582var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
585appHostProjectFile.FullName,
626if (projectFile.FullName == appHostProjectFile.FullName)
677Assert.Equal(appHostProjectFile.FullName, item.ProjectFile.FullName);
702var sharedProjectFile = new FileInfo(Path.Combine(sharedProjectFolder.FullName, "SharedProject.csproj"));
705var projectAFile = new FileInfo(Path.Combine(projectAFolder.FullName, "ProjectA.csproj"));
708var projectBFile = new FileInfo(Path.Combine(projectBFolder.FullName, "ProjectB.csproj"));
711var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "DiamondTest.AppHost.csproj"));
714appHostProjectFile.FullName,
746if (projectFile.FullName == appHostProjectFile.FullName)
751itemsAndProperties.WithProjectReference(projectAFile.FullName);
752itemsAndProperties.WithProjectReference(projectBFile.FullName);
754else if (projectFile.FullName == projectAFile.FullName)
759itemsAndProperties.WithProjectReference(sharedProjectFile.FullName);
761else if (projectFile.FullName == projectBFile.FullName)
766itemsAndProperties.WithProjectReference(sharedProjectFile.FullName);
768else if (projectFile.FullName == sharedProjectFile.FullName)
775throw new InvalidOperationException($"Unexpected project file: {projectFile.FullName}");
815var sharedProjectUpdates = packagesAddsExecuted.Where(p => p.ProjectFile.FullName == sharedProjectFile.FullName).ToList();
823var appHostUpdates = packagesAddsExecuted.Where(p => p.ProjectFile.FullName == appHostProjectFile.FullName).ToList();
835var serviceDefaultsProjectFile = new FileInfo(Path.Combine(serviceDefaultsFolder.FullName, "UpdateTester.ServiceDefaults.csproj"));
838var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
840var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
844appHostProjectFile.FullName,
853serviceDefaultsProjectFile.FullName,
867directoryPackagesPropsFile.FullName,
907if (projectFile.FullName == appHostProjectFile.FullName)
910itemsAndProperties.WithProjectReference(serviceDefaultsProjectFile.FullName);
912else if (projectFile.FullName == serviceDefaultsProjectFile.FullName)
958var updatedContent = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
971var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
973var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
977appHostProjectFile.FullName,
989directoryPackagesPropsFile.FullName,
1063var updatedContent = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
1073var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1075var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
1079appHostProjectFile.FullName,
1091directoryPackagesPropsFile.FullName,
1166var content = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
1195var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1197var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
1202appHostProjectFile.FullName,
1217directoryPackagesPropsFile.FullName,
1253if (projectFile.FullName == appHostProjectFile.FullName)
1291var updatedContent = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
1306var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1309appHostProjectFile.FullName,
1371var updatedContent = await File.ReadAllTextAsync(appHostProjectFile.FullName);
1385var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1396await File.WriteAllTextAsync(appHostProjectFile.FullName, ProjectContent);
1445var unchangedContent = await File.ReadAllTextAsync(appHostProjectFile.FullName);
1462var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1463var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
1466appHostProjectFile.FullName,
1481directoryPackagesPropsFile.FullName,
1540var updatedProject = await File.ReadAllTextAsync(appHostProjectFile.FullName);
1541var updatedProps = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
1562Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")));
1577var nugetConfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config");
1631Assert.True(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")));
1637var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1640appHostProjectFile.FullName,
1774var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1776var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
1780appHostProjectFile.FullName,
1792directoryPackagesPropsFile.FullName,
1877var content = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
1887var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
1889var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
1893appHostProjectFile.FullName,
1906directoryPackagesPropsFile.FullName,
2000var content = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
2011var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
2013var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
2017appHostProjectFile.FullName,
2029directoryPackagesPropsFile.FullName,
2125var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
2127var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
2131appHostProjectFile.FullName,
2143directoryPackagesPropsFile.FullName,
2236var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
2240appHostProjectFile.FullName,
2274if (projectFile.FullName == appHostProjectFile.FullName)
2330var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
2332var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
2336appHostProjectFile.FullName,
2348directoryPackagesPropsFile.FullName,
2382if (projectFile.FullName == appHostProjectFile.FullName)
2432var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
2436appHostProjectFile.FullName,
2466if (projectFile.FullName == appHostProjectFile.FullName)
2511var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
2514appHostProjectFile.FullName,
2545if (projectFile.FullName == appHostProjectFile.FullName)
2593var appHostFile = new FileInfo(Path.Combine(appHostFolder.FullName, "apphost.cs"));
2597appHostFile.FullName,
2665var updatedContent = await File.ReadAllTextAsync(appHostFile.FullName);
2686var appHostFile = new FileInfo(Path.Combine(appHostFolder.FullName, "apphost.cs"));
2689appHostFile.FullName,
2760var updatedContent = await File.ReadAllTextAsync(appHostFile.FullName);
2780var appHostFile = new FileInfo(Path.Combine(appHostFolder.FullName, "apphost.cs"));
2783appHostFile.FullName,
2845var updatedContent = await File.ReadAllTextAsync(appHostFile.FullName);
2856var appHostFile = new FileInfo(Path.Combine(appHostFolder.FullName, "apphost.cs"));
2860appHostFile.FullName,
2928var updatedContent = await File.ReadAllTextAsync(appHostFile.FullName);
2938var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
2941appHostProjectFile.FullName,
3024var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
3028appHostProjectFile.FullName,
3091var updatedContent = await File.ReadAllTextAsync(appHostProjectFile.FullName);
3102var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
3106appHostProjectFile.FullName,
3170var updatedContent = await File.ReadAllTextAsync(appHostProjectFile.FullName);
3180var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
3183appHostProjectFile.FullName,
3304var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
3306var directoryPackagesPropsFile = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props"));
3310appHostProjectFile.FullName,
3327directoryPackagesPropsFile.FullName,
3416Assert.Equal(appHostProjectFile.FullName, packageUpdate.ProjectFile.FullName);
3419var directoryPackagesContent = await File.ReadAllTextAsync(directoryPackagesPropsFile.FullName);
3431var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectExtension}");
3464var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectExtension}");
3496var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectExtension}");
3533var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectExtension}");
3569var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectExtension}");
3602var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectExtension}");
3639var projectFile = Path.Combine(workspace.WorkspaceRoot.FullName, $"AppHost{projectExtension}");
3657var directoryPackagesPropsFile = Path.Combine(workspace.WorkspaceRoot.FullName, "Directory.Packages.props");
3710var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "Issue15891.AppHost.csproj"));
3713appHostProjectFile.FullName,
3749if (projectFile.FullName == appHostProjectFile.FullName)
3764throw new InvalidOperationException($"Unexpected project file: {projectFile.FullName}");
3824var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
3827appHostProjectFile.FullName,
3901var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
3904appHostProjectFile.FullName,
3955var existingConfigFile = new FileInfo(Path.Combine(executionContext.WorkingDirectory.FullName, "nuget.config"));
3957existingConfigFile.FullName,
3980var updatedContent = await File.ReadAllTextAsync(existingConfigFile.FullName);
3991var appHostProjectFile = new FileInfo(Path.Combine(appHostFolder.FullName, "UpdateTester.AppHost.csproj"));
3994appHostProjectFile.FullName,
4057var content = await File.ReadAllTextAsync(createdConfig.FullName);
Projects\TypeScriptAppHostToolchainResolverTests.cs (39)
18File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"packageManager\": \"bun@1.2.0\" }");
29File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"name\": \"apphost\" }");
30File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "pnpm-lock.yaml"), "lockfileVersion: '9.0'");
41var packageJsonPath = Path.Combine(workspace.WorkspaceRoot.FullName, "package.json");
53File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"packageManager\": \"yarn@4.14.1\" }");
64File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"name\": \"apphost\" }");
65var yarnLockPath = Path.Combine(workspace.WorkspaceRoot.FullName, "yarn.lock");
79File.WriteAllText(Path.Combine(appHostDirectory.FullName, "package.json"), "{ \"name\": \"apphost\" }");
80File.WriteAllText(Path.Combine(parentDirectory.FullName, "package.json"), "{ \"name\": \"workspace\" }");
81var yarnLockPath = Path.Combine(parentDirectory.FullName, "yarn.lock");
95File.WriteAllText(Path.Combine(parentDirectory.FullName, "package.json"), "{ \"name\": \"workspace\" }");
96File.WriteAllText(Path.Combine(parentDirectory.FullName, "yarn.lock"), string.Empty);
97File.WriteAllText(Path.Combine(appHostDirectory.FullName, "package.json"), "{ \"name\": \"apphost\" }");
98File.WriteAllText(Path.Combine(appHostDirectory.FullName, "package-lock.json"), "{}");
103Assert.Equal($"package-lock.json found in {appHostDirectory.FullName}", resolution.Reason);
110File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"name\": \"apphost\" }");
111File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package-lock.json"), "{}");
112File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "yarn.lock"), string.Empty);
117Assert.Equal($"yarn.lock found in {workspace.WorkspaceRoot.FullName}", resolution.Reason);
124File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"name\": \"apphost\" }");
125Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".yarn"));
136File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"name\": \"apphost\" }");
147File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"name\": \"apphost\" }");
148File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "yarn.lock"), string.Empty);
158Assert.Equal($"Selected TypeScript AppHost package manager 'yarn' because yarn.lock found in {workspace.WorkspaceRoot.FullName}.", write.Message);
167File.WriteAllText(Path.Combine(appHostDirectory.Parent!.FullName, "package.json"), "{ \"packageManager\": \"pnpm@10.12.1\" }");
168File.WriteAllText(Path.Combine(appHostDirectory.FullName, "package.json"), "{ \"name\": \"apphost\" }");
181File.WriteAllText(Path.Combine(appHostDirectory.Parent!.FullName, "package.json"), "{ \"packageManager\": \"pnpm@10.12.1\" }");
182File.WriteAllText(Path.Combine(appHostDirectory.FullName, "package.json"), "{ \"packageManager\": \"bun@1.2.0\" }");
187Assert.Equal($"packageManager 'bun@1.2.0' found in {Path.Combine(appHostDirectory.FullName, "package.json")}", resolution.Reason);
196File.WriteAllText(Path.Combine(appHostDirectory.Parent!.FullName, "package.json"), "{ \"packageManager\": \"yarn@4.14.1\" }");
197File.WriteAllText(Path.Combine(appHostDirectory.FullName, "package.json"), "{ \"name\": \"apphost\" }");
198File.WriteAllText(Path.Combine(appHostDirectory.FullName, "pnpm-lock.yaml"), "lockfileVersion: '9.0'");
203Assert.Equal($"pnpm-lock.yaml found in {appHostDirectory.FullName}", resolution.Reason);
210File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "package.json"), "{ \"packageManager\": \"bun@1.2.0\" }");
237homeDirectory: workspace.WorkspaceRoot.FullName);
250homeDirectory: InvertCasing(workspace.WorkspaceRoot.FullName));
263homeDirectory: InvertCasing(workspace.WorkspaceRoot.FullName));
276homeDirectory: InvertCasing(workspace.WorkspaceRoot.FullName));
Scaffolding\ScaffoldingServiceTests.cs (19)
36File.WriteAllText(Path.Combine(rootDirectory.FullName, "package.json"), "{}");
41Path.Combine(rootDirectory.FullName, ScaffoldingService.BrownfieldTypeScriptAppHostDirectoryName),
42scaffoldDirectory.FullName);
59Assert.Equal(rootDirectory.FullName, scaffoldDirectory.FullName);
74File.WriteAllText(Path.Combine(rootDirectory.FullName, "package.json"), "{}");
78Assert.Equal(rootDirectory.FullName, scaffoldDirectory.FullName);
140var appHostDirectory = Directory.CreateDirectory(Path.Combine(rootDirectory.FullName, ScaffoldingService.BrownfieldTypeScriptAppHostDirectoryName));
141File.WriteAllText(Path.Combine(rootDirectory.FullName, "package.json"), "{ \"packageManager\": \"npm@10.0.0\" }");
142File.WriteAllText(Path.Combine(appHostDirectory.FullName, "package.json"), "{ \"packageManager\": \"pnpm@10.0.0\" }");
212var scaffoldDirectory = Directory.CreateDirectory(Path.Combine(rootDirectory.FullName, ScaffoldingService.BrownfieldTypeScriptAppHostDirectoryName));
235File.WriteAllText(Path.Combine(rootDirectory.FullName, ".gitignore"), "node_modules/\n");
236File.WriteAllText(Path.Combine(rootDirectory.FullName, "package.json"), "{}");
237File.WriteAllText(Path.Combine(rootDirectory.FullName, "apphost.mts"), string.Empty);
240rootDirectory.FullName,
274Directory.CreateDirectory(Path.Combine(rootDirectory.FullName, ".vscode"));
275File.WriteAllText(Path.Combine(rootDirectory.FullName, ".vscode", "settings.json"), "{}");
278rootDirectory.FullName,
Templating\DotNetTemplateFactoryTests.cs (17)
39var path = Path.Combine(dir.FullName, "nuget.config");
64var nugetConfigPath = Path.Combine(workingDir.FullName, "nuget.config");
96var nugetConfigPath = Path.Combine(workingDir.FullName, "nuget.config");
109var outputDir = Directory.CreateDirectory(Path.Combine(workingDir.FullName, "MyProject"));
134var parentConfigPath = Path.Combine(workingDir.FullName, "nuget.config");
140var outputConfigPath = Path.Combine(outputDir.FullName, "nuget.config");
153var outputDir = Directory.CreateDirectory(Path.Combine(workingDir.FullName, "MyProject"));
176var outputConfigPath = Path.Combine(outputDir.FullName, "nuget.config");
190var outputDir = Directory.CreateDirectory(Path.Combine(workingDir.FullName, "MyProject"));
203var workingConfigPath = Path.Combine(workingDir.FullName, "nuget.config");
207var outputConfigPath = Path.Combine(outputDir.FullName, "nuget.config");
220var outputDir = Directory.CreateDirectory(Path.Combine(workingDir.FullName, "MyProject"));
229var workingConfigPath = Path.Combine(workingDir.FullName, "nuget.config");
230var outputConfigPath = Path.Combine(outputDir.FullName, "nuget.config");
241var outputDir = Directory.CreateDirectory(Path.Combine(workingDir.FullName, "MyProject"));
250var workingConfigPath = Path.Combine(workingDir.FullName, "nuget.config");
251var outputConfigPath = Path.Combine(outputDir.FullName, "nuget.config");
Templating\OutputPathHelperTests.cs (22)
15var result = OutputPathHelper.GetUniqueDefaultOutputPath("aspire-starter", workspace.WorkspaceRoot.FullName);
26var result = OutputPathHelper.GetUniqueDefaultOutputPath("aspire-starter", workspace.WorkspaceRoot.FullName);
36File.WriteAllText(Path.Combine(dir.FullName, "file.txt"), "content");
38var result = OutputPathHelper.GetUniqueDefaultOutputPath("aspire-starter", workspace.WorkspaceRoot.FullName);
52File.WriteAllText(Path.Combine(dir.FullName, "file.txt"), "content");
55var result = OutputPathHelper.GetUniqueDefaultOutputPath("aspire-starter", workspace.WorkspaceRoot.FullName);
67File.WriteAllText(Path.Combine(dir.FullName, "file.txt"), "content");
70var result = OutputPathHelper.GetUniqueDefaultOutputPath("aspire-starter", workspace.WorkspaceRoot.FullName);
80var result = OutputPathHelper.GetUniqueDefaultOutputPath("my\0app", workspace.WorkspaceRoot.FullName);
90var result = OutputPathHelper.GetUniqueDefaultOutputPath("\0", workspace.WorkspaceRoot.FullName);
99var path = Path.Combine(workspace.WorkspaceRoot.FullName, "new-dir");
101var result = OutputPathHelper.ValidateOutputPath(path, workspace.WorkspaceRoot.FullName);
112var result = OutputPathHelper.ValidateOutputPath(dir.FullName, workspace.WorkspaceRoot.FullName);
122File.WriteAllText(Path.Combine(dir.FullName, "file.txt"), "content");
124var result = OutputPathHelper.ValidateOutputPath(dir.FullName, workspace.WorkspaceRoot.FullName);
127Assert.Contains(dir.FullName, result);
134var validator = OutputPathHelper.CreateOutputPathValidator(workspace.WorkspaceRoot.FullName);
147var validator = OutputPathHelper.CreateOutputPathValidator(workspace.WorkspaceRoot.FullName);
159File.WriteAllText(Path.Combine(dir.FullName, "file.txt"), "content");
161var validator = OutputPathHelper.CreateOutputPathValidator(workspace.WorkspaceRoot.FullName);
Templating\TemplateNuGetConfigServiceTests.cs (59)
31Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config"),
58Assert.True(await service.CreateOrUpdateNuGetConfigForSourceOverrideAsync(sourceOverride, channelName: null, outputDirectory.FullName, CancellationToken.None));
60var doc = XDocument.Load(Path.Combine(outputDirectory.FullName, "nuget.config"));
99Assert.True(await service.CreateOrUpdateNuGetConfigForSourceOverrideAsync(sourceOverride, channelName: "daily", outputDirectory.FullName, CancellationToken.None));
101var doc = XDocument.Load(Path.Combine(outputDirectory.FullName, "nuget.config"));
115Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config"),
125Path.Combine(outputDirectory.FullName, "nuget.config"),
143Assert.True(await service.CreateOrUpdateNuGetConfigForSourceOverrideAsync(sourceOverride, channelName: null, outputDirectory.FullName, CancellationToken.None));
145var doc = XDocument.Load(Path.Combine(outputDirectory.FullName, "nuget.config"));
162Assert.False(await service.CreateOrUpdateNuGetConfigForSourceOverrideAsync(sourceOverride: null, channelName: "daily", workspace.WorkspaceRoot.FullName, CancellationToken.None));
163Assert.False(await service.CreateOrUpdateNuGetConfigForSourceOverrideAsync(sourceOverride: "", channelName: "daily", workspace.WorkspaceRoot.FullName, CancellationToken.None));
164Assert.False(await service.CreateOrUpdateNuGetConfigForSourceOverrideAsync(sourceOverride: " ", channelName: "daily", workspace.WorkspaceRoot.FullName, CancellationToken.None));
177async () => await service.CreateOrUpdateNuGetConfigForSourceOverrideAsync(sourceOverride, channelName: null, workspace.WorkspaceRoot.FullName, CancellationToken.None));
179Assert.False(File.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, "nuget.config")));
189await service.PromptToCreateOrUpdateNuGetConfigAsync(channelName: null, outputPath: Directory.CreateTempSubdirectory().FullName, CancellationToken.None);
190await service.PromptToCreateOrUpdateNuGetConfigAsync(channelName: "", outputPath: Directory.CreateTempSubdirectory().FullName, CancellationToken.None);
191await service.PromptToCreateOrUpdateNuGetConfigAsync(channelName: " ", outputPath: Directory.CreateTempSubdirectory().FullName, CancellationToken.None);
204Assert.False(await service.CreateOrUpdateNuGetConfigWithoutPromptAsync(channelName: null, outputPath: dir.FullName, CancellationToken.None));
205Assert.False(await service.CreateOrUpdateNuGetConfigWithoutPromptAsync(channelName: "", outputPath: dir.FullName, CancellationToken.None));
206Assert.False(await service.CreateOrUpdateNuGetConfigWithoutPromptAsync(channelName: " ", outputPath: dir.FullName, CancellationToken.None));
333var doc = XDocument.Load(nugetConfigFile.FullName);
392var doc = XDocument.Load(nugetConfigFile.FullName);
445packagesDirectory.FullName,
449Path.Combine(nestedDirectory.FullName, "Aspire.ProjectTemplates.13.5.0.nupkg"),
452var sourceOverride = packagesDirectory.FullName.Replace('\\', '/');
513var doc = XDocument.Load(nugetConfigFile.FullName);
589var hivesDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "hives"));
647File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.5.0.nupkg"), string.Empty);
648File.WriteAllText(Path.Combine(prPackagesDirectory.FullName, "Aspire.ProjectTemplates.13.6.0-dev.nupkg"), string.Empty);
682[new PackageMapping("Aspire*", prPackagesDirectory.FullName.Replace('\\', '/'))],
690[new PackageMapping("Aspire*", packagesDirectory.FullName.Replace('\\', '/'))],
721File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.5.0.nupkg"), string.Empty);
722File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.6.0.nupkg"), string.Empty);
730[new PackageMapping("Aspire*", packagesDirectory.FullName.Replace('\\', '/'))],
759packagesDirectory.FullName,
763Path.Combine(nestedDirectory.FullName, "Aspire.ProjectTemplates.13.6.0.nupkg"),
773[new PackageMapping("Aspire*", packagesDirectory.FullName.Replace('\\', '/'))],
800File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.6.0-dev.nupkg"), string.Empty);
801File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.99.0.0.nupkg"), string.Empty);
809[new PackageMapping("Aspire*", packagesDirectory.FullName.Replace('\\', '/'))],
836File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.99.0.0.nupkg"), string.Empty);
844[new PackageMapping("Aspire*", packagesDirectory.FullName.Replace('\\', '/'))],
877File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.6.0-dev.nupkg"), string.Empty);
878File.WriteAllText(Path.Combine(packagesDirectory.FullName, "Aspire.ProjectTemplates.13.7.0-dev.nupkg"), string.Empty);
899[new PackageMapping("Aspire*", packagesDirectory.FullName.Replace('\\', '/'))],
978File.WriteAllText(Path.Combine(packagesDir.FullName, "Aspire.ProjectTemplates.13.5.0.nupkg"), string.Empty);
1000[new PackageMapping("Aspire*", packagesDir.FullName.Replace('\\', '/'))],
1030packagesDir.FullName,
1049[new PackageMapping("Aspire*", new Uri(packagesDir.FullName).AbsoluteUri)],
1120await service.PromptToCreateOrUpdateNuGetConfigAsync(channelName: "daily", outputDir.FullName, CancellationToken.None);
1123var configPath = Path.Combine(outputDir.FullName, "nuget.config");
1158await service.PromptToCreateOrUpdateNuGetConfigAsync(channelName: "stable", outputDir.FullName, CancellationToken.None);
1161Assert.False(File.Exists(Path.Combine(outputDir.FullName, "nuget.config")));
1172Path.Combine(outputDir.FullName, "nuget.config"),
1203await service.PromptToCreateOrUpdateNuGetConfigAsync(channelName: "stable", outputDir.FullName, CancellationToken.None);
1206var configPath = Path.Combine(outputDir.FullName, "nuget.config");
1233Path.Combine(outputDir.FullName, "nuget.config"),
1260var result = await service.CreateOrUpdateNuGetConfigWithoutPromptAsync(channelName: "stable", outputDir.FullName, CancellationToken.None);
1262var configPath = Path.Combine(outputDir.FullName, "nuget.config");
TestServices\FakePlaywrightServices.cs (4)
63_bundleDirectory = new DirectoryInfo(Path.Combine(executionContext.WorkingDirectory.FullName, ".fake-aspire-skills-bundle"));
149var path = Path.Combine(_bundleDirectory.FullName, "skills", skillName, relativePath);
174await File.WriteAllTextAsync(Path.Combine(_bundleDirectory.FullName, "skill-manifest.json"), manifestJson, cancellationToken);
189Sha512 = ComputeSha512(Path.Combine(_bundleDirectory.FullName, "skills", skillName, entry.Key.RelativePath))
Utils\AppHostHelperTests.cs (33)
247var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
252var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(appHostPath, workspace.WorkspaceRoot.FullName);
263var sockets = BackchannelConstants.FindMatchingSockets(appHostPath, workspace.WorkspaceRoot.FullName);
275var legacyBackchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "backchannels");
288var sockets = BackchannelConstants.FindMatchingSockets(appHostPath, workspace.WorkspaceRoot.FullName);
300var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
305var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(appHostPath, workspace.WorkspaceRoot.FullName);
316var sockets = BackchannelConstants.FindMatchingSockets(appHostPath, workspace.WorkspaceRoot.FullName);
326var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
335var sockets = BackchannelConstants.FindMatchingSockets(appHostPath, workspace.WorkspaceRoot.FullName);
344var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
349var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(appHostPath, workspace.WorkspaceRoot.FullName);
376var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
385var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(resolvedAppHostPath, workspace.WorkspaceRoot.FullName);
399workspace.WorkspaceRoot.FullName,
420var symlinkDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "link");
421Directory.CreateSymbolicLink(symlinkDirectory, realDirectory.FullName);
427var prefix = AppHostHelper.ComputeAuxiliarySocketPrefix(canonicalProjectPath, workspace.WorkspaceRoot.FullName);
430var liveSocket = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch", $"{appHostId}a1b2C3d4.{currentPid}");
436workspace.WorkspaceRoot.FullName,
450var homeDirectory = workspace.WorkspaceRoot.FullName;
457var symlinkDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "link");
458Directory.CreateSymbolicLink(symlinkDirectory, realDirectory.FullName);
460var realProjectPath = Path.Combine(realDirectory.FullName, "TestAppHost.csproj");
562var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
572var found = BackchannelConstants.FindMatchingSockets(mixedPath, workspace.WorkspaceRoot.FullName);
584var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "bch");
594var upperPrefix = AppHostHelper.ComputeAuxiliarySocketPrefix(upperDrivePath, workspace.WorkspaceRoot.FullName);
595var lowerPrefix = AppHostHelper.ComputeAuxiliarySocketPrefix(lowerDrivePath, workspace.WorkspaceRoot.FullName);
604var fromUpper = BackchannelConstants.FindMatchingSockets(upperDrivePath, workspace.WorkspaceRoot.FullName);
605var fromLower = BackchannelConstants.FindMatchingSockets(lowerDrivePath, workspace.WorkspaceRoot.FullName);
620var backchannelsDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire", "cli", "backchannels");
637var found = BackchannelConstants.FindMatchingSockets(appHostPath, workspace.WorkspaceRoot.FullName);
Utils\CliPathHelperTests.cs (15)
151var installPrefix = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire");
164var installPrefix = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-pr-test");
182var binaryPath = WriteBinaryWithSidecar(workspace.WorkspaceRoot.FullName, source);
193var installPrefix = Path.Combine(workspace.WorkspaceRoot.FullName, "portable");
254var target = Path.Combine(workspace.WorkspaceRoot.FullName, "target-aspire");
257var link = Path.Combine(workspace.WorkspaceRoot.FullName, "aspire");
329var realPath = Path.Combine(workspace.WorkspaceRoot.FullName, "binary-under-test");
345var realPath = Path.Combine(workspace.WorkspaceRoot.FullName, "binary-under-test");
365var installPrefix = Path.Combine(workspace.WorkspaceRoot.FullName, "portable");
397var staleFile = BackchannelConstants.ComputeCliSocketPath(tempRoot.FullName, "cli.sock");
400var freshFile = BackchannelConstants.ComputeCliSocketPath(tempRoot.FullName, "cli.sock");
426var matching = BackchannelConstants.ComputeCliSocketPath(tempRoot.FullName, "cli.sock");
429var unrelated = BackchannelConstants.ComputeCliSocketPath(tempRoot.FullName, "apphost.sock");
454var missingDir = probe.FullName;
468var deleted = CliPathHelper.CleanupStaleCliSockets(tempDir.FullName, TimeSpan.FromHours(24));
Utils\DcpConnectionHealthCheckTests.cs (7)
47new FixedLayoutDiscovery(LayoutComponent.Dcp, dcpDirectory.FullName),
94() => checker.TestConnectionAsync(dcpDirectory.FullName, useDeveloperCertificate: false, cancellation.Token));
112Assert.Equal(dcpDirectory.FullName, path);
118new FixedLayoutDiscovery(LayoutComponent.Dcp, dcpDirectory.FullName),
147new FixedLayoutDiscovery(LayoutComponent.Dcp, dcpDirectory.FullName),
189var kubeconfigPath = Path.Combine(workspace.WorkspaceRoot.FullName, "kubeconfig");
249File.WriteAllText(BundleDiscovery.GetDcpExecutablePath(dcpDirectory.FullName), string.Empty);
Utils\DevCertsCheckTests.cs (52)
68var certUtilPath = Path.Combine(directory.FullName, CertificateHelpers.CertUtilCommand);
81? Path.Combine(directory.FullName, "openssl.cmd")
82: Path.Combine(directory.FullName, "openssl");
116File.WriteAllText(Path.Combine(trustDirectory.FullName, GetOpenSslCertificateFileName(certificate)), certificatePem);
117File.WriteAllText(Path.Combine(trustDirectory.FullName, hashEntryName), certificatePem);
378["PATH"] = tempDirectory.FullName
406var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
424["PATH"] = tempDirectory.FullName,
425[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
450var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
468["PATH"] = tempDirectory.FullName,
469[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
501var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
519["PATH"] = tempDirectory.FullName,
520[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
556var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
557File.WriteAllText(Path.Combine(trustDirectory.FullName, GetOpenSslCertificateFileName(certificate)), certificate.ExportCertificatePem());
574["PATH"] = tempDirectory.FullName,
575[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
606var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
607File.WriteAllText(Path.Combine(trustDirectory.FullName, GetOpenSslCertificateFileName(certificate)), certificate.ExportCertificatePem());
624["PATH"] = tempDirectory.FullName,
625[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
665var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
666File.WriteAllText(Path.Combine(trustDirectory.FullName, GetOpenSslCertificateFileName(certificate)), certificate.ExportCertificatePem());
683["PATH"] = tempDirectory.FullName,
684[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
722var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
723File.WriteAllText(Path.Combine(trustDirectory.FullName, GetOpenSslCertificateFileName(certificate)), certificate.ExportCertificatePem());
740["PATH"] = tempDirectory.FullName,
741[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
764var trustDirectory = Path.Combine(tempDirectory.FullName, "missing-trust");
781["PATH"] = tempDirectory.FullName,
808var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
825["PATH"] = tempDirectory.FullName,
826[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
852var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
854File.WriteAllText(Path.Combine(trustDirectory.FullName, corruptCertificateFileName), "not a certificate");
871["PATH"] = tempDirectory.FullName,
872[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
898var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
900File.WriteAllText(Path.Combine(trustDirectory.FullName, corruptCertificateFileName), "not a certificate");
917["PATH"] = tempDirectory.FullName,
918[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
944var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
946File.WriteAllText(Path.Combine(trustDirectory.FullName, "unrelated.pem"), "not a certificate");
963["PATH"] = tempDirectory.FullName,
964[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
988var trustDirectory = Directory.CreateDirectory(Path.Combine(tempDirectory.FullName, "trust"));
989File.WriteAllText(Path.Combine(trustDirectory.FullName, GetOpenSslCertificateFileName(certificate)), staleCertificate.ExportCertificatePem());
1006["PATH"] = tempDirectory.FullName,
1007[CertificateHelpers.DevCertsOpenSslCertDirEnvVar] = trustDirectory.FullName
Utils\FileSystemHelperTests.cs (35)
16var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
19File.WriteAllText(Path.Combine(sourceDir.FullName, "file1.txt"), "content1");
20File.WriteAllText(Path.Combine(sourceDir.FullName, "file2.txt"), "content2");
21File.WriteAllText(Path.Combine(sourceDir.FullName, "file3.cs"), "using System;");
24FileSystemHelper.CopyDirectory(sourceDir.FullName, destDir);
43var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
49File.WriteAllText(Path.Combine(sourceDir.FullName, "root.txt"), "root content");
50File.WriteAllText(Path.Combine(subDir1.FullName, "level1.txt"), "level 1 content");
51File.WriteAllText(Path.Combine(subDir2.FullName, "level2.txt"), "level 2 content");
54FileSystemHelper.CopyDirectory(sourceDir.FullName, destDir);
75var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "empty_destination");
78FileSystemHelper.CopyDirectory(sourceDir.FullName, destDir);
91var nonExistentSource = Path.Combine(workspace.WorkspaceRoot.FullName, "nonexistent");
92var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
104var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
120FileSystemHelper.CopyDirectory(sourceDir.FullName, null!));
128var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
144FileSystemHelper.CopyDirectory(sourceDir.FullName, string.Empty));
153var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
156var binaryFilePath = Path.Combine(sourceDir.FullName, "binary.dat");
162FileSystemHelper.CopyDirectory(sourceDir.FullName, destDir);
178var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
185File.WriteAllText(Path.Combine(current.FullName, $"file{i}.txt"), $"content at level {i}");
189FileSystemHelper.CopyDirectory(sourceDir.FullName, destDir);
209var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
212File.WriteAllText(Path.Combine(sourceDir.FullName, "file1.txt"), "new content 1");
213File.WriteAllText(Path.Combine(sourceDir.FullName, "file2.txt"), "new content 2");
216File.WriteAllText(Path.Combine(subDir.FullName, "project.assets.json"), "new assets");
217File.WriteAllText(Path.Combine(subDir.FullName, "project.csproj.nuget.dgspec.json"), "new dgspec");
225File.WriteAllText(Path.Combine(destSubDir.FullName, "project.assets.json"), "old assets");
226File.WriteAllText(Path.Combine(destSubDir.FullName, "project.csproj.nuget.dgspec.json"), "old dgspec");
229FileSystemHelper.CopyDirectory(sourceDir.FullName, destDir, overwrite: true);
244var destDir = Path.Combine(workspace.WorkspaceRoot.FullName, "destination");
247File.WriteAllText(Path.Combine(sourceDir.FullName, "file1.txt"), "new content");
255FileSystemHelper.CopyDirectory(sourceDir.FullName, destDir, overwrite: false));
Utils\LegacySettingsFileCheckTests.cs (13)
15var legacyDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
21var subDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "src"));
43Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
60var legacyDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
64Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
83Path.Combine(workspace.WorkspaceRoot.FullName, AspireConfigFile.FileName),
88var subDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "src"));
105var legacyDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
111var subDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "src", "MyProject"));
131var legacyDir = Path.Combine(workspace.WorkspaceRoot.FullName, ".aspire");
136var childDir = new DirectoryInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "project"));
139Path.Combine(childDir.FullName, AspireConfigFile.FileName),
143var workingDir = new DirectoryInfo(Path.Combine(childDir.FullName, "src"));
Utils\PathNormalizerTests.cs (15)
19var file = new FileInfo(Path.Combine(subdir.FullName, "app.csproj"));
20File.WriteAllText(file.FullName, "<Project />");
22var firstPass = PathNormalizer.ResolveSymlinks(file.FullName);
39var target = new FileInfo(Path.Combine(workspace.WorkspaceRoot.FullName, "target.csproj"));
40File.WriteAllText(target.FullName, "<Project />");
42var linkPath = Path.Combine(workspace.WorkspaceRoot.FullName, "link.csproj");
43TryCreateSymlink(linkPath, target.FullName, isDirectory: false);
50Assert.Equal(PathNormalizer.ResolveSymlinks(target.FullName), resolved);
64var file = new FileInfo(Path.Combine(nested.FullName, "app.csproj"));
65File.WriteAllText(file.FullName, "<Project />");
67var linkDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "link");
68TryCreateSymlink(linkDirectory, realDirectory.FullName, isDirectory: true);
75var resolvedThroughReal = PathNormalizer.ResolveSymlinks(file.FullName);
85var missingTarget = Path.Combine(workspace.WorkspaceRoot.FullName, "missing.csproj");
86var linkPath = Path.Combine(workspace.WorkspaceRoot.FullName, "broken-link.csproj");
Aspire.Dashboard (2)
Aspire.Dashboard.Components.Tests (13)
Aspire.Dashboard.Tests (34)
Aspire.Deployment.EndToEnd.Tests (147)
AzureSandboxesDeploymentTests.cs (10)
62var firstDeployOutputFile = Path.Combine(workspace.WorkspaceRoot.FullName, "first-deploy-output.txt");
63var secondDeployOutputFile = Path.Combine(workspace.WorkspaceRoot.FullName, "second-deploy-output.txt");
64var firstUrlFile = Path.Combine(workspace.WorkspaceRoot.FullName, "first-url.txt");
65var secondUrlFile = Path.Combine(workspace.WorkspaceRoot.FullName, "second-url.txt");
66var stateMarkerFile = Path.Combine(workspace.WorkspaceRoot.FullName, "state-marker");
71output.WriteLine($"Workspace: {workspace.WorkspaceRoot.FullName}");
233var siteDir = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "site"));
234File.WriteAllText(Path.Combine(siteDir.FullName, "Dockerfile"), """
239File.WriteAllText(Path.Combine(siteDir.FullName, "index.html"), $$"""
247File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts"), """
TypeScriptJavaScriptHostingDeploymentTests.cs (8)
53output.WriteLine($"Workspace: {workspace.WorkspaceRoot.FullName}");
123var apiDir = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "api"));
124File.WriteAllText(Path.Combine(apiDir.FullName, "package.json"), """
134File.WriteAllText(Path.Combine(apiDir.FullName, "server.js"), """
144var staticSiteDir = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "staticsite"));
145File.WriteAllText(Path.Combine(staticSiteDir.FullName, "package.json"), """
155File.WriteAllText(Path.Combine(staticSiteDir.FullName, "index.html"), """
168File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "apphost.mts"), """
Aspire.EndToEnd.Tests (6)
Aspire.Hosting (12)
Aspire.Hosting.Azure (4)
Aspire.Hosting.Azure.Tests (26)
AzureEnvironmentResourceTests.cs (14)
21output.WriteLine($"Temp directory: {workspace.FullName}");
22using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, workspace.FullName);
34var mainBicepPath = Path.Combine(workspace.FullName, "main.bicep");
38var envBicepPath = Path.Combine(workspace.FullName, "env", "env.bicep");
53output.WriteLine($"Temp directory: {workspace.FullName}");
54using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, workspace.FullName);
71var mainBicepPath = Path.Combine(workspace.FullName, "main.bicep");
85output.WriteLine($"Temp directory: {workspace.FullName}");
87workspace.FullName);
122var mainBicepPath = Path.Combine(workspace.FullName, "main.bicep");
133output.WriteLine($"Temp directory: {workspace.FullName}");
135workspace.FullName);
170var mainBicep = File.ReadAllText(Path.Combine(workspace.FullName, "main.bicep"));
171var storageBicep = File.ReadAllText(Path.Combine(workspace.FullName, "storage", "storage.bicep"));
Aspire.Hosting.Blazor.Tests (7)
Aspire.Hosting.Browsers.Tests (33)
BrowserLogsSessionManagerTests.cs (22)
64var browserExecutable = Path.Combine(userDataDirectory.FullName, "browser");
71createUserDataDirectory: (configuration, _) => BrowserLogsUserDataDirectory.CreatePersistent(userDataDirectory.FullName, configuration.Profile),
104var browserExecutable = Path.Combine(userDataDirectory.FullName, "browser");
111createUserDataDirectory: (configuration, _) => BrowserLogsUserDataDirectory.CreatePersistent(userDataDirectory.FullName, configuration.Profile),
139var browserExecutable = Path.Combine(userDataDirectory.FullName, "browser");
145createUserDataDirectory: (configuration, _) => BrowserLogsUserDataDirectory.CreatePersistent(userDataDirectory.FullName, configuration.Profile),
173var browserExecutable = Path.Combine(userDataDirectory.FullName, "browser");
175var identity = new BrowserHostIdentity(browserExecutable, userDataDirectory.FullName);
189createUserDataDirectory: (configuration, _) => BrowserLogsUserDataDirectory.CreatePersistent(userDataDirectory.FullName, configuration.Profile),
259Path.Combine(userDataDirectory.FullName, "browser"),
260userDataDirectory.FullName);
261var metadataPath = BrowserEndpointDiscovery.GetEndpointMetadataFilePath(userDataDirectory.FullName);
289Path.Combine(userDataDirectory.FullName, "bröwser"),
290userDataDirectory.FullName);
291var metadataPath = BrowserEndpointDiscovery.GetEndpointMetadataFilePath(userDataDirectory.FullName);
319Path.Combine(userDataDirectory.FullName, "browser"),
320userDataDirectory.FullName);
321var metadataPath = BrowserEndpointDiscovery.GetEndpointMetadataFilePath(userDataDirectory.FullName);
330"userDataRootPath": {{System.Text.Json.JsonSerializer.Serialize(userDataDirectory.FullName)}}
352Path.Combine(userDataDirectory.FullName, "browser"),
353userDataDirectory.FullName);
567action(userDataDirectory.FullName);
Aspire.Hosting.CodeGeneration.Java.Tests (2)
Aspire.Hosting.CodeGeneration.Rust.Tests (13)
Aspire.Hosting.CodeGeneration.TypeScript (1)
Aspire.Hosting.CodeGeneration.TypeScript.Tests (14)
Aspire.Hosting.Containers.Tests (7)
Aspire.Hosting.Dotnet (2)
Aspire.Hosting.Dotnet.Tests (17)
DotnetProjectResourceTests.cs (17)
433var projectPath = Path.Combine(projectDir.FullName, "MyService.csproj");
437var app = builder.AddDotnetProject("svc", projectDir.FullName, o => o.ExcludeLaunchProfile = true);
451File.WriteAllText(Path.Combine(projectDir.FullName, "First.csproj"), "<Project />");
452File.WriteAllText(Path.Combine(projectDir.FullName, "Second.csproj"), "<Project />");
455var app = builder.AddDotnetProject("svc", projectDir.FullName, o => o.ExcludeLaunchProfile = true);
458Assert.Equal(projectDir.FullName, metadata.ProjectPath);
477var projectPath = Path.Combine(projectDir.FullName, "MyService.csproj");
480var propertiesDir = Directory.CreateDirectory(Path.Combine(projectDir.FullName, "Properties"));
481await File.WriteAllTextAsync(Path.Combine(propertiesDir.FullName, "launchSettings.json"), """
564var projectPath = Path.Combine(projectDir.FullName, "MyService.csproj");
567var propertiesDir = Directory.CreateDirectory(Path.Combine(projectDir.FullName, "Properties"));
568await File.WriteAllTextAsync(Path.Combine(propertiesDir.FullName, "launchSettings.json"), """
634var projectPath = Path.Combine(projectDir.FullName, "MyService.csproj");
637var propertiesDir = Directory.CreateDirectory(Path.Combine(projectDir.FullName, "Properties"));
638await File.WriteAllTextAsync(Path.Combine(propertiesDir.FullName, "launchSettings.json"), """
932CreateFile(projectDirectory.FullName, "MyService.csproj");
933return projectDirectory.FullName;
Aspire.Hosting.Garnet.Tests (1)
Aspire.Hosting.Go.Tests (63)
AddGoAppTests.cs (63)
88File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
90using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
91builder.AddGoApp("api", sourceDir.FullName, packagePath: "./cmd/server");
95var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
509var packageDirectory = Path.Combine(sourceDir.FullName, "cmd", "server");
511var app = builder.AddGoApp("api", sourceDir.FullName,
522Assert.Equal(sourceDir.FullName, launchConfig.WorkingDirectory);
533var app = builder.AddGoApp("api", sourceDir.FullName);
559var app = builder.AddGoApp("api", sourceDir.FullName,
596var app = builder.AddGoApp("api", sourceDir.FullName, packagePath: "./cmd/server")
626var app = builder.AddGoApp("api", sourceDir.FullName,
779File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.23\n");
780File.WriteAllText(Path.Combine(sourceDir.FullName, "main.go"), "package main\nfunc main() {}");
782using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
783builder.AddGoApp("api", sourceDir.FullName);
787var dockerfilePath = Path.Combine(outputDir.FullName, "api.Dockerfile");
802using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
803builder.AddGoApp("api", sourceDir.FullName);
807var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
819File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.22\n");
821using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
822builder.AddGoApp("api", sourceDir.FullName,
829var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
841File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
846using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
847builder.AddGoApp("api", sourceDir.FullName, ldFlags: "-X main.msg=it's alive");
851var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
864File.WriteAllText(Path.Combine(sourceDir.FullName, "Dockerfile"), "FROM scratch");
866using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
867var app = builder.AddGoApp("api", sourceDir.FullName);
880File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.22\n");
882using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
883builder.AddGoApp("api", sourceDir.FullName)
888var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
902File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
904using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
905builder.AddGoApp("api", sourceDir.FullName)
910var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
922File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
924using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
925builder.AddGoApp("api", sourceDir.FullName)
930var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
954DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
978File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
981DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
990var api = builder.AddGoApp("api", sourceDir.FullName);
995var dockerfile = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
1012File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
1015DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1029var api = builder.AddGoApp("api", sourceDir.FullName);
1035var dockerfile = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
1080File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
1082using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1083builder.AddGoApp("api", sourceDir.FullName, raceDetector: true);
1087var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
1154File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
1156using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1157builder.AddGoApp("api", sourceDir.FullName);
1161var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
1173File.WriteAllText(Path.Combine(sourceDir.FullName, "go.mod"), "module example.com/api\n\ngo 1.24\n");
1175using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1176builder.AddGoApp("api", sourceDir.FullName)
1181var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"));
Aspire.Hosting.Java (6)
Aspire.Hosting.Java.Tests (113)
AddJavaAppPublishTests.cs (103)
234File.WriteAllText(Path.Combine(sourceDir.FullName, "build.gradle"), "");
240var app = builder.AddJavaApp("api", sourceDir.FullName, "build/libs/api.jar");
243() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
409WritePom(sourceDir.FullName, javaVersion: "21");
410File.WriteAllText(Path.Combine(sourceDir.FullName, "Dockerfile"), "FROM scratch\n");
412using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
413builder.AddJavaApp("api", sourceDir.FullName).WithMavenGoal("spring-boot:run");
416Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
430WritePom(sourceDir.FullName, javaVersion: "21");
431File.WriteAllText(Path.Combine(sourceDir.FullName, "Dockerfile"), "FROM scratch\n");
433using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
434builder.AddJavaApp("api", sourceDir.FullName)
446$"'{sourceDir.FullName}' and its OpenTelemetry agent path 'target/otel/javaagent.jar' is " +
461WritePom(sourceDir.FullName, javaVersion: "21");
462File.WriteAllText(Path.Combine(sourceDir.FullName, "Dockerfile"), "FROM scratch\n");
464using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
465builder.AddJavaApp("api", sourceDir.FullName)
485WritePom(sourceDir.FullName, javaVersion: "21");
487using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
488builder.AddJavaApp("api", sourceDir.FullName)
494var manifest = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "aspire-manifest.json"), TestContext.Current.CancellationToken);
835WritePom(sourceDir.FullName, javaVersion: "21");
839builder.AddJavaApp("worker", sourceDir.FullName, "target/worker.jar", ["--interval-seconds", "10"])
863File.WriteAllText(Path.Combine(sourceDir.FullName, "pom.xml"), "<project/>");
866var app = builder.AddJavaApp("api", sourceDir.FullName, "target/api.jar");
869() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
881WritePom(sourceDir.FullName, javaVersion: "21");
882WriteWrapper(siblingDir.FullName, "mvnw");
885var app = builder.AddJavaApp("api", sourceDir.FullName)
890() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
908var app = builder.AddJavaApp("api", sourceDir.FullName, jarPath);
913() => JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out _));
928WritePom(sourceDir.FullName, javaVersion: "21");
931var app = builder.AddJavaApp("api", sourceDir.FullName)
936() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
951var app = builder.AddJavaApp("api", sourceDir.FullName, jarPath);
955Assert.True(JavaDockerfileGenerator.TryGetPrebuiltJarPath(app.Resource, sourceDir.FullName, out var resolved));
1008WritePom(sourceDir.FullName, javaVersion: "21");
1012File.Delete(Path.Combine(sourceDir.FullName, "mvnw"));
1013WriteWrapper(sourceDir.FullName, "mvnw.cmd");
1016var app = builder.AddJavaApp("api", sourceDir.FullName)
1021() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
1037WriteWrapper(sourceDir.FullName, wrapperName);
1038Directory.Delete(Path.Combine(sourceDir.FullName, supportDirectory), recursive: true);
1041var app = builder.AddJavaApp("api", sourceDir.FullName);
1048() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
1148Path.Combine(sourceDir.FullName, "App.java"),
1162$"run --rm -v {sourceDir.FullName}:/work -w /work docker.io/library/eclipse-temurin:{JavaVersionDetector.DefaultJavaVersion}-jdk " +
1164sourceDir.FullName);
1167using (var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest"))
1169builder.AddJavaApp("api", sourceDir.FullName, Path.Combine("target", "app.jar"), ["--greeting", "hello"]);
1178await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "aspire-manifest.json"), TestContext.Current.CancellationToken));
1188Path.Combine(outputDir.FullName, "api.Dockerfile"),
1189Path.Combine(sourceDir.FullName, "Dockerfile"));
1191Path.Combine(outputDir.FullName, "api.Dockerfile.dockerignore"),
1192Path.Combine(sourceDir.FullName, ".dockerignore"));
1198var buildResult = await RunDockerCommandAsync($"build --network=host -t {imageName} -f Dockerfile .", sourceDir.FullName);
1202var runResult = await RunDockerCommandAsync($"run --rm --network=none {imageName} {string.Join(' ', manifestArgs)}", sourceDir.FullName);
1211await RunDockerCommandAsync($"rmi {imageName}", sourceDir.FullName);
1228Path.Combine(sourceDir.FullName, "pom.xml"),
1259var sourcePath = Directory.CreateDirectory(Path.Combine(sourceDir.FullName, "src", "main", "java"));
1261Path.Combine(sourcePath.FullName, "App.java"),
1280$"run --rm -v {sourceDir.FullName}:/work -w /work docker.io/library/maven:3.9-eclipse-temurin-{JavaVersionDetector.DefaultJavaVersion} " +
1282sourceDir.FullName);
1285using (var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest"))
1287builder.AddJavaApp("api", sourceDir.FullName)
1295Path.Combine(outputDir.FullName, "api.Dockerfile"),
1296Path.Combine(sourceDir.FullName, "Dockerfile"));
1298Path.Combine(outputDir.FullName, "api.Dockerfile.dockerignore"),
1299Path.Combine(sourceDir.FullName, ".dockerignore"));
1307var buildResult = await RunDockerCommandAsync($"build --network=host -t {imageName} -f Dockerfile .", sourceDir.FullName);
1310var runResult = await RunDockerCommandAsync($"run --rm --network=none {imageName}", sourceDir.FullName);
1319await RunDockerCommandAsync($"rmi {imageName}", sourceDir.FullName);
1740WritePom(sourceDir.FullName, javaVersion: "21");
1741var nested = Directory.CreateDirectory(Path.Combine(sourceDir.FullName, "build tools"));
1742WriteWrapper(nested.FullName, "mvnw");
1745var app = builder.AddJavaApp("api", sourceDir.FullName)
1750() => JavaDockerfileGenerator.ResolveContainerBuildForTesting(app.Resource, sourceDir.FullName));
1766WritePom(sourceDir.FullName, javaVersion: "21");
1767WritePom(movedDir.FullName, javaVersion: "21");
1769using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1770builder.AddJavaApp("api", sourceDir.FullName)
1772.WithWorkingDirectory(movedDir.FullName);
1779File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")),
1793configureSource(sourceDir.FullName);
1795using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1799var app = builder.AddQuarkusApp("api", sourceDir.FullName);
1805return await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
1975WritePom(sourceDir.FullName, javaVersion: "21");
1978builder.AddJavaApp("api", sourceDir.FullName)
1980.WithWorkingDirectory(elsewhere.FullName);
2003Assert.Contains(elsewhere.FullName, exception.Message, StringComparison.Ordinal);
2004Assert.Contains(sourceDir.FullName, exception.Message, StringComparison.Ordinal);
2016configureSource?.Invoke(sourceDir.FullName);
2018using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
2021? builder.AddJavaApp("api", sourceDir.FullName)
2022: builder.AddJavaApp("api", sourceDir.FullName, jarPath);
2028return await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
2040configureSource?.Invoke(sourceDir.FullName);
2042using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
2045? builder.AddJavaApp("api", sourceDir.FullName)
2046: builder.AddJavaApp("api", sourceDir.FullName, jarPath);
2052var ignorePath = Path.Combine(outputDir.FullName, "api.Dockerfile.dockerignore");
Aspire.Hosting.JavaScript (2)
Aspire.Hosting.JavaScript.Tests (8)
Aspire.Hosting.Kafka.Tests (1)
Aspire.Hosting.Kubernetes (9)
Aspire.Hosting.Maui (2)
Aspire.Hosting.Milvus.Tests (1)
Aspire.Hosting.MongoDB.Tests (3)
Aspire.Hosting.MySql.Tests (3)
Aspire.Hosting.Nats.Tests (1)
Aspire.Hosting.Oracle.Tests (3)
Aspire.Hosting.PostgreSQL.Tests (3)
Aspire.Hosting.Python.Tests (47)
AddPythonAppTests.cs (44)
267var projectDirectory = Directory.CreateTempSubdirectory().FullName;
444.WithVirtualEnvironment(venvDir.FullName);
454Assert.Equal(Path.Join(venvDir.FullName, "Scripts", "python.exe"), pythonProjectResource.Command);
458Assert.Equal(Path.Join(venvDir.FullName, "bin", "python"), pythonProjectResource.Command);
532var appVenvPath = Path.Combine(appDir.FullName, ".venv");
536var resourceBuilder = builder.AddPythonApp("pythonProject", appDir.FullName, scriptName);
545var expectedProjectDirectory = Path.GetFullPath(Path.Combine(builder.AppHostDirectory, appDir.FullName));
656var resourceBuilder = builder.AddPythonApp("pythonProject", appDir.FullName, scriptName);
665var expectedProjectDirectory = Path.GetFullPath(Path.Combine(builder.AppHostDirectory, appDir.FullName));
1245var projectDirectory = sourceDir.FullName;
1275using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1292var scriptDockerfilePath = Path.Combine(outputDir.FullName, "script-app.Dockerfile");
1295var moduleDockerfilePath = Path.Combine(outputDir.FullName, "module-app.Dockerfile");
1298var executableDockerfilePath = Path.Combine(outputDir.FullName, "executable-app.Dockerfile");
1316var projectDirectory = sourceDir.FullName;
1341using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1358var scriptDockerfilePath = Path.Combine(outputDir.FullName, "script-app.Dockerfile");
1361var moduleDockerfilePath = Path.Combine(outputDir.FullName, "module-app.Dockerfile");
1364var executableDockerfilePath = Path.Combine(outputDir.FullName, "executable-app.Dockerfile");
1771var projectDirectory = sourceDir.FullName;
1799using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1812var dockerfilePath = Path.Combine(outputDir.FullName, "custom-images-app.Dockerfile");
1830var projectDirectory = sourceDir.FullName;
1845using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1854var dockerfilePath = Path.Combine(outputDir.FullName, "script-app.Dockerfile");
1878var projectDirectory = sourceDir.FullName;
1895using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1904var dockerfilePath = Path.Combine(outputDir.FullName, "script-app.Dockerfile");
1918var projectDirectory = sourceDir.FullName;
1927using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1936var dockerfilePath = Path.Combine(outputDir.FullName, "script-app.Dockerfile");
1950var projectDirectory = sourceDir.FullName;
1962using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1973var scriptDockerfilePath = Path.Combine(outputDir.FullName, "script-app.Dockerfile");
1976var moduleDockerfilePath = Path.Combine(outputDir.FullName, "module-app.Dockerfile");
1979var executableDockerfilePath = Path.Combine(outputDir.FullName, "executable-app.Dockerfile");
2136.WithVirtualEnvironment(venvDir.FullName, createIfNotExists: false);
2163.WithVirtualEnvironment(venvDir.FullName, createIfNotExists: true);
2191.WithVirtualEnvironment(venvDir.FullName);
2290.WithVirtualEnvironment(venvDir.FullName, createIfNotExists: true);
2320.WithVirtualEnvironment(venvDir.FullName, createIfNotExists: false);
2355.WithVirtualEnvironment(venvDir.FullName, createIfNotExists: true)
2391.WithVirtualEnvironment(venvDir.FullName, createIfNotExists: false)
2573.WithVirtualEnvironment(venvDir.FullName, createIfNotExists: true);
Aspire.Hosting.Qdrant.Tests (1)
Aspire.Hosting.RabbitMQ.Tests (1)
Aspire.Hosting.Radius (1)
Aspire.Hosting.Radius.Tests (5)
Aspire.Hosting.Redis.Tests (2)
Aspire.Hosting.RemoteHost.Tests (32)
IntegrationLoadContextTests.cs (8)
47var manifestPath = Path.Combine(manifestDirectory.FullName, "integration-package-probe-manifest.json");
65Directory.Delete(manifestDirectory.FullName, recursive: true);
75var nativeLibraryPath = Path.Combine(manifestDirectory.FullName, "runtimes", "linux-x64", "native", "libe_sqlite3.so");
79var manifestPath = Path.Combine(manifestDirectory.FullName, "integration-package-probe-manifest.json");
94Directory.Delete(manifestDirectory.FullName, recursive: true);
104var resourceAssemblyPath = Path.Combine(manifestDirectory.FullName, "fr", "Aspire.Hosting.Redis.resources.dll");
108var manifestPath = Path.Combine(manifestDirectory.FullName, "integration-package-probe-manifest.json");
128Directory.Delete(manifestDirectory.FullName, recursive: true);
Aspire.Hosting.Rust (2)
Aspire.Hosting.Rust.Tests (137)
AddRustAppPublishTests.cs (122)
116using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
118var rust = builder.AddRustApp("api", sourceDir.FullName).WithCargoTarget(target);
149using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
151builder.AddRustApp("api", sourceDir.FullName).WithCargoTarget(target);
176using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
178builder.AddRustApp("api", sourceDir.FullName).WithCargoTarget(target);
197using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
199builder.AddRustApp("api", sourceDir.FullName)
223using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
225builder.AddRustApp("api", sourceDir.FullName)
249using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
251builder.AddRustApp("api", sourceDir.FullName)
281using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
283builder.AddRustApp("api", sourceDir.FullName)
303using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
312var rust = builder.AddRustApp("api", sourceDir.FullName);
403using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
407var rust = builder.AddRustApp("api", sourceDir.FullName);
418Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
440using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
447var rust = builder.AddRustApp("api", sourceDir.FullName);
473Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
497File.WriteAllText(Path.Combine(sourceDir.FullName, "Dockerfile"), "FROM scratch\n");
499using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
500builder.AddRustApp("api", sourceDir.FullName);
503Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
515File.WriteAllText(Path.Combine(sourceDir.FullName, "Dockerfile"), "FROM scratch\n");
517using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
518builder.AddRustApp("api", sourceDir.FullName).WithCargoTarget(target);
521Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
531var customDockerfile = Path.Combine(customContext.FullName, "Dockerfile.prod");
535using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
536builder.AddRustApp("api", sourceDir.FullName)
537.PublishAsDockerFile(container => container.WithDockerfile(customContext.FullName, "Dockerfile.prod"));
543Assert.Equal(customContext.FullName, dockerfile.ContextPath);
545Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
556using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
557builder.AddRustApp("api", sourceDir.FullName)
559customContext.FullName,
566Path.Combine(outputDir.FullName, "api.Dockerfile"),
569Assert.Equal(customContext.FullName, dockerfile.ContextPath);
590var manifestDirectory = Directory.CreateDirectory(Path.Combine(sourceDir.FullName, "Crates", "API"));
591File.WriteAllText(Path.Combine(manifestDirectory.FullName, "Cargo.toml"), "[package]\nname = \"api\"\n");
594if (!File.Exists(Path.Combine(sourceDir.FullName, differentlyCasedPath)))
599using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
601builder.AddRustApp("api", sourceDir.FullName).WithCargoManifestPath(differentlyCasedPath);
604var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
617var manifestDirectory = Directory.CreateDirectory(Path.Combine(sourceDir.FullName, decomposedDirectoryName));
619File.WriteAllText(Path.Combine(manifestDirectory.FullName, "Cargo.toml"), "[package]\nname = \"api\"\n");
622if (!File.Exists(Path.Combine(sourceDir.FullName, composedManifestPath)))
627var storedDirectoryName = Path.GetFileName(Assert.Single(Directory.EnumerateDirectories(sourceDir.FullName)));
629using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
631builder.AddRustApp("api", sourceDir.FullName).WithCargoManifestPath(composedManifestPath);
634var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
651var sourceDir = Directory.CreateDirectory(Path.Combine(restrictedAncestor.FullName, "source"));
652var manifestDirectory = Directory.CreateDirectory(Path.Combine(sourceDir.FullName, "Crates", "API"));
655File.WriteAllText(Path.Combine(manifestDirectory.FullName, "Cargo.toml"), "[package]\nname = \"api\"\n");
657var originalMode = File.GetUnixFileMode(restrictedAncestor.FullName);
662File.SetUnixFileMode(restrictedAncestor.FullName, UnixFileMode.UserExecute);
666Directory.GetFileSystemEntries(restrictedAncestor.FullName);
673using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
675builder.AddRustApp("api", sourceDir.FullName).WithCargoManifestPath("Crates/API/Cargo.toml");
679Path.Combine(outputDir.FullName, "api.Dockerfile"),
686File.SetUnixFileMode(restrictedAncestor.FullName, originalMode);
718File.WriteAllText(Path.Combine(manifestDirectory.FullName, "Cargo.toml"), "[package]\nname = \"api\"\n");
736var canonicalSourceDir = TestPathNormalizer.ResolveSymlinks(sourceDir.FullName);
738if (string.Equals(sourceDir.FullName, canonicalSourceDir, StringComparison.Ordinal))
747var manifestPath = Path.GetRelativePath(sourceDir.FullName, canonicalManifest);
749using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
751builder.AddRustApp("api", sourceDir.FullName).WithCargoManifestPath(manifestPath);
754var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
770var canonicalSourceDir = TestPathNormalizer.ResolveSymlinks(sourceDir.FullName);
771var manifestDirectory = Directory.CreateDirectory(Path.Combine(sourceDir.FullName, "Crates", "API"));
773File.WriteAllText(Path.Combine(manifestDirectory.FullName, "Cargo.toml"), "[package]\nname = \"api\"\n");
775if (string.Equals(sourceDir.FullName, canonicalSourceDir, StringComparison.Ordinal))
786var manifestPath = Path.GetRelativePath(sourceDir.FullName, differentlyCasedCanonicalManifest);
788using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
790builder.AddRustApp("api", sourceDir.FullName).WithCargoManifestPath(manifestPath);
793var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
805File.WriteAllText(Path.Combine(outsideDir.FullName, "Cargo.toml"), "[package]\nname = \"outside\"\n");
806CreateDirectorySymbolicLinkOrSkip(Path.Combine(sourceDir.FullName, "linked"), outsideDir.FullName);
808using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
810builder.AddRustApp("api", sourceDir.FullName).WithCargoManifestPath("linked/Cargo.toml");
813Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
822var firstLink = Path.Combine(sourceDir.FullName, "linked");
823var secondLink = Path.Combine(sourceDir.FullName, "loop");
831using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
833builder.AddRustApp("api", sourceDir.FullName).WithCargoManifestPath("linked/Cargo.toml");
836Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile")));
921using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
923builder.AddRustApp("api", sourceDir.FullName);
927var first = await File.ReadAllTextAsync(Path.Combine(firstOutputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
928var second = await File.ReadAllTextAsync(Path.Combine(secondOutputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
939using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
941builder.AddRustApp("api", sourceDir.FullName);
942builder.AddRustApp("worker", sourceDir.FullName);
945var first = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
946var second = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "worker.Dockerfile"), TestContext.Current.CancellationToken);
969using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
971builder.AddRustApp("api", sourceDir.FullName);
974var ignore = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile.dockerignore"), TestContext.Current.CancellationToken);
988File.WriteAllText(Path.Combine(sourceDir.FullName, ".dockerignore"), "*.md\n");
990using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
992builder.AddRustApp("api", sourceDir.FullName);
995Assert.False(File.Exists(Path.Combine(outputDir.FullName, "api.Dockerfile.dockerignore")));
1010File.WriteAllText(Path.Combine(relocatedDir.FullName, "Dockerfile"), "FROM scratch\n");
1015using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1017builder.AddRustApp("api", sourceDir.FullName).WithWorkingDirectory(relocatedDir.FullName);
1026Assert.Equal(relocatedDir.FullName, dockerfile.ContextPath);
1031Assert.Equal(Path.Combine(relocatedDir.FullName, "Dockerfile"), dockerfile.DockerfilePath);
1036Assert.Equal(relocatedDir.FullName, reader.LastWorkingDirectory);
1053File.WriteAllText(Path.Combine(workspace.WorkspaceRoot.FullName, "Cargo.lock"), "version = 4\n");
1057File.WriteAllText(Path.Combine(sourceDir.FullName, "Cargo.lock"), "version = 4\n");
1060using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1062builder.AddRustApp("api", sourceDir.FullName + Path.DirectorySeparatorChar)
1066var content = await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
1128configureSource?.Invoke(sourceDir.FullName);
1130using var builder = TestDistributedApplicationBuilder.Create(DistributedApplicationOperation.Publish, outputDir.FullName, step: "publish-manifest");
1137var app = builder.AddRustApp("api", sourceDir.FullName);
1143return await File.ReadAllTextAsync(Path.Combine(outputDir.FullName, "api.Dockerfile"), TestContext.Current.CancellationToken);
Aspire.Hosting.Sdk.Tests (89)
AppHostSdkTargetsTests.cs (76)
105var aspireCliPath = await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
106await CreateFakeDnxAsync(fakeCliDirectory.FullName);
111CreatePathEnvironment(fakeCliDirectory.FullName));
129var dnxPath = await CreateFakeDnxAsync(fakeCliDirectory.FullName);
132await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
149[GetPathEnvironmentVariableName()] = CreatePathWithoutAspire(fakeCliDirectory.FullName)
168var dnxPath = await CreateFakeDnxAsync(fakeCliDirectory.FullName);
169await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
180CreatePathEnvironment(fakeCliDirectory.FullName));
208CreatePathEnvironment(emptyPathDirectory.FullName, includeCurrentPath: false));
224var nonExecutableDnxPath = Path.Combine(nonExecutableDirectory.FullName, "dnx");
232var executableDnxPath = await CreateFakeDnxAsync(executableDirectory.FullName);
234var path = $"{nonExecutableDirectory.FullName}{Path.PathSeparator}{CreatePathWithoutAspire(executableDirectory.FullName)}";
253var aspireCliPath = await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
272await CreateFakeDnxThatFailsVersionAsync(fakeCliDirectory.FullName);
279[GetPathEnvironmentVariableName()] = CreatePathWithoutAspire(fakeCliDirectory.FullName)
293var aspireCliPath = await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
308var aspireCliPath = await CreateFakeAspireCommandShimAsync(fakeCliDirectory.FullName, extension);
333var aspireCliPath = await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
340[GetPathEnvironmentVariableName()] = CreatePathWithoutDnx(emptyPathDirectory.FullName)
374var aspireCliPath = await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
379CreatePathEnvironment(fakeCliDirectory.FullName));
426await CreateFakeAspireCliAsync(fakeCliDirectory.FullName);
433[pathEnvironmentVariable] = CreatePathWithoutAspire(fakeCliDirectory.FullName)
463await CreateFakeDnxAsync(fakeCliDirectory.FullName);
470[pathEnvironmentVariable] = CreatePathWithoutAspire(fakeCliDirectory.FullName)
506CreateFakeNativeAspireCli(fakeCliDirectory.FullName);
511[GetPathEnvironmentVariableName()] = CreatePathWithoutDnx(fakeCliDirectory.FullName)
546var aspireCliPath = await CreateFakeAspireCommandShimAsync(fakeCliDirectory.FullName);
582var cliPath = Path.Combine(fakeCliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.cmd" : "aspire");
583await CreateFakeAspireCliWithVersionAsync(fakeCliDirectory.FullName, cliVersion);
598await CreateFakeAspireCliWithVersionAsync(fakeCliDirectory.FullName, "13.4.5");
599var dnxPath = await CreateFakeDnxAsync(fakeCliDirectory.FullName);
602[GetPathEnvironmentVariableName()] = CreatePathWithoutAspire(fakeCliDirectory.FullName)
631await CreateFakeAspireCliWithVersionAsync(staleCliDirectory.FullName, AspireCliVersion);
632var staleBundle = CreateFakeCliBundle(staleCliDirectory.FullName);
637await CreateFakeDnxAsync(dnxDirectory.FullName);
652[GetPathEnvironmentVariableName()] = CreatePathWithoutAspire(staleCliDirectory.FullName, dnxDirectory.FullName)
679var aspireCliPath = await CreateFakeAspireCliThatSetsUpBundleAsync(fakeCliDirectory.FullName);
689var selectedBundle = GetFakeCliBundlePaths(fakeCliDirectory.FullName);
695AssertCliBundleExists(fakeCliDirectory.FullName, JsonSerializer.Serialize(properties));
703var selectedCliPath = await CreateFakeAspireCliThatSetsUpBundleAsync(selectedCliDirectory.FullName);
705await CreateFakeAspireCliWithVersionAsync(staleCliDirectory.FullName, AspireCliVersion);
706var staleBundle = CreateFakeCliBundle(staleCliDirectory.FullName);
712[GetPathEnvironmentVariableName()] = CreatePathWithoutAspire(selectedCliDirectory.FullName, staleCliDirectory.FullName)
716var selectedBundle = GetFakeCliBundlePaths(selectedCliDirectory.FullName);
724AssertCliBundleExists(selectedCliDirectory.FullName, JsonSerializer.Serialize(properties));
734var aspireCliPath = CreateFakeNativeAspireCli(fakeCliDirectory.FullName);
745var selectedBundle = GetFakeCliBundlePaths(fakeCliDirectory.FullName);
750AssertCliBundleExists(fakeCliDirectory.FullName, JsonSerializer.Serialize(properties));
760await CreateFakeAspireCliThatHangsOnSetupAsync(fakeCliDirectory.FullName);
761await CreateFakeDnxAsync(fakeCliDirectory.FullName);
766[GetPathEnvironmentVariableName()] = CreatePathWithoutAspire(fakeCliDirectory.FullName)
789CopyFakeCommandHost(fakeCommandDirectory.FullName);
790var commandShimPath = Path.Combine(fakeCommandDirectory.FullName, "aspire.cmd");
926await CreateFakeDnxAsync(fakeCliDirectory.FullName);
932[GetPathEnvironmentVariableName()] = CreatePathWithoutAspire(fakeCliDirectory.FullName)
951await CreateFakeAspireCliThatFailsVersionAsync(fakeCliDirectory.FullName);
952var dnxPath = await CreateFakeDnxAsync(fakeCliDirectory.FullName);
957CreatePathEnvironment(fakeCliDirectory.FullName));
977var cliPath = Path.Combine(fakeCliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.cmd" : "aspire");
978await CreateFakeAspireCliWithVersionAsync(fakeCliDirectory.FullName, cliVersion);
993var cliPath = Path.Combine(fakeCliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.cmd" : "aspire");
994await CreateFakeAspireCliWithVersionAndLargeStdErrAsync(fakeCliDirectory.FullName, "13.5.0");
1009var cliPath = Path.Combine(fakeCliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.cmd" : "aspire");
1010await CreateFakeAspireCliThatHangsOnVersionAsync(fakeCliDirectory.FullName);
1025var cliPath = Path.Combine(fakeCliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.cmd" : "aspire");
1026await CreateFakeAspireCliWithVersionAsync(fakeCliDirectory.FullName, "aspire version 13.5.0");
1041var cliPath = Path.Combine(fakeCliDirectory.FullName, OperatingSystem.IsWindows() ? "aspire.cmd" : "aspire");
1042await CreateFakeAspireCliThatFailsVersionAsync(fakeCliDirectory.FullName);
1061CreatePathEnvironment(emptyPathDirectory.FullName, includeCurrentPath: false));
1334await File.WriteAllTextAsync(Path.Combine(fakeSdkDirectory.FullName, "dotnet.dll"), "");
1920directory = Directory.GetParent(directory)?.FullName;
Aspire.Hosting.Seq.Tests (1)
Aspire.Hosting.SqlServer.Tests (1)
Aspire.Hosting.Tasks (1)
Aspire.Hosting.Testing.Tests (5)
Aspire.Hosting.Tests (179)
Dcp\ProcessUtilTests.cs (5)
89var appPath = DotnetFileAppProcess.WriteApp(workspace.WorkspaceRoot.FullName, "argument-list.cs", """
111var appPath = DotnetFileAppProcess.WriteApp(workspace.WorkspaceRoot.FullName, "argument-list-failure.cs", """
136var appPath = DotnetFileAppProcess.WriteApp(workspace.WorkspaceRoot.FullName, "path-executable.cs", """
206var appPath = DotnetFileAppProcess.WriteApp(workspace.WorkspaceRoot.FullName, "single-line.cs", """
221var appPath = DotnetFileAppProcess.WriteApp(workspace.WorkspaceRoot.FullName, "failing.cs", $$"""
DistributedApplicationBuilderTests.cs (17)
411var appHostPath = Path.Combine(projectDirectory.FullName, "apphost.ts");
415ProjectDirectory = projectDirectory.FullName,
422ProjectDirectory = projectDirectory.FullName,
424AppHostFilePath = Path.Combine(projectDirectory.FullName, "AppHost.ts"),
455var legacyAppHostPath = Path.GetFullPath(Path.Join(projectDirectory.FullName, projectName));
473ProjectDirectory = projectDirectory.FullName,
475AppHostFilePath = Path.Combine(projectDirectory.FullName, "apphost.ts"),
521ProjectDirectory = projectDirectory.FullName,
523AppHostFilePath = Path.Combine(projectDirectory.FullName, "apphost.ts"),
546ProjectDirectory = projectDirectory.FullName,
548AppHostFilePath = Path.Combine(projectDirectory.FullName, "apphost.ts"),
605ProjectDirectory = projectDirectory.FullName,
607AppHostFilePath = Path.Combine(projectDirectory.FullName, "apphost.ts"),
669ProjectDirectory = projectDirectory.FullName,
671AppHostFilePath = Path.Combine(projectDirectory.FullName, "apphost.ts"),
731ProjectDirectory = projectDirectory.FullName,
733AppHostFilePath = Path.Combine(projectDirectory.FullName, "apphost.ts"),
MSBuildTests.cs (83)
26CreateLibraryProject(workspace.WorkspaceRoot.FullName, "Library");
28var appHostDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost");
83CreateAppProject(workspace.WorkspaceRoot.FullName, "App");
85var appHostDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost");
136var temp = workspace?.WorkspaceRoot.FullName;
328var projectPath = Path.Combine(workspace.WorkspaceRoot.FullName, "Plain.AppHost.csproj");
338workspace.WorkspaceRoot.FullName,
358var bundle = CreateFakeCliBundle(workspace.WorkspaceRoot.FullName);
359var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
380var layoutRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "layout");
383var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
404var layoutRoot = Path.Combine(workspace.WorkspaceRoot.FullName, "layout");
407var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
429workspace.WorkspaceRoot.FullName,
450var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "bin"));
451var fakeCliPath = CreateFakeAspireCli(fakeCliDirectory.FullName);
452var bundle = CreateFakeCliBundle(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-home"));
453var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
474var aspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, "empty-aspire-home");
475var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "fake-cli"));
476_ = CreateFakeAspireCliThatSetsUpBundle(fakeCliDirectory.FullName);
477var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot, additionalProperties: "");
484["PATH"] = GetPathWithoutAspire(fakeCliDirectory.FullName)
488var bundleRoot = Path.Combine(workspace.WorkspaceRoot.FullName, BundleDiscovery.BundleDirectoryName);
503var aspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, "empty-aspire-home");
504var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "fake-cli"));
505var fakeCliPath = CreateFakeAspireCliThatSetsUpBundle(fakeCliDirectory.FullName);
507workspace.WorkspaceRoot.FullName,
523Assert.False(Directory.Exists(Path.Combine(workspace.WorkspaceRoot.FullName, BundleDiscovery.BundleDirectoryName)));
532var aspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, "empty-aspire-home");
533var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "fake-cli"));
534var fakeCliPath = CreateFakeAspireCliThatFailsSetup(fakeCliDirectory.FullName);
536workspace.WorkspaceRoot.FullName,
562var aspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, "empty-aspire-home");
563var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "fake-cli"));
564var fakeCliPath = CreateFakeAspireCliThatTimesOutSetup(fakeCliDirectory.FullName);
566workspace.WorkspaceRoot.FullName,
592var aspireHome = Path.Combine(workspace.WorkspaceRoot.FullName, "empty-aspire-home");
594var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, literalSegment));
595var fakeCliPath = CreateFakeAspireCliThatSetsUpBundle(fakeCliDirectory.FullName);
597workspace.WorkspaceRoot.FullName,
612var bundleRoot = Path.Combine(workspace.WorkspaceRoot.FullName, BundleDiscovery.BundleDirectoryName);
626var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, literalSegment));
627var fakeCliPath = CreateFakeAspireCliThatFailsSetup(fakeCliDirectory.FullName);
629workspace.WorkspaceRoot.FullName,
639["ASPIRE_HOME"] = Path.Combine(workspace.WorkspaceRoot.FullName, "empty-aspire-home"),
654var bundle = CreateFakeCliBundle(Path.Combine(workspace.WorkspaceRoot.FullName, "aspire-home"));
655var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot, additionalProperties: "");
677var toolsDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, ".dotnet", "tools"));
678var shimPath = CreateFakeAspireCli(toolsDirectory.FullName);
680toolsDirectory.FullName,
689_ = CreateFakeAspireCli(nativeCliDirectory.FullName);
690File.WriteAllText(Path.Combine(nativeCliDirectory.FullName, ".aspire-install.json"), """{"source":"dotnet-tool"}""");
691var bundle = CreateFakeCliBundleAtLayoutRoot(nativeCliDirectory.FullName);
692var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
713var bundle = CreateFakeCliBundle(workspace.WorkspaceRoot.FullName);
714var repoDcpDir = EnsureTrailingSeparator(Path.Combine(workspace.WorkspaceRoot.FullName, "repo-dcp"));
715var repoDashboardDir = EnsureTrailingSeparator(Path.Combine(workspace.WorkspaceRoot.FullName, "repo-dashboard"));
719var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
742var missingBundlePath = Path.Combine(workspace.WorkspaceRoot.FullName, "missing-bundle");
743var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
777workspace.WorkspaceRoot.FullName,
780var fakeCliDirectory = Directory.CreateDirectory(Path.Combine(workspace.WorkspaceRoot.FullName, "fake-cli"));
781var dnxPath = Path.Combine(fakeCliDirectory.FullName, OperatingSystem.IsWindows() ? "dnx.exe" : "dnx");
798["ASPIRE_HOME"] = Path.Combine(workspace.WorkspaceRoot.FullName, "empty-aspire-home"),
799["PATH"] = GetPathWithoutAspire(fakeCliDirectory.FullName)
817var missingCliPath = Path.Combine(workspace.WorkspaceRoot.FullName, "missing-aspire");
818var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
839var appHostDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost");
872CreateAppProject(workspace.WorkspaceRoot.FullName, "App");
873var bundle = CreateFakeCliBundle(workspace.WorkspaceRoot.FullName);
874var appHostDirectory = CreateSdkBundleAppHostProject(workspace.WorkspaceRoot.FullName, repoRoot,
1146CreateLibraryProject(workspace.WorkspaceRoot.FullName, "Library");
1148var appHostDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost");
1205CreateLibraryProject(workspace.WorkspaceRoot.FullName, "Library");
1207var appHostDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost");
1260var projectDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "MyHostingExtension");
1309var projectDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "MyHostingExtension");
1358var packageOutputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "packages");
1385var packageOutputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "packages");
1431var packageOutputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "packages");
1441var projectDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "MyHostingExtension");
1574var appHostDirectory = Path.Combine(workspace.WorkspaceRoot.FullName, "AppHost");
Publishing\DeploymentStateManagerTests.cs (8)
409_aspireHome.FullName,
434Path.Combine(_aspireHome.FullName, "deployments", sha, "development.json"),
997_aspireHome.FullName,
1020_aspireHome.FullName,
1197var legacyDirectory = Path.Combine(_aspireHome.FullName, "deployments", legacySha);
1204var canonicalPath = Path.Combine(_aspireHome.FullName, "deployments", Guid.NewGuid().ToString("N"), "production.json");
1205var legacyDirectory = Path.Combine(_aspireHome.FullName, "deployments", Guid.NewGuid().ToString("N"));
1223[KnownConfigNames.AspireHome] = _aspireHome.FullName
Publishing\ResourceContainerImageManagerTests.cs (11)
274var tempOutputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "NewFolder"); // tests that the folder is created if it doesn't exist
655.WithAnnotation(new TestProjectMetadata(Path.Combine(workspace.WorkspaceRoot.FullName, "missing.csproj")))
660ctx.OutputPath = workspace.WorkspaceRoot.FullName;
693.WithAnnotation(new TestProjectMetadata(Path.Combine(workspace.WorkspaceRoot.FullName, "missing.csproj")))
698ctx.OutputPath = workspace.WorkspaceRoot.FullName;
955var tempSecretFile = System.IO.Path.Combine(workspace.WorkspaceRoot.FullName, ".npmrc");
984Assert.Equal(new FileInfo(tempSecretFile).FullName, fakeContainerRuntime.CapturedBuildSecrets["FILE_SECRET"].Value);
1340ctx.OutputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "archives");
1464ctx.OutputPath = Path.Combine(workspace.WorkspaceRoot.FullName, "archives");
1531var dockerfilePath = Path.Combine(workspace.WorkspaceRoot.FullName, "Dockerfile");
1537var container = builder.AddDockerfile("broken-container", workspace.WorkspaceRoot.FullName, dockerfilePath);
Aspire.Hosting.TestUtilities (18)
Aspire.Hosting.Valkey.Tests (1)
Aspire.Managed.Tests (24)
TerminalHostSignalTests.cs (11)
26var producerPath = Path.Combine(socketDirectory.FullName, "p.sock");
27var consumerPath = Path.Combine(socketDirectory.FullName, "h.sock");
28var controlPath = Path.Combine(socketDirectory.FullName, "c.sock");
81Directory.Delete(socketDirectory.FullName, recursive: true);
99var parentProducerPath = Path.Combine(socketDirectory.FullName, "pp.sock");
100var parentConsumerPath = Path.Combine(socketDirectory.FullName, "ph.sock");
101var parentControlPath = Path.Combine(socketDirectory.FullName, "pc.sock");
103var producerPath = Path.Combine(socketDirectory.FullName, "p.sock");
104var consumerPath = Path.Combine(socketDirectory.FullName, "h.sock");
105var controlPath = Path.Combine(socketDirectory.FullName, "c.sock");
191Directory.Delete(socketDirectory.FullName, recursive: true);
Aspire.Playground.Tests (3)
Aspire.Templates.Tests (5)
Aspire.TerminalHost.Tests (13)
CodeStyleConfigFileGenerator (2)
csc (1)
dotnet (35)
dotnet-aot (18)
dotnet-dev-certs (5)
dotnet-format (2)
dotnet-openapi (2)
dotnet-suggest (8)
dotnet-svcutil-lib (33)
CommandProcessorOptions.cs (10)
217await ProcessOutputFileOptionAsync(this.OutputDir.FullName, cancellationToken);
396Path.GetDirectoryName(this.OutputFile.FullName) : Path.GetDirectoryName(Path.Combine(Directory.GetCurrentDirectory(), this.OutputFile.OriginalPath()));
657if (this.Project != null && PathHelper.GetRelativePath(this.OutputDir.FullName, new DirectoryInfo(this.Project.DirectoryPath), out var relPath))
704var projectFullPath = Path.Combine(this.BootstrapPath.FullName, "TFMResolver", "TFMResolver.csproj");
742var inputFiles = Metadata.MetadataFileNameManager.ResolveFiles(metadataUri.LocalPath).Select(f => f.FullName);
853string projFolder = Path.Combine(this.BootstrapPath.FullName, nameof(SvcutilBootstrapper));
858assembly = Assembly.LoadFrom(assemblyFile.FullName);
1029if (!Directory.Exists(this.BootstrapPath.FullName))
1031Directory.CreateDirectory(this.BootstrapPath.FullName);
1035await RuntimeEnvironmentHelper.TryCopyingConfigFiles(workingDirectory, this.BootstrapPath.FullName, logger, cancellationToken).ConfigureAwait(false);
dotnet-svcutil-lib.Tests (3)
dotnet-svcutil.xmlserializer (3)
GenerateDocumentationAndConfigFiles (10)
Program.cs (10)
433var fileWithPath = Path.Combine(directory.FullName, args.PropsFileName);
442fileWithPath = Path.Combine(directory.FullName, args.PropsFileToDisableNetAnalyzersInNuGetPackageName);
544var fileWithPath = Path.Combine(directory.FullName, args.AnalyzerDocumentationFileName);
640var fileWithPath = Path.Combine(directory.FullName, args.AnalyzerSarifFileName);
734Validate(Path.Combine(directory.FullName, args.AnalyzerSarifFileName), stringWriter.ToString(), fileNamesWithValidationFailures);
776var fileWithPath = Path.Combine(directory.FullName, "RulesMissingDocumentation.md");
1112var rulesetFilePath = Path.Combine(directory.FullName, rulesetFileName);
1177var editorconfigFilePath = Path.Combine(directory.FullName, ".editorconfig");
1400var configFilePath = Path.Combine(directory.FullName, fileName.ToLowerInvariant());
1612var fileWithPath = Path.Combine(directory.FullName, targetsFileName);
illink (4)
Infrastructure.Tests (50)
TestTriggerMap\SelectTestsCliTests.cs (20)
91var slnxPath = Path.Combine(dir.FullName, "custom", "MyApp.slnx");
94File.WriteAllText(Path.Combine(dir.FullName, "map.yml"), Map);
96WithGitHubEnv(dir.FullName, _ =>
98var propsPath = Path.Combine(dir.FullName, "BeforeBuildProps.props");
99var changed = WriteChangedFiles(dir.FullName, "trigger.txt");
102dir.FullName, propsPath, changedFilesPath: changed,
111Directory.Delete(dir.FullName, recursive: true);
1221File.WriteAllText(Path.Combine(dir.FullName, "Aspire.slnx"), slnx);
1222File.WriteAllText(Path.Combine(dir.FullName, "map.yml"), map);
1224WithGitHubEnv(dir.FullName, output =>
1225body(dir.FullName, Path.Combine(dir.FullName, "BeforeBuildProps.props"), output));
1229Directory.Delete(dir.FullName, recursive: true);
1240RunGit(dir.FullName, "init", "-q", "-b", "main");
1241RunGit(dir.FullName, "config", "user.email", "test@example.com");
1242RunGit(dir.FullName, "config", "user.name", "Test");
1243RunGit(dir.FullName, "config", "commit.gpgsign", "false");
1245WithGitHubEnv(dir.FullName, output => body(dir.FullName, output));
1249Directory.Delete(dir.FullName, recursive: true);
WorkflowScripts\ExtensionReleaseWorkflowTests.cs (13)
283var fakeGh = await CreateFakeGhAsync(tempDirectory.FullName);
303Directory.Delete(tempDirectory.FullName, recursive: true);
314var fakeGh = await CreateFakeGhAsync(tempDirectory.FullName);
334Directory.Delete(tempDirectory.FullName, recursive: true);
345var fakeGh = await CreateFakeGhAsync(tempDirectory.FullName);
367Directory.Delete(tempDirectory.FullName, recursive: true);
549var bodyPath = Path.Combine(tempDirectory.FullName, "pr_body.md");
559Directory.Delete(tempDirectory.FullName, recursive: true);
568var bodyPath = Path.Combine(tempDirectory.FullName, "pr_body.md");
578Directory.Delete(tempDirectory.FullName, recursive: true);
589var commitsPath = Path.Combine(tempDirectory.FullName, "commits.txt");
590var outputPath = Path.Combine(tempDirectory.FullName, "release_notes.md");
637Directory.Delete(tempDirectory.FullName, recursive: true);
Microsoft.Agents.AI.ProjectTemplates.Tests (2)
Microsoft.AspNetCore.DataProtection (13)
Microsoft.AspNetCore.DeveloperCertificates.XPlat (5)
Microsoft.AspNetCore.InternalTesting (3)
Microsoft.AspNetCore.Mvc.Testing (2)
Microsoft.AspNetCore.Server.IntegrationTesting (6)
Microsoft.AspNetCore.Server.Kestrel.Core (5)
Microsoft.AspNetCore.TestHost (2)
Microsoft.Build (6)
Microsoft.Build.Framework (12)
Microsoft.Build.NuGetSdkResolver (11)
Microsoft.Build.Tasks.CodeAnalysis (3)
Microsoft.Build.Tasks.Core (74)
DownloadFile.cs (7)
185var destinationFile = new FileInfo(Path.Combine(destinationDirectory.FullName, filename));
190Log.LogMessageFromResources(MessageImportance.Normal, "DownloadFile.DidNotDownloadBecauseOfFileMatch", SourceUrl, destinationFile.FullName, nameof(SkipUnchangedFiles), "true");
192DownloadedFile = new TaskItem(destinationFile.FullName);
198Log.LogErrorFromResources("DownloadFile.Downloading", SourceUrl, destinationFile.FullName, response.Content.Headers.ContentLength);
206using (var target = new FileStream(destinationFile.FullName, FileMode.Create, FileAccess.Write, FileShare.None))
208Log.LogMessageFromResources(MessageImportance.High, "DownloadFile.Downloading", SourceUrl, destinationFile.FullName, response.Content.Headers.ContentLength);
220DownloadedFile = new TaskItem(destinationFile.FullName);
TarDirectory.cs (16)
144Log.LogErrorWithCodeFromResources("TarDirectory.ErrorDirectoryDoesNotExist", _sourceDirectory.FullName);
157Log.LogErrorWithCodeFromResources("TarDirectory.ErrorFailIfNotIncremental", _sourceDirectory.FullName, _destinationFile.FullName);
166Log.LogErrorWithCodeFromResources("TarDirectory.ErrorFileExists", _destinationFile.FullName);
173File.Delete(_destinationFile.FullName);
177string lockedFileMessage = LockCheck.GetLockedFileMessage(_destinationFile.FullName);
178Log.LogErrorWithCodeFromResources("TarDirectory.ErrorFailed", _sourceDirectory.FullName, _destinationFile.FullName, e.Message, lockedFileMessage);
207Log.LogMessageFromResources(MessageImportance.High, "TarDirectory.Comment", _sourceDirectory.FullName, _destinationFile.FullName);
214using (FileStream destinationStream = new FileStream(_destinationFile.FullName, FileMode.Create, FileAccess.Write, FileShare.None))
251await writer.WriteEntryAsync(info.FullName, entryName, cancellationToken)
274Log.LogErrorWithCodeFromResources("TarDirectory.ErrorFailed", _sourceDirectory.FullName, _destinationFile.FullName, e.Message, string.Empty);
317string basePath = FileUtilities.EnsureTrailingSlash(_sourceDirectory.FullName);
345string relativePath = info.FullName.Substring(basePath.Length);
Untar.cs (16)
136if (!FileSystems.Default.FileExists(sourceFile.FullName))
138Log.LogErrorWithCodeFromResources("Untar.ErrorFileDoesNotExist", sourceFile.FullName);
191Log.LogErrorWithCodeFromResources("Untar.ErrorCouldNotOpenFile", sourceFile.FullName, e.Message);
201Log.LogErrorWithCodeFromResources("Untar.ErrorCouldNotOpenFile", sourceFile.FullName, e.Message);
271AbsolutePath fullDestinationDirectoryPath = TaskEnvironment.GetAbsolutePath(FileUtilities.EnsureTrailingSlash(destinationDirectory.FullName)).GetCanonicalForm();
283AbsolutePath fullDestinationPath = TaskEnvironment.GetAbsolutePath(Path.Combine(destinationDirectory.FullName, entryName)).GetCanonicalForm();
297if (tarEntry.EntryType is TarEntryType.Directory || Path.GetFileName(destinationPath.FullName).Length == 0)
301Directory.CreateDirectory(destinationPath.FullName);
308Log.LogErrorWithCodeFromResources("Untar.ErrorCouldNotCreateDestinationDirectory", destinationPath.FullName, e.Message);
323Log.LogMessageFromResources(MessageImportance.Low, "Untar.DidNotUntarBecauseOfFileMatch", entryName, destinationPath.FullName, nameof(SkipUnchangedFiles), "true");
328Log.LogErrorWithCodeFromResources("Untar.ErrorFailIfNotIncremental", entryName, destinationPath.FullName);
350string lockedFileMessage = LockCheck.GetLockedFileMessage(destinationPath.FullName);
351Log.LogErrorWithCodeFromResources("Untar.ErrorCouldNotMakeFileWriteable", entryName, destinationPath.FullName, e.Message, lockedFileMessage);
358Log.LogMessageFromResources(MessageImportance.Normal, "Untar.FileComment", entryName, destinationPath.FullName);
364await tarEntry.ExtractToFileAsync(destinationPath.FullName, overwrite: true, _cancellationTokenSource.Token)
373Log.LogErrorWithCodeFromResources("Untar.ErrorCouldNotExtractFile", entryName, destinationPath.FullName, e.Message);
Unzip.cs (15)
179AbsolutePath fullDestinationDirectoryPath = TaskEnvironment.GetAbsolutePath(FileUtilities.EnsureTrailingSlash(destinationDirectory.FullName)).GetCanonicalForm();
189AbsolutePath fullDestinationPath = TaskEnvironment.GetAbsolutePath(Path.Combine(destinationDirectory.FullName, zipArchiveEntry.FullName)).GetCanonicalForm();
196if (Path.GetFileName(destinationPath.FullName).Length == 0)
199Directory.CreateDirectory(destinationPath.FullName);
203if (!destinationPath.FullName.StartsWith(destinationDirectory.FullName, StringComparison.OrdinalIgnoreCase))
207Log.LogErrorFromResources("Unzip.ErrorExtractingResultsInFilesOutsideDestination", destinationPath.FullName, destinationDirectory.FullName);
213Log.LogMessageFromResources(MessageImportance.Low, "Unzip.DidNotUnzipBecauseOfFileMatch", zipArchiveEntry.FullName, destinationPath.FullName, nameof(SkipUnchangedFiles), "true");
218Log.LogErrorFromResources("Unzip.FileComment", zipArchiveEntry.FullName, destinationPath.FullName);
240string lockedFileMessage = LockCheck.GetLockedFileMessage(destinationPath.FullName);
241Log.LogErrorWithCodeFromResources("Unzip.ErrorCouldNotMakeFileWriteable", zipArchiveEntry.FullName, destinationPath.FullName, e.Message, lockedFileMessage);
248Log.LogMessageFromResources(MessageImportance.Normal, "Unzip.FileComment", zipArchiveEntry.FullName, destinationPath.FullName);
273using (FileStream destination = new FileStream(destinationPath.FullName, fileStreamOptions))
291Log.LogErrorWithCodeFromResources("Unzip.ErrorCouldNotExtractFile", zipArchiveEntry.FullName, destinationPath.FullName, e.Message);
ZipDirectory.cs (18)
71Log.LogErrorWithCodeFromResources("ZipDirectory.ErrorDirectoryDoesNotExist", sourceDirectory.FullName);
86Log.LogErrorWithCodeFromResources("ZipDirectory.ErrorFileExists", destinationFile.FullName);
93File.Delete(destinationFile.FullName);
97string lockedFileMessage = LockCheck.GetLockedFileMessage(destinationFile.FullName);
98Log.LogErrorWithCodeFromResources("ZipDirectory.ErrorFailed", sourceDirectory.FullName, destinationFile.FullName, e.Message, lockedFileMessage);
108Log.LogErrorFromResources("ZipDirectory.Comment", sourceDirectory.FullName, destinationFile.FullName);
112Log.LogMessageFromResources(MessageImportance.High, "ZipDirectory.Comment", sourceDirectory.FullName, destinationFile.FullName);
115ZipFile.CreateFromDirectory(sourceDirectory.FullName, destinationFile.FullName);
119ZipFile.CreateFromDirectory(sourceDirectory.FullName, destinationFile.FullName, compressionLevel.Value, includeBaseDirectory: false);
135ZipFile.CreateFromDirectory(sourceDirectory.FullName, destinationFile.FullName);
141Log.LogErrorWithCodeFromResources("ZipDirectory.ErrorFailed", sourceDirectory.FullName, destinationFile.FullName, e.Message, string.Empty);
Microsoft.Build.Utilities.Core (15)
Microsoft.CodeAnalysis.BuildClient.Package (1)
Microsoft.CodeAnalysis.CSharp.Workspaces (1)
Microsoft.CodeAnalysis.Features (1)
Microsoft.CodeAnalysis.Razor.Compiler (1)
Microsoft.CodeAnalysis.Scripting (1)
Microsoft.CodeAnalysis.Workspaces (1)
Microsoft.CodeAnalysis.Workspaces.MSBuild.Contracts (1)
Microsoft.Data.Analysis.Tests (1)
Microsoft.DotNet.Build.Tasks.Feed (3)
Microsoft.DotNet.Build.Tasks.Packaging (1)
Microsoft.DotNet.Cli.Definitions (1)
Microsoft.DotNet.Cli.Utils (3)
Microsoft.DotNet.Configurer (1)
Microsoft.DotNet.HotReload.Watch (1)
Microsoft.DotNet.InternalAbstractions (3)
Microsoft.DotNet.NativeWrapper (1)
Microsoft.DotNet.ProjectTools (1)
Microsoft.Extensions.AI.Evaluation.Console (4)
Microsoft.Extensions.AI.Evaluation.Reporting (4)
Microsoft.Extensions.AI.Templates.Tests (2)
Microsoft.Extensions.DataIngestion (6)
Microsoft.Extensions.DataIngestion.Abstractions (2)
Microsoft.Extensions.DataIngestion.Markdig (1)
Microsoft.Extensions.DataIngestion.MarkItDown (6)
Microsoft.Extensions.DataIngestion.Tests (11)
Microsoft.Extensions.FileProviders.Physical (3)
Microsoft.Extensions.FileSystemGlobbing (6)
Microsoft.Extensions.Http.Resilience.Tests (2)
Microsoft.Maui.Resizetizer (10)
Microsoft.ML.AutoML (4)
Microsoft.ML.AutoML.Tests (1)
Microsoft.ML.Core.Tests (5)
Microsoft.ML.IntegrationTests (1)
Microsoft.ML.PerformanceTests (3)
Microsoft.ML.Samples (4)
Microsoft.ML.Samples.GPU (4)
Microsoft.ML.SamplesUtils (1)
Microsoft.ML.SearchSpace.Tests (2)
Microsoft.ML.TestFramework (7)
Microsoft.ML.TestFrameworkCommon (1)
Microsoft.NET.Build.Containers (5)
Microsoft.NET.HostModel (3)
Microsoft.NET.Sdk.Publish.Tasks (2)
Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver (1)
Microsoft.TemplateEngine.Cli (2)
Microsoft.TemplateEngine.Edge (6)
Microsoft.TemplateEngine.Utils (1)
Microsoft.TestPlatform.Extensions.BlameDataCollector (2)
Microsoft.TestPlatform.TestHostRuntimeProvider (2)
Microsoft.VisualBasic.Core (6)
Microsoft.VisualStudio.TestPlatform.Common (1)
MSBuild (2)
NuGet.Build.Tasks (2)
NuGet.Build.Tasks.Console (1)
NuGet.CommandLine.XPlat (1)
NuGet.Commands (4)
NuGet.Configuration (6)
NuGet.PackageManagement (3)
NuGet.Packaging (19)
NuGet.Protocol (18)
PresentationCore (1)
PresentationUI (1)
RepoTasks (5)
ResultsOfTGenerator (2)
sdk-tasks (2)
System.CodeDom (1)
System.Configuration.ConfigurationManager (2)
System.DirectoryServices (1)
System.Formats.Tar (5)
System.IO.Compression.ZipFile (4)
System.IO.FileSystem.AccessControl (7)
System.IO.Packaging (1)
System.IO.Ports (4)
System.Private.CoreLib (6)
System.Windows.Forms.Design (1)
vbc (1)
VBCSCompiler (1)
vstest.console (5)
vstest.console.arm64 (5)