public async Task UWPRestore_BlankUWPAppWithExcludes() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) using (var cacheContext = new SourceCacheContext()) { var configJson = JObject.Parse(@"{ ""dependencies"": { ""Microsoft.NETCore.UniversalWindowsPlatform"": { ""version"": ""5.0.0"", ""exclude"": ""build,runtime,compile,native"" } }, ""frameworks"": { ""uap10.0"": {} }, ""runtimes"": { ""win10-arm"": {}, ""win10-arm-aot"": {}, ""win10-x86"": {}, ""win10-x86-aot"": {}, ""win10-x64"": {}, ""win10-x64-aot"": {} } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var clientPolicyContext = ClientPolicyContext.GetClientPolicy(NullSettings.Instance, logger); var request = new TestRestoreRequest(spec, sources, packagesDir, cacheContext, clientPolicyContext, logger) { LockFilePath = Path.Combine(projectDir, "project.lock.json") }; var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); // Act var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); var lockFileJson = JObject.Parse(File.OpenText(request.LockFilePath).ReadToEnd()); // Assert Assert.Equal(0, result.CompatibilityCheckResults.Sum(checkResult => checkResult.Issues.Count)); Assert.Equal(0, logger.Errors); Assert.Equal(0, logger.Warnings); Assert.Equal(118, result.GetAllInstalled().Count); } }
public async Task UWPRestore_UWPAppWithOffice365Packages() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) { var configJson = JObject.Parse(@"{ ""dependencies"": { ""Microsoft.ApplicationInsights"": ""1.0.0"", ""Microsoft.ApplicationInsights.PersistenceChannel"": ""1.0.0"", ""Microsoft.ApplicationInsights.WindowsApps"": ""1.0.0"", ""Microsoft.Azure.ActiveDirectory.GraphClient"": ""2.0.6"", ""Microsoft.IdentityModel.Clients.ActiveDirectory"": ""2.14.201151115"", ""Microsoft.NETCore.UniversalWindowsPlatform"": ""5.0.0"", ""Microsoft.Office365.Discovery"": ""1.0.22"", ""Microsoft.Office365.OutlookServices"": ""1.0.35"", ""Microsoft.Office365.SharePoint"": ""1.0.22"" }, ""frameworks"": { ""uap10.0"": {} }, ""runtimes"": { ""win10-arm"": {}, ""win10-arm-aot"": {}, ""win10-x86"": {}, ""win10-x86-aot"": {}, ""win10-x64"": {}, ""win10-x64-aot"": {} } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var request = new TestRestoreRequest(spec, sources, packagesDir, logger); request.LockFilePath = Path.Combine(projectDir, "project.lock.json"); var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); // Act var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); // Assert Assert.Equal(0, result.CompatibilityCheckResults.Sum(checkResult => checkResult.Issues.Count)); Assert.Equal(0, logger.Errors); Assert.Equal(0, logger.Warnings); Assert.Equal(140, result.GetAllInstalled().Count); } }
public async Task GetInstalledVersion_WithFloating_WithAssetsFile_ReturnsVersionsFromAssetsSpecs() { using (var testDirectory = TestDirectory.Create()) { // Setup var projectName = "project1"; var projectFullPath = Path.Combine(testDirectory.Path, projectName + ".csproj"); // Project var projectCache = new ProjectSystemCache(); IVsProjectAdapter projectAdapter = (new Mock <IVsProjectAdapter>()).Object; var project = CreateNetCorePackageReferenceProject(projectName, projectFullPath, projectCache); var projectNames = GetTestProjectNames(projectFullPath, projectName); var packageSpec = GetPackageSpec(projectName, projectFullPath, "[*, )"); // Restore info var projectRestoreInfo = ProjectJsonTestHelpers.GetDGSpecFromPackageSpecs(packageSpec); projectCache.AddProjectRestoreInfo(projectNames, projectRestoreInfo, new List <IAssetsLogMessage>()); projectCache.AddProject(projectNames, projectAdapter, project).Should().BeTrue(); // Package directories var sources = new List <PackageSource>(); var packagesDir = new DirectoryInfo(Path.Combine(testDirectory, "globalPackages")); var packageSource = new DirectoryInfo(Path.Combine(testDirectory, "packageSource")); packagesDir.Create(); packageSource.Create(); sources.Add(new PackageSource(packageSource.FullName)); var logger = new TestLogger(); var request = new TestRestoreRequest(packageSpec, sources, packagesDir.FullName, logger) { LockFilePath = Path.Combine(testDirectory, "project.assets.json") }; await SimpleTestPackageUtility.CreateFullPackageAsync(packageSource.FullName, "packageA", "4.0.0"); // Act var command = new RestoreCommand(request); var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); var packages = await project.GetInstalledPackagesAsync(CancellationToken.None); // Asert Assert.True(result.Success); packages.Should().Contain(a => a.PackageIdentity.Equals(new PackageIdentity("packageA", new NuGetVersion("4.0.0")))); var cache_packages = await project.GetInstalledPackagesAsync(CancellationToken.None); cache_packages.Should().Contain(a => a.PackageIdentity.Equals(new PackageIdentity("packageA", new NuGetVersion("4.0.0")))); } }
public async Task UWPRestore_ModernPCL() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) { var configJson = JObject.Parse(@"{ ""supports"": { ""net46.app"": { }, ""uwp.10.0.app"": { }, ""dnxcore50.app"": { } }, ""dependencies"": { ""Microsoft.NETCore"": ""5.0.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.0"" }, ""frameworks"": { ""dotnet"": { ""imports"": ""portable-net452+win81"" } } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var request = new TestRestoreRequest(spec, sources, packagesDir, logger); request.LockFilePath = Path.Combine(projectDir, "project.lock.json"); var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); // Act var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); // Assert Assert.Equal(0, result.CompatibilityCheckResults.Sum(checkResult => checkResult.Issues.Count)); Assert.True(0 == logger.Errors, logger.ShowMessages()); Assert.Equal(0, logger.Warnings); Assert.Equal(86, result.GetAllInstalled().Count); } }
public async Task UWPRestore_VerifySameResultWhenRestoringWithLocalPackages() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) using (var cacheContext = new SourceCacheContext()) { var configJson = JObject.Parse(@"{ ""runtimes"": { ""win7-x86"": { } }, ""frameworks"": { ""dnxcore50"": { ""dependencies"": { ""Microsoft.NETCore"": ""5.0.1-beta-23225"" }, ""imports"": ""portable-net451+win81"" } } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var request = new TestRestoreRequest(spec, sources, packagesDir, cacheContext, logger); request.LockFilePath = Path.Combine(projectDir, "project.lock.json"); var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); // Act var result = await command.ExecuteAsync(); var result2 = await command.ExecuteAsync(); // Assert Assert.Equal(0, logger.Errors); Assert.Equal(0, logger.Warnings); Assert.Equal(result.LockFile, result2.LockFile); } }
public async Task GetInstalledVersion_WithoutPackages_ReturnsEmpty() { using (var testDirectory = TestDirectory.Create()) { // Setup var projectName = "project1"; var projectFullPath = Path.Combine(testDirectory.Path, projectName + ".csproj"); // Project var projectCache = new ProjectSystemCache(); IVsProjectAdapter projectAdapter = (new Mock <IVsProjectAdapter>()).Object; var project = CreateNetCorePackageReferenceProject(projectName, projectFullPath, projectCache); var projectNames = GetTestProjectNames(projectFullPath, projectName); var packageSpec = GetPackageSpecNoPackages(projectName, projectFullPath); // Restore info var projectRestoreInfo = ProjectJsonTestHelpers.GetDGSpecFromPackageSpecs(packageSpec); projectCache.AddProjectRestoreInfo(projectNames, projectRestoreInfo, new List <IAssetsLogMessage>()); projectCache.AddProject(projectNames, projectAdapter, project).Should().BeTrue(); // Package directories var sources = new List <PackageSource>(); var packagesDir = new DirectoryInfo(Path.Combine(testDirectory, "globalPackages")); var packageSource = new DirectoryInfo(Path.Combine(testDirectory, "packageSource")); packagesDir.Create(); packageSource.Create(); sources.Add(new PackageSource(packageSource.FullName)); var logger = new TestLogger(); var request = new TestRestoreRequest(packageSpec, sources, packagesDir.FullName, logger); // Act var command = new RestoreCommand(request); var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); var packages = await project.GetInstalledPackagesAsync(CancellationToken.None); // Asert packages.Should().BeEmpty(); } }
public async Task UWPRestore_SystemDependencyVersionConflict() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) { var configJson = JObject.Parse(@"{ ""dependencies"": { ""System.Text.Encoding"": ""4.0.10"", ""System.Collections"": ""4.0.11-beta-23225"" }, ""frameworks"": { ""uap10.0"": {} } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var request = new TestRestoreRequest(spec, sources, packagesDir, logger); request.LockFilePath = Path.Combine(projectDir, "project.lock.json"); var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); // Act var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); var lockFileJson = JObject.Parse(File.OpenText(request.LockFilePath).ReadToEnd()); // Assert Assert.Equal(0, result.CompatibilityCheckResults.Sum(checkResult => checkResult.Issues.Count)); Assert.Equal(0, logger.Errors); Assert.Equal(0, logger.Warnings); } }
public async Task UWPRestore_VerifySatellitePackagesAreCompatibleInPCL() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) { var configJson = JObject.Parse(@"{ ""dependencies"": { ""Microsoft.AspNet.Mvc.de"": ""5.2.3"" }, ""frameworks"": { ""net46"": { } } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var request = new TestRestoreRequest(spec, sources, packagesDir, logger); request.LockFilePath = Path.Combine(projectDir, "project.lock.json"); var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); // Act var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); // Assert Assert.Equal(0, result.CompatibilityCheckResults.Sum(checkResult => checkResult.Issues.Count)); Assert.Equal(0, logger.Errors); Assert.Equal(0, logger.Warnings); Assert.Equal(5, result.GetAllInstalled().Count); } }
public async Task UWPRestore_BlankUWPAppV1() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) { var configJson = JObject.Parse(@"{ ""dependencies"": { ""Microsoft.NETCore.UniversalWindowsPlatform"": ""5.0.0"" }, ""frameworks"": { ""uap10.0"": {} }, ""runtimes"": { ""win10-arm"": {}, ""win10-arm-aot"": {}, ""win10-x86"": {}, ""win10-x86-aot"": {}, ""win10-x64"": {}, ""win10-x64-aot"": {} } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var request = new TestRestoreRequest(spec, sources, packagesDir, logger); request.LockFilePath = Path.Combine(projectDir, "project.lock.json"); // Set the lock file version to v1 to force a downgrade request.LockFileVersion = 1; var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); var expectedStream = GetResource("NuGet.Commands.FuncTest.compiler.resources.uwpBlankAppV1.json"); JObject expectedJson = null; using (var reader = new StreamReader(expectedStream)) { expectedJson = JObject.Parse(reader.ReadToEnd()); } // Act var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); var lockFileJson = JObject.Parse(File.OpenText(request.LockFilePath).ReadToEnd()); RemovePackageFolders(lockFileJson); // Assert Assert.True(result.Success); Assert.Equal(0, result.CompatibilityCheckResults.Sum(checkResult => checkResult.Issues.Count)); Assert.Equal(0, logger.Errors); Assert.Equal(0, logger.Warnings); Assert.Equal(118, result.GetAllInstalled().Count); Assert.Equal(expectedJson.ToString(), lockFileJson.ToString()); } }
public async Task UWPRestore_BlankUWPApp() { // Arrange var sources = new List <PackageSource>(); sources.Add(new PackageSource("https://api.nuget.org/v3/index.json")); using (var packagesDir = TestDirectory.Create()) using (var projectDir = TestDirectory.Create()) using (var cacheContext = new SourceCacheContext()) { var configJson = JObject.Parse(@"{ ""dependencies"": { ""Microsoft.NETCore.UniversalWindowsPlatform"": ""5.0.0"" }, ""frameworks"": { ""uap10.0"": {} }, ""runtimes"": { ""win10-arm"": {}, ""win10-arm-aot"": {}, ""win10-x86"": {}, ""win10-x86-aot"": {}, ""win10-x64"": {}, ""win10-x64-aot"": {} } }"); var specPath = Path.Combine(projectDir, "TestProject", "project.json"); var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", specPath); var logger = new TestLogger(); var request = new TestRestoreRequest(spec, sources, packagesDir, cacheContext, logger); request.LockFilePath = Path.Combine(projectDir, "project.lock.json"); var lockFileFormat = new LockFileFormat(); var command = new RestoreCommand(request); var expectedStream = GetResource("NuGet.Commands.FuncTest.compiler.resources.uwpBlankAppV2.json"); JObject expectedJson = null; using (var reader = new StreamReader(expectedStream)) { expectedJson = JObject.Parse(reader.ReadToEnd()); } // Act var result = await command.ExecuteAsync(); await result.CommitAsync(logger, CancellationToken.None); var lockFileJson = JObject.Parse(File.OpenText(request.LockFilePath).ReadToEnd()); RemovePackageFolders(lockFileJson); // Assert Assert.True(result.Success); Assert.Equal(0, result.CompatibilityCheckResults.Sum(checkResult => checkResult.Issues.Count)); Assert.Equal(0, logger.Errors); Assert.Equal(0, logger.Warnings); Assert.Equal(118, result.GetAllInstalled().Count); // TODO: skipping comparing assets file since NuGet.org is doing repo sign for all the existing // packages which is changing the sha512 in the assets file which fails the comparison. // We should enable it once all the packages are repo signed. // tracking issue# https://github.com/NuGet/Home/issues/7361 //Assert.Equal(expectedJson.ToString(), lockFileJson.ToString()); } }