private ResolvePackageDependencies GetExecutedTask(LockFile lockFile) { var resolver = new MockPackageResolver(_packageRoot); var task = new ResolvePackageDependencies(lockFile, resolver) { ProjectAssetsFile = lockFile.Path, ProjectPath = _projectPath, ProjectLanguage = null }; task.Execute().Should().BeTrue(); return(task); }
private static ResolvePackageDependencies GetExecutedTask(LockFile lockFile, bool emitLegacyAssetsFileItems, string target) { var resolver = new MockPackageResolver(_packageRoot); var task = new ResolvePackageDependencies(lockFile, resolver) { ProjectAssetsFile = lockFile.Path, ProjectPath = _projectPath, ProjectLanguage = null, EmitLegacyAssetsFileItems = emitLegacyAssetsFileItems, TargetFrameworkMoniker = target }; task.Execute().Should().BeTrue(); return(task); }
public void ItFiltersAnalyzersByProjectLanguage() { string projectLanguage = "C#"; // expected included analyzers string[] expectIncluded = new string[] { "analyzers/dotnet/IncludedAlpha.dll", "analyzers/dotnet/cs/IncludedBeta.dll", "analyzers/dotnet/cs/vb/IncludedChi.dll", }; // expected excluded files string[] expectExcluded = new string[] { "analyzers/dotnet/vb/ExcludedAlpha.dll", "analyzers/dotnet/ExcludedBeta.txt", "analyzers/dotnet/cs/ExcludedChi.txt", "dotnet/ExcludedDelta.dll", "dotnet/cs/ExcludedEpsilon.dll" }; var libCFiles = new List <string>() { "lib/file/G.dll", "lib/file/H.dll", "lib/file/I.dll" }; libCFiles.AddRange(expectIncluded); libCFiles.AddRange(expectExcluded); string libCDefn = CreateLibrary("LibC/1.2.3", "package", libCFiles.ToArray()); string lockFileContent = CreateLockFileSnippet( targets: new string[] { CreateTarget(".NETCoreApp,Version=v1.0", TargetLibA, TargetLibB, TargetLibC), CreateTarget(".NETCoreApp,Version=v1.0/osx.10.11-x64", TargetLibB, TargetLibC), }, libraries: new string[] { LibADefn, LibBDefn, libCDefn }, projectFileDependencyGroups: new string[] { ProjectGroup, NETCoreGroup, NETCoreOsxGroup } ); LockFile lockFile = TestLockFiles.CreateLockFile(lockFileContent); var task = new ResolvePackageDependencies(lockFile, new MockPackageResolver()) { ProjectAssetsFile = lockFile.Path, ProjectPath = null, ProjectLanguage = projectLanguage, // set language EmitLegacyAssetsFileItems = true }; task.Execute().Should().BeTrue(); IEnumerable <ITaskItem> fileDefns; fileDefns = task.FileDefinitions .Where(t => t.GetMetadata(MetadataKeys.Type) == "AnalyzerAssembly"); fileDefns.Count().Should().Be(3); var expectedTargets = new string[] { "netcoreapp1.0", "netcoreapp1.0/osx.10.11-x64" }; foreach (var analyzer in expectIncluded) { var fileKey = $"LibC/1.2.3/{analyzer}"; var item = task.FileDefinitions.Where(t => t.ItemSpec == fileKey).First(); item.GetMetadata(MetadataKeys.Type).Should().Be("AnalyzerAssembly"); item.GetMetadata(MetadataKeys.Path).Should().Be(analyzer); // expect two file dependencies for each, one per target var fileDeps = task.FileDependencies.Where(t => t.ItemSpec == fileKey); fileDeps.Count().Should().Be(2); fileDeps.Select(f => f.GetMetadata(MetadataKeys.ParentTarget)) .Should().Contain(expectedTargets); fileDeps.All(f => f.GetMetadata(MetadataKeys.ParentPackage) == "LibC/1.2.3"); } foreach (var otherFile in expectExcluded) { var fileKey = $"LibC/1.2.3/{otherFile}"; var item = task.FileDefinitions.Where(t => t.ItemSpec == fileKey).First(); item.GetMetadata(MetadataKeys.Type).Should().NotBe("AnalyzerAssembly"); // expect no file dependencies for each task.FileDependencies.Where(t => t.ItemSpec == fileKey) .Should().BeEmpty(); } }
public void ItAddsAnalyzerMetadataAndFileDependencies() { string projectLanguage = "VB"; string libCDefn = CreateLibrary("LibC/1.2.3", "package", "lib/file/G.dll", "lib/file/H.dll", "lib/file/I.dll", "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.txt", // not analyzer "lib/file/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll" // not analyzer ); string lockFileContent = CreateLockFileSnippet( targets: new string[] { CreateTarget(".NETCoreApp,Version=v1.0", TargetLibA, TargetLibB, TargetLibC), CreateTarget(".NETCoreApp,Version=v1.0/osx.10.11-x64", TargetLibB, TargetLibC), }, libraries: new string[] { LibADefn, LibBDefn, libCDefn }, projectFileDependencyGroups: new string[] { ProjectGroup, NETCoreGroup, NETCoreOsxGroup } ); LockFile lockFile = TestLockFiles.CreateLockFile(lockFileContent); var task = new ResolvePackageDependencies(lockFile, new MockPackageResolver()) { ProjectAssetsFile = lockFile.Path, ProjectPath = null, ProjectLanguage = projectLanguage, // set language EmitLegacyAssetsFileItems = true }; task.Execute().Should().BeTrue(); IEnumerable <ITaskItem> fileDefns; fileDefns = task.FileDefinitions .Where(t => t.GetMetadata(MetadataKeys.Type) == "AnalyzerAssembly"); fileDefns.Count().Should().Be(2); var analyzers = new string[] { "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", }; var expectedTargets = new string[] { "netcoreapp1.0", "netcoreapp1.0/osx.10.11-x64" }; foreach (var analyzer in analyzers) { var fileKey = $"LibC/1.2.3/{analyzer}"; var item = task.FileDefinitions.Where(t => t.ItemSpec == fileKey).First(); item.GetMetadata(MetadataKeys.Type).Should().Be("AnalyzerAssembly"); item.GetMetadata(MetadataKeys.Path).Should().Be(analyzer); // expect two file dependencies for each, one per target var fileDeps = task.FileDependencies.Where(t => t.ItemSpec == fileKey); fileDeps.Count().Should().Be(2); fileDeps.Select(f => f.GetMetadata(MetadataKeys.ParentTarget)) .Should().Contain(expectedTargets); fileDeps.All(f => f.GetMetadata(MetadataKeys.ParentPackage) == "LibC/1.2.3"); } }