public async Task TestMatchSameFrameworkAndVersionButDifferentSpelling() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.SearchPaths.AddRange(searchPaths); comparer.SaveAssemblyMarkdownDiff = true; comparer.IgnoreSimilarFrameworks = true; await comparer.SaveCompleteDiffToDirectoryAsync(SkiaPackageId, SkiaV600Number, SkiaV601Number, diffDir); var xnupkg = XDocument.Load(Path.Combine(diffDir, "SkiaSharp.nupkg.diff.xml")); var xFws = xnupkg.Root .Element("package") .Element("frameworks") .Elements("framework"); var xIosFws = xFws.Single(f => f.Attribute("name").Value == "Xamarin.iOS"); Assert.Null(xIosFws.Attribute("presence")); var xIosAss = xIosFws.Element("assemblies").Element("assembly"); Assert.Equal("lib/Xamarin.iOS/SkiaSharp.dll", xIosAss.Attribute("path").Value); Assert.Equal("lib/XamariniOS/SkiaSharp.dll", xIosAss.Attribute("old_path").Value); var netStdFile = File.ReadAllText(Path.Combine(diffDir, "netstandard1.3", "SkiaSharp.dll.diff.md")); var iosFile = File.ReadAllText(Path.Combine(diffDir, "Xamarin.iOS", "SkiaSharp.dll.diff.md")); Assert.Equal(netStdFile, iosFile); }
public async Task TestCompletePackageDiffIsGeneratedCorrectly() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.SearchPaths.AddRange(searchPaths); comparer.SaveAssemblyMarkdownDiff = true; comparer.IgnoreSimilarFrameworks = true; // download extra dependencies await AddDependencyAsync(comparer, "Xamarin.Android.Support.v7.AppCompat", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Fragment", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Core.Utils", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Compat", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Core.UI", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.v7.CardView", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Design", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Tizen.NET", "4.0.0", "netstandard2.0"); await comparer.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, diffDir); var files = Directory.GetFiles(diffDir, "*.md", SearchOption.AllDirectories); Assert.Equal(27, files.Length); }
public async Task TestMatchPortableUpgradeToNetStandard() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.SearchPaths.AddRange(searchPaths); comparer.SaveAssemblyMarkdownDiff = true; await comparer.SaveCompleteDiffToDirectoryAsync(SkiaPackageId, SkiaV560Number, SkiaV601Number, diffDir); var xnupkg = XDocument.Load(Path.Combine(diffDir, "SkiaSharp.nupkg.diff.xml")); var xFws = xnupkg.Root .Element("package") .Element("frameworks") .Elements("framework"); var xPclFw = xFws.Single(f => f.Attribute("name").Value == ".NETPortable"); Assert.Equal("missing", xPclFw.Attribute("presence").Value); Assert.Empty(xPclFw.Descendants()); var xStdFw = xFws.Single(f => f.Attribute("name").Value == ".NETStandard"); var xStdAss = xStdFw.Element("assemblies").Element("assembly"); Assert.Equal("lib/netstandard1.3/SkiaSharp.dll", xStdAss.Attribute("path").Value); Assert.Equal("lib/portable-net45+win8+wpa81+wp8/SkiaSharp.dll", xStdAss.Attribute("old_path").Value); var netStdFile = File.ReadAllText(Path.Combine(diffDir, "netstandard1.3", "SkiaSharp.dll.diff.md")); var netFile = File.ReadAllText(Path.Combine(diffDir, "net45", "SkiaSharp.dll.diff.md")); // replace the new .NET Standard type netFile = netFile.Replace("System.IAsyncDisposable, System.IDisposable", "System.IDisposable"); Assert.Equal(netStdFile, netFile); }
public async Task TestCompletePackageDiffIsGeneratedCorrectlyWithoutAllReferencesAndIgnoreNonBreaking() { var breakingDir = GenerateTestOutputPath(); var ignoreBreakingDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.IgnoreResolutionErrors = true; comparer.IgnoreAddedAssemblies = true; comparer.SaveAssemblyMarkdownDiff = true; comparer.IgnoreNonBreakingChanges = false; await comparer.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, breakingDir); comparer.IgnoreNonBreakingChanges = true; await comparer.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, ignoreBreakingDir); }
public async Task TestCompletePackageDiffIsGeneratedCorrectlyWithAddedAssembliesButWithoutAllReferences() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.IgnoreResolutionErrors = true; await comparer.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, diffDir); }
public async Task TestCompleteSkiaPackageDiffIsGeneratedCorrectly() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.SaveAssemblyMarkdownDiff = true; comparer.SearchPaths.AddRange(searchPaths); await comparer.SaveCompleteDiffToDirectoryAsync(SkiaPackageId, SkiaV600Number, SkiaV602Number, diffDir); }
public async Task TestCompletePackageDiffThrowsWithoutAllReferencesAndFlag() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.IgnoreResolutionErrors = false; var task = comparer.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, diffDir); await Assert.ThrowsAsync <AssemblyResolutionException>(() => task); }
public async Task TestCompletePackageDiffIsTheSameEvenWithoutReferences() { var missingDir = GenerateTestOutputPath(); var allDir = GenerateTestOutputPath(); // generate diff with missing references var missing = new NuGetDiff(); missing.IgnoreResolutionErrors = true; missing.IgnoreInheritedInterfaces = true; missing.SaveAssemblyMarkdownDiff = true; missing.IgnoreAddedAssemblies = true; missing.IgnoreSimilarFrameworks = true; await missing.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, missingDir); // generate diff with everything var all = new NuGetDiff(); all.SearchPaths.AddRange(searchPaths); all.IgnoreInheritedInterfaces = true; all.SaveAssemblyMarkdownDiff = true; all.IgnoreAddedAssemblies = true; all.IgnoreSimilarFrameworks = true; await AddDependencyAsync(all, "Xamarin.Android.Support.v7.AppCompat", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(all, "Xamarin.Android.Support.Fragment", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(all, "Xamarin.Android.Support.Core.Utils", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(all, "Xamarin.Android.Support.Compat", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(all, "Xamarin.Android.Support.Core.UI", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(all, "Xamarin.Android.Support.v7.CardView", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(all, "Xamarin.Android.Support.Design", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(all, "Tizen.NET", "4.0.0", "netstandard2.0"); await all.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, allDir); // test the markdown files as the xml will be different as some dependency type will not be loaded // are there the same files var missingFiles = Directory.GetFiles(missingDir, "*.md", SearchOption.AllDirectories); var allFiles = Directory.GetFiles(allDir, "*.md", SearchOption.AllDirectories); var missingDic = missingFiles.ToDictionary(f => Path.GetRelativePath(missingDir, f), f => f); var allDic = allFiles.ToDictionary(f => Path.GetRelativePath(allDir, f), f => f); Assert.Equal(14, missingDic.Count); Assert.Equal(14, allDic.Count); Assert.Equal(allDic.Keys, missingDic.Keys); foreach (var pair in allDic) { var allFile = await File.ReadAllTextAsync(pair.Value); var missingFile = await File.ReadAllTextAsync(missingDic[pair.Key]); Assert.Equal(allFile, missingFile); } }
public async Task TestMatchFrameworksWithAllFrameworks() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.SearchPaths.AddRange(searchPaths); comparer.IgnoreResolutionErrors = true; comparer.SaveAssemblyApiInfo = true; comparer.SaveAssemblyXmlDiff = true; comparer.SaveAssemblyMarkdownDiff = true; await comparer.SaveCompleteDiffToDirectoryAsync(AndroidSupportPackageId, AndroidSupportV27Number, AndroidSupportV28Number, diffDir); }
public async Task TestMatchSameFrameworkButDifferentVersionFailsWhenSimilarIsDisabled() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.SearchPaths.AddRange(searchPaths); comparer.SaveAssemblyMarkdownDiff = true; comparer.IgnoreSimilarFrameworks = true; await comparer.SaveCompleteDiffToDirectoryAsync(SkiaPackageId, SkiaV600Number, SkiaV601Number, diffDir); var xnupkg = XDocument.Load(Path.Combine(diffDir, "SkiaSharp.nupkg.diff.xml")); var xFws = xnupkg.Root .Element("package") .Element("frameworks") .Elements("framework"); var xMacFws = xFws.Where(f => f.Attribute("name").Value == "Xamarin.Mac").ToArray(); Assert.Equal(2, xMacFws.Length); var xMac0Fw = xMacFws.Single(f => f.Attribute("version").Value == "0.0.0.0"); Assert.Equal("missing", xMac0Fw.Attribute("presence").Value); Assert.Empty(xMac0Fw.Descendants()); var xMac2Fw = xMacFws.Single(f => f.Attribute("version").Value == "2.0.0.0"); Assert.Equal("extra", xMac2Fw.Attribute("presence").Value); var xMac2Ass = xMac2Fw.Element("assemblies").Element("assembly"); Assert.Equal("lib/Xamarin.Mac20/SkiaSharp.dll", xMac2Ass.Attribute("path").Value); Assert.Null(xMac2Ass.Attribute("old_path")); var netStdFile = File.ReadAllText(Path.Combine(diffDir, "netstandard1.3", "SkiaSharp.dll.diff.md")); var mac2File = File.ReadAllText(Path.Combine(diffDir, "Xamarin.Mac20", "SkiaSharp.dll.diff.md")); Assert.NotEqual(netStdFile, mac2File); Assert.True(netStdFile.Length < mac2File.Length); }
public async Task TestDoesIgnoreMembers() { var path = GenerateTestOutputPath(); // generate diff with missing references var missing = new NuGetDiff { IgnoreResolutionErrors = true, IgnoreInheritedInterfaces = true, SaveAssemblyMarkdownDiff = true, IgnoreAddedAssemblies = true, IgnoreSimilarFrameworks = true, IgnoreMemberRegex = { @"\.IServiceProviderExtensions\:", } }; await missing.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, path); var allFile = await File.ReadAllTextAsync(Path.Combine(path, "MonoAndroid10/Xamarin.Forms.Core.dll.diff.md")); Assert.DoesNotContain("IServiceProviderExtensions", allFile); }
public async Task TestCompletePackageDiffIsGeneratedCorrectlyWithAllAssemblyInfo() { var diffDir = GenerateTestOutputPath(); var comparer = new NuGetDiff(); comparer.SearchPaths.AddRange(searchPaths); comparer.SaveAssemblyApiInfo = true; comparer.SaveAssemblyHtmlDiff = true; comparer.SaveAssemblyMarkdownDiff = true; comparer.SaveAssemblyXmlDiff = true; // download extra dependencies await AddDependencyAsync(comparer, "Xamarin.Android.Support.v7.AppCompat", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Fragment", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Core.Utils", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Compat", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Core.UI", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.v7.CardView", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Xamarin.Android.Support.Design", "25.4.0.2", "MonoAndroid70"); await AddDependencyAsync(comparer, "Tizen.NET", "4.0.0", "netstandard2.0"); await comparer.SaveCompleteDiffToDirectoryAsync(FormsPackageId, FormsV25Number1, FormsV31Number1, diffDir); }