public async Task TestDirectoryGetParent() { await using var tmpDir = _snapFilesystem.WithDisposableTempDirectory(_baseFixture.WorkingDirectory); Assert.Equal(_baseFixture.WorkingDirectory, _snapFilesystem.DirectoryGetParent(tmpDir.WorkingDirectory)); }
public async Task TestRestoreAsync_Checksums_Genesis() { var snapAppsReleases = new SnapAppsReleases(); var genesisSnapApp = _baseFixturePackaging.BuildSnapApp(); var snapAppChannel = genesisSnapApp.GetDefaultChannelOrThrow(); using var rootDirectory = new DisposableDirectory(_baseFixturePackaging.WorkingDirectory, _snapFilesystem); using var restoreDirectory = new DisposableDirectory(_baseFixturePackaging.WorkingDirectory, _snapFilesystem); using var nugetPackageSourcesDirectory = _snapFilesystem.WithDisposableTempDirectory(_baseFixturePackaging.WorkingDirectory); using var genesisReleaseBuilder = _baseFixturePackaging.WithSnapReleaseBuilder(rootDirectory, snapAppsReleases, genesisSnapApp, _releaseBuilderContext); var packagesDirectory = _snapFilesystem.PathCombine(restoreDirectory.WorkingDirectory, "packages"); _snapFilesystem.DirectoryCreate(packagesDirectory); var nugetPackageSources = genesisSnapApp.BuildNugetSources(nugetPackageSourcesDirectory.WorkingDirectory); var packageSource = nugetPackageSources.Items.Single(); genesisReleaseBuilder .AddNuspecItem(_baseFixturePackaging.BuildSnapExecutable(genesisSnapApp)) .AddSnapDll(); using var genesisPackageContext = await _baseFixturePackaging.BuildPackageAsync(genesisReleaseBuilder); var snapAppChannelReleases = snapAppsReleases.GetReleases(genesisSnapApp, snapAppChannel); var progressSourceMock = new Mock <ISnapPackageManagerProgressSource>(); progressSourceMock.Setup(x => x.RaiseChecksumProgress( It.IsAny <int>(), It.IsAny <long>(), It.IsAny <long>(), It.IsAny <long>())); var genesisPackageAbsolutePath = _snapFilesystem.PathCombine(packagesDirectory, genesisPackageContext.FullPackageSnapRelease.Filename); await _snapFilesystem.FileCopyAsync(genesisPackageContext.FullPackageAbsolutePath, genesisPackageAbsolutePath, default); var restoreSummary = await _snapPackageManager.RestoreAsync(packagesDirectory, snapAppChannelReleases, packageSource, SnapPackageManagerRestoreType.Default, progressSourceMock.Object); progressSourceMock.Verify(x => x.RaiseChecksumProgress( It.Is <int>(v => v == 0), It.Is <long>(v => v == 0), It.Is <long>(v => v == 0), It.Is <long>(v => v == 1)), Times.Once); progressSourceMock.Verify(x => x.RaiseChecksumProgress( It.Is <int>(v => v == 100), It.Is <long>(v => v == 1), It.Is <long>(v => v == 1), It.Is <long>(v => v == 1)), Times.Once); Assert.Equal(SnapPackageManagerRestoreType.Default, restoreSummary.RestoreType); Assert.Single(restoreSummary.ChecksumSummary); Assert.True(restoreSummary.ChecksumSummary[0].Ok); Assert.Equal(genesisPackageContext.FullPackageSnapRelease.Filename, restoreSummary.ChecksumSummary[0].SnapRelease.Filename); Assert.Empty(restoreSummary.DownloadSummary); Assert.Empty(restoreSummary.ReassembleSummary); Assert.True(restoreSummary.Success); using var packageArchiveReader = new PackageArchiveReader(genesisPackageAbsolutePath); Assert.Equal(genesisPackageContext.FullPackageSnapRelease.BuildPackageIdentity(), packageArchiveReader.GetIdentity()); Assert.Equal(genesisPackageContext.FullPackageSnapRelease.FullSha256Checksum, _snapCryptoProvider.Sha256(genesisPackageContext.FullPackageSnapRelease, packageArchiveReader, _snapPack)); }
public async Task TestGetSnapsReleasesAsync() { using var _ = LogHelper.Capture(_testOutputHelper, LogProvider.SetCurrentLogProvider); var snapAppsReleases = new SnapAppsReleases(); var genesisSnapApp = _baseFixturePackaging.BuildSnapApp(); var update1SnapApp = _baseFixturePackaging.Bump(genesisSnapApp); var update2SnapApp = _baseFixturePackaging.Bump(update1SnapApp); await using var rootDirectory = new DisposableDirectory(_baseFixturePackaging.WorkingDirectory, _snapFilesystem); await using var nugetPackageSourcesDirectory = _snapFilesystem.WithDisposableTempDirectory(_baseFixturePackaging.WorkingDirectory); using var genesisReleaseBuilder = _baseFixturePackaging.WithSnapReleaseBuilder(rootDirectory, snapAppsReleases, genesisSnapApp, _releaseBuilderContext); using var update1ReleaseBuilder = _baseFixturePackaging.WithSnapReleaseBuilder(rootDirectory, snapAppsReleases, update1SnapApp, _releaseBuilderContext); using var update2ReleaseBuilder = _baseFixturePackaging.WithSnapReleaseBuilder(rootDirectory, snapAppsReleases, update2SnapApp, _releaseBuilderContext); var nugetPackageSources = genesisSnapApp.BuildNugetSources(nugetPackageSourcesDirectory.WorkingDirectory); genesisReleaseBuilder .AddNuspecItem(_baseFixturePackaging.BuildSnapExecutable(genesisSnapApp)) .AddSnapDll(); update1ReleaseBuilder .AddNuspecItem(_baseFixturePackaging.BuildSnapExecutable(update1SnapApp)) .AddSnapDll(); update2ReleaseBuilder .AddNuspecItem(_baseFixturePackaging.BuildSnapExecutable(update2SnapApp)) .AddSnapDll(); using (await _baseFixturePackaging.BuildPackageAsync(genesisReleaseBuilder)) using (await _baseFixturePackaging.BuildPackageAsync(update1ReleaseBuilder)) { using var update2PackageContext = await _baseFixturePackaging.BuildPackageAsync(update2ReleaseBuilder); await using var releasesNupkgMemoryStream = _snapPack.BuildReleasesPackage(genesisSnapApp, snapAppsReleases); var expectedVersion = SemanticVersion.Parse("1.0.0"); var expectedPackageIdentity = new PackageIdentity( update2PackageContext.FullPackageSnapRelease.BuildNugetReleasesUpstreamId(), expectedVersion.ToNuGetVersion()); using (var releasesPackageArchiveReader = new PackageArchiveReader(releasesNupkgMemoryStream, true)) { Assert.Equal(expectedPackageIdentity, releasesPackageArchiveReader.GetIdentity()); } releasesNupkgMemoryStream.Seek(0, SeekOrigin.Begin); _baseFixtureNuget.SetupReleases(_nugetServiceMock, releasesNupkgMemoryStream, nugetPackageSources, genesisSnapApp); var(snapAppsReleasesAfter, packageSourceAfter, releasesMemoryStream) = await _snapPackageManager.GetSnapsReleasesAsync(genesisSnapApp); await using (releasesMemoryStream) { Assert.NotNull(releasesMemoryStream); Assert.Equal(0, releasesMemoryStream.Position); Assert.True(releasesMemoryStream.Length > 0); Assert.NotNull(snapAppsReleasesAfter); Assert.NotNull(packageSourceAfter); Assert.Equal(expectedVersion, snapAppsReleases.Version); Assert.Equal(expectedVersion, snapAppsReleasesAfter.Version); var snapAppReleases = snapAppsReleasesAfter.GetReleases(genesisSnapApp); Assert.Equal(3, snapAppReleases.Count()); } } }