public async Task CopyPackagesToOriginalCaseAsync_WhenPackageMustComeFromProvider_ConvertsPackagesAsync() { // Arrange using (var workingDirectory = TestDirectory.Create()) { var packagesDirectory = Path.Combine(workingDirectory, "packages"); var sourceDirectory = Path.Combine(workingDirectory, "source"); // Add the package to the source. var identity = new PackageIdentity("PackageA", NuGetVersion.Parse("1.0.0-Beta")); var packagePath = await SimpleTestPackageUtility.CreateFullPackageAsync( sourceDirectory, identity.Id, identity.Version.ToString()); var logger = new TestLogger(); var graph = GetRestoreTargetGraph(sourceDirectory, identity, packagePath, logger); var request = GetRestoreRequest(packagesDirectory, logger); var resolver = new VersionFolderPathResolver(packagesDirectory, isLowercase: false); var target = new OriginalCaseGlobalPackageFolder(request); // Act await target.CopyPackagesToOriginalCaseAsync( new[] { graph }, CancellationToken.None); // Assert Assert.True(File.Exists(resolver.GetPackageFilePath(identity.Id, identity.Version))); Assert.Equal(1, logger.Messages.Count(x => x.Contains(identity.ToString()))); } }
public void ConvertLockFileToOriginalCase_ConvertsPackagesPathsInLockFile() { // Arrange var logger = new TestLogger(); var request = GetRestoreRequest("fake", logger); var packageLibrary = new LockFileLibrary { Name = "PackageA", Version = NuGetVersion.Parse("1.0.0-Beta"), Path = "packagea/1.0.0-beta", Type = LibraryType.Package }; var projectLibrary = new LockFileLibrary { Name = "Project", Version = NuGetVersion.Parse("1.0.0-Beta"), Path = "project", Type = LibraryType.Project }; var lockFile = new LockFile { Libraries = { packageLibrary, projectLibrary } }; var target = new OriginalCaseGlobalPackageFolder(request); // Act target.ConvertLockFileToOriginalCase(lockFile); // Assert Assert.Equal("PackageA/1.0.0-Beta", packageLibrary.Path); Assert.Equal("project", projectLibrary.Path); }
public async Task CopyPackagesToOriginalCaseAsync_EmitsTelemetryWithParentIdAsync() { // Set up telemetry service var telemetryEvents = new ConcurrentQueue <TelemetryEvent>(); var telSvc = new Mock <INuGetTelemetryService>(); telSvc.Setup(x => x.EmitTelemetryEvent(It.IsAny <TelemetryEvent>())) .Callback <TelemetryEvent>(x => telemetryEvents.Enqueue(x)); TelemetryActivity.NuGetTelemetryService = telSvc.Object; var parentIdGuid = Guid.NewGuid(); // Arrange using (var workingDirectory = TestDirectory.Create()) { var packagesDirectory = Path.Combine(workingDirectory, "packages"); var sourceDirectory = Path.Combine(workingDirectory, "source"); var identity = new PackageIdentity("PackageA", NuGetVersion.Parse("1.0.0-Beta")); var packagePath = await SimpleTestPackageUtility.CreateFullPackageAsync( sourceDirectory, identity.Id, identity.Version.ToString()); var logger = new TestLogger(); var graphA = GetRestoreTargetGraph(sourceDirectory, identity, packagePath, logger); var graphB = GetRestoreTargetGraph(sourceDirectory, identity, packagePath, logger); var request = GetRestoreRequest(packagesDirectory, logger); var resolver = new VersionFolderPathResolver(packagesDirectory, isLowercase: false); var target = new OriginalCaseGlobalPackageFolder(request, parentIdGuid); // Act await target.CopyPackagesToOriginalCaseAsync( new[] { graphA, graphB }, CancellationToken.None); } // Assert var eventSingleCollection = telemetryEvents.Where(x => x.Name == "PackageExtractionInformation"); Assert.Single(eventSingleCollection); var evt = eventSingleCollection.Single(); Assert.NotNull(evt["ParentId"]); Assert.Equal(evt["ParentId"], parentIdGuid.ToString()); }
public async Task CopyPackagesToOriginalCaseAsync_DoesNothingIfPackageIsAlreadyInstalledAsync() { // Arrange using (var workingDirectory = TestDirectory.Create()) { var packagesDirectory = Path.Combine(workingDirectory, "packages"); var sourceDirectory = Path.Combine(workingDirectory, "source"); var identity = new PackageIdentity("PackageA", NuGetVersion.Parse("1.0.0-Beta")); var packagePath = await SimpleTestPackageUtility.CreateFullPackageAsync( sourceDirectory, identity.Id, identity.Version.ToString()); var logger = new TestLogger(); var graph = GetRestoreTargetGraph(sourceDirectory, identity, packagePath, logger); var request = GetRestoreRequest(packagesDirectory, logger); var resolver = new VersionFolderPathResolver(packagesDirectory, isLowercase: false); var hashPath = resolver.GetNupkgMetadataPath(identity.Id, identity.Version); Directory.CreateDirectory(Path.GetDirectoryName(hashPath)); // The hash file is what determines if the package is installed or not. File.WriteAllText(hashPath, string.Empty); var target = new OriginalCaseGlobalPackageFolder(request); // Act await target.CopyPackagesToOriginalCaseAsync( new[] { graph }, CancellationToken.None); // Assert Assert.True(File.Exists(resolver.GetNupkgMetadataPath(identity.Id, identity.Version))); Assert.Equal(0, logger.Messages.Count(x => x.Contains(identity.ToString()))); } }