public void ItShouldReturnCorrectHierarchyWhenPackageHasChildAssemblyOrAnalyzerDependencies() { // Arrange // target definitions var mockTarget = new MockTaskItem( itemSpec: ".Net Framework,Version=v4.5", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "net45" }, { MetadataKeys.TargetFrameworkMoniker, ".Net Framework,Version=v4.5" }, { MetadataKeys.FrameworkName, ".Net Framework" }, { MetadataKeys.FrameworkVersion, "4.5" }, { MetadataKeys.Type, "Target" } }); // package definitions var mockPackage = new MockTaskItem( itemSpec: "Package3/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "Package3" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Package" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" }, { PreprocessPackageDependenciesDesignTime.DependenciesMetadata, @"mockChildAssembly1;somepath/mockChildAssembly2;somepath/mockChildAnalyzerAssembly" }, { MetadataKeys.IsImplicitlyDefined, "True" } }); var mockChildAssembly1 = new MockTaskItem( itemSpec: @"mockChildAssembly1", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockChildAssembly1" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Assembly" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" } }); var mockChildAssembly2 = new MockTaskItem( itemSpec: @"somepath/mockChildAssembly2", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockChildAssembly2" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "FrameworkAssembly" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" } }); var mockChildAssemblyNoCompileMetadata = new MockTaskItem( itemSpec: @"somepath/mockChildAssemblyNoCompileMetadata", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockChildAssemblyNoCompileMetadata" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Assembly" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" } }); var mockChildAnalyzerAssembly = new MockTaskItem( itemSpec: @"somepath/mockChildAnalyzerAssembly", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockChildAnalyzerAssembly" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "AnalyzerAssembly" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" } }); // package dependencies var mockPackageDep = new MockTaskItem( itemSpec: "Package3/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.IsImplicitlyDefined, "True" } }); var mockChildAssemblyDep1 = new MockTaskItem( itemSpec: "mockChildAssembly1", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.ParentPackage, "Package3/1.0.0" }, { MetadataKeys.FileGroup, PreprocessPackageDependenciesDesignTime.CompileTimeAssemblyMetadata } }); var mockChildAssemblyDep2 = new MockTaskItem( itemSpec: @"somepath/mockChildAssembly2", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.ParentPackage, "Package3/1.0.0" }, { MetadataKeys.FileGroup, PreprocessPackageDependenciesDesignTime.CompileTimeAssemblyMetadata } }); var mockChildAssemblyNoCompileMetadataDep = new MockTaskItem( itemSpec: "somepath/mockChildAssemblyNoCompileMetadata", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.ParentPackage, "Package3/1.0.0" } }); var mockChildAnalyzerAssemblyDep = new MockTaskItem( itemSpec: "somepath/mockChildAnalyzerAssembly", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.ParentPackage, "Package3/1.0.0" } }); var task = new PreprocessPackageDependenciesDesignTime(); task.TargetDefinitions = new[] { mockTarget }; task.PackageDefinitions = new ITaskItem[] { mockPackage }; task.FileDefinitions = new ITaskItem[] { mockChildAssembly1, mockChildAssembly2, mockChildAssemblyNoCompileMetadata, mockChildAnalyzerAssembly }; task.PackageDependencies = new ITaskItem[] { mockPackageDep }; task.FileDependencies = new ITaskItem[] { mockChildAssemblyDep1, mockChildAssemblyDep2, mockChildAssemblyNoCompileMetadataDep, mockChildAnalyzerAssemblyDep }; task.PackageReferences = new ITaskItem[] { new MockTaskItem( itemSpec: "Package3", metadata: new Dictionary <string, string> { { MetadataKeys.IsImplicitlyDefined, "True" } }) }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.DependenciesDesignTime.Count().Should().Be(5); var resultTargets = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5")).ToArray(); resultTargets.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Target, mockTarget, resultTargets[0]); mockPackage.SetMetadata(MetadataKeys.Path, mockPackage.GetMetadata(MetadataKeys.ResolvedPath)); var resultPackage = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/Package3/1.0.0")).ToArray(); resultPackage.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Package, mockPackage, resultPackage[0]); mockChildAssembly1.SetMetadata(MetadataKeys.Path, mockChildAssembly1.GetMetadata(MetadataKeys.ResolvedPath)); var resultChildAssembly1 = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/mockChildAssembly1")).ToArray(); resultChildAssembly1.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Assembly, mockChildAssembly1, resultChildAssembly1[0]); mockChildAssembly2.SetMetadata(MetadataKeys.Path, mockChildAssembly2.GetMetadata(MetadataKeys.ResolvedPath)); var resultChildAssembly2 = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/somepath/mockChildAssembly2")).ToArray(); resultChildAssembly2.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.FrameworkAssembly, mockChildAssembly2, resultChildAssembly2[0]); mockChildAnalyzerAssembly.SetMetadata(MetadataKeys.Path, mockChildAnalyzerAssembly.GetMetadata(MetadataKeys.ResolvedPath)); var resultChildAnalyzerAssembly = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/somepath/mockChildAnalyzerAssembly")).ToArray(); resultChildAnalyzerAssembly.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.AnalyzerAssembly, mockChildAnalyzerAssembly, resultChildAnalyzerAssembly[0]); }
public void ItShouldNotReturnPackagesWithUnknownTypes() { // Arrange // target definitions var mockTarget = new MockTaskItem( itemSpec: ".Net Framework,Version=v4.5", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "net45" }, { MetadataKeys.TargetFrameworkMoniker, ".Net Framework,Version=v4.5" }, { MetadataKeys.FrameworkName, ".Net Framework" }, { MetadataKeys.FrameworkVersion, "4.5" }, { MetadataKeys.Type, "Target" } }); // package definitions var mockPackageNoType = new MockTaskItem( itemSpec: "mockPackageNoType/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockPackageNoType" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some path" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); var mockPackageUnknown = new MockTaskItem( itemSpec: "mockPackageUnknown/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockPackageUnknown" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "qqqq" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); // package dependencies var mockPackageDepNoType = new MockTaskItem( itemSpec: "mockPackageNoType/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockPackageDepUnknown = new MockTaskItem( itemSpec: "mockPackageUnknown/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var task = new PreprocessPackageDependenciesDesignTime(); task.TargetDefinitions = new[] { mockTarget }; task.PackageDefinitions = new ITaskItem[] { mockPackageNoType, mockPackageUnknown }; task.FileDefinitions = new ITaskItem[] { }; task.PackageDependencies = new ITaskItem[] { mockPackageDepNoType, mockPackageDepUnknown }; task.FileDependencies = new ITaskItem[] { }; task.PackageReferences = new ITaskItem[] { }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.DependenciesDesignTime.Count().Should().Be(1); var resultTargets = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5")).ToArray(); resultTargets.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Target, mockTarget, resultTargets[0]); }
public void ItShouldIgnoreFileDependenciesThatAre_NotAssemblies_And_DontBelongToCompileTimeAssemblyGroup() { // Arrange // target definitions var mockTarget = new MockTaskItem( itemSpec: ".Net Framework,Version=v4.5", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "net45" }, { MetadataKeys.TargetFrameworkMoniker, ".Net Framework,Version=v4.5" }, { MetadataKeys.FrameworkName, ".Net Framework" }, { MetadataKeys.FrameworkVersion, "4.5" }, { MetadataKeys.Type, "Target" } }); // package definitions var mockExternalProject = new MockTaskItem( itemSpec: "mockExternalProject/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockExternalProject" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some path" }, { MetadataKeys.Type, "ExternalProject" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); var mockProject = new MockTaskItem( itemSpec: "mockProject/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockProject" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Project" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); var mockContent = new MockTaskItem( itemSpec: "mockContent/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockContent" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Content" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); var mockPackage = new MockTaskItem( itemSpec: "mockPackage/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockAssembly" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Assembly" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); var mockDiagnostic = new MockTaskItem( itemSpec: "mockDiagnostic/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockDiagnostic" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Diagnostic" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); var mockWinmd = new MockTaskItem( itemSpec: "mockWinmd/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockWinmd" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Winmd" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); var mockReference = new MockTaskItem( itemSpec: "mockReference/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "mockReference" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Reference" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "False" } }); // package dependencies var mockExternalProjectDep = new MockTaskItem( itemSpec: "mockExternalProject/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockProjectDep = new MockTaskItem( itemSpec: "mockProject/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockContentDep = new MockTaskItem( itemSpec: "mockContent/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockPackageDep = new MockTaskItem( itemSpec: "mockPackage/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockDiagnosticDep = new MockTaskItem( itemSpec: "mockDiagnostic/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockWinmdDep = new MockTaskItem( itemSpec: "mockWinmd/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockReferenceDep = new MockTaskItem( itemSpec: "mockReference/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var task = new PreprocessPackageDependenciesDesignTime(); task.TargetDefinitions = new[] { mockTarget }; task.PackageDefinitions = new ITaskItem[] { }; task.FileDefinitions = new ITaskItem[] { mockExternalProject, mockProject, mockContent, mockPackage, mockWinmd, mockReference }; task.PackageDependencies = new ITaskItem[] { }; task.FileDependencies = new ITaskItem[] { mockExternalProjectDep, mockProjectDep, mockContentDep, mockPackageDep, mockWinmdDep, mockReferenceDep }; task.PackageReferences = new ITaskItem[] { }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.DependenciesDesignTime.Count().Should().Be(1); // Target with type var resultTargets = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5")).ToArray(); resultTargets.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Target, mockTarget, resultTargets[0]); }
public void ItReturnsCorrectHierarchyOfDependenciesThatHaveChildren() { // Arrange // target definitions var mockTarget = new MockTaskItem( itemSpec: ".Net Framework,Version=v4.5", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "net45" }, { MetadataKeys.TargetFrameworkMoniker, ".Net Framework,Version=v4.5" }, { MetadataKeys.FrameworkName, ".Net Framework" }, { MetadataKeys.FrameworkVersion, "4.5" }, { MetadataKeys.Type, "Target" } }); // package definitions var mockPackage = new MockTaskItem( itemSpec: "Package3/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "Package3" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Package" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" }, { PreprocessPackageDependenciesDesignTime.DependenciesMetadata, "ChildPackage1/1.0.0;ChildPackage2/2.0.0" }, { MetadataKeys.IsTopLevelDependency, "True" } }); var mockChildPackage1 = new MockTaskItem( itemSpec: "ChildPackage1/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "ChildPackage1" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Package" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" }, { PreprocessPackageDependenciesDesignTime.DependenciesMetadata, "ChildPackage11/1.0.0" }, { MetadataKeys.IsTopLevelDependency, "False" } }); var mockChildPackage11 = new MockTaskItem( itemSpec: "ChildPackage11/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "ChildPackage11" }, { MetadataKeys.Version, "1.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Package" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" }, { MetadataKeys.IsTopLevelDependency, "False" } }); var mockChildPackage2 = new MockTaskItem( itemSpec: "ChildPackage2/2.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.Name, "ChildPackage2" }, { MetadataKeys.Version, "2.0.0" }, { MetadataKeys.Path, "some path" }, { MetadataKeys.ResolvedPath, "some resolved path" }, { MetadataKeys.Type, "Package" }, { PreprocessPackageDependenciesDesignTime.ResolvedMetadata, "True" }, { MetadataKeys.IsTopLevelDependency, "False" } }); // package dependencies var mockPackageDep = new MockTaskItem( itemSpec: "Package3/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" } }); var mockChildPackageDep1 = new MockTaskItem( itemSpec: "ChildPackage1/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.ParentPackage, "Package3/1.0.0" } }); var mockChildPackageDep11 = new MockTaskItem( itemSpec: "ChildPackage11/1.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.ParentPackage, "ChildPackage1/1.0.0" } }); var mockChildPackageDep2 = new MockTaskItem( itemSpec: "ChildPackage2/2.0.0", metadata: new Dictionary <string, string> { { MetadataKeys.ParentTarget, ".Net Framework,Version=v4.5" }, { MetadataKeys.ParentPackage, "Package3/1.0.0" } }); var task = new PreprocessPackageDependenciesDesignTime(); task.TargetDefinitions = new[] { mockTarget }; task.PackageDefinitions = new ITaskItem[] { mockPackage, mockChildPackage1, mockChildPackage11, mockChildPackage2 }; task.FileDefinitions = new ITaskItem[] { }; task.PackageDependencies = new ITaskItem[] { mockPackageDep, mockChildPackageDep1, mockChildPackageDep11, mockChildPackageDep2 }; task.FileDependencies = new ITaskItem[] { }; task.PackageReferences = new ITaskItem[] { }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.DependenciesDesignTime.Count().Should().Be(5); var resultTargets = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5")).ToArray(); resultTargets.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Target, mockTarget, resultTargets[0]); mockPackage.SetMetadata(MetadataKeys.Path, mockPackage.GetMetadata(MetadataKeys.ResolvedPath)); var resultPackage = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/Package3/1.0.0")).ToArray(); resultPackage.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Package, mockPackage, resultPackage[0]); mockChildPackage1.SetMetadata(MetadataKeys.Path, mockChildPackage1.GetMetadata(MetadataKeys.ResolvedPath)); var resultChildPackage1 = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/ChildPackage1/1.0.0")).ToArray(); resultChildPackage1.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Package, mockChildPackage1, resultChildPackage1[0]); mockChildPackage11.SetMetadata(MetadataKeys.Path, mockChildPackage11.GetMetadata(MetadataKeys.ResolvedPath)); var resultChildPackage11 = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/ChildPackage11/1.0.0")).ToArray(); resultChildPackage11.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Package, mockChildPackage11, resultChildPackage11[0]); mockChildPackage2.SetMetadata(MetadataKeys.Path, mockChildPackage2.GetMetadata(MetadataKeys.ResolvedPath)); var resultChildPackage2 = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5/ChildPackage2/2.0.0")).ToArray(); resultChildPackage2.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Package, mockChildPackage2, resultChildPackage2[0]); }
public void ItShouldReturnOnlyValidTargetsWithoutRIDs() { // Arrange // target definitions var mockTargetWithType = new MockTaskItem( itemSpec: ".Net Framework,Version=v4.5", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "net45" }, { MetadataKeys.TargetFrameworkMoniker, ".Net Framework,Version=v4.5" }, { MetadataKeys.FrameworkName, ".Net Framework" }, { MetadataKeys.FrameworkVersion, "4.5" }, { MetadataKeys.Type, "target" } // lower case just in case }); var mockTargetWithRidToBeSkipped = new MockTaskItem( itemSpec: ".Net Framework,Version=v4.5/win7x86", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "" }, { MetadataKeys.TargetFrameworkMoniker, "" }, { MetadataKeys.FrameworkName, "" }, { MetadataKeys.FrameworkVersion, "" }, { MetadataKeys.Type, "" } }); var mockTargetWithoutType = new MockTaskItem( itemSpec: ".Net Framework,Version=v4.6", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "net46" }, { MetadataKeys.TargetFrameworkMoniker, ".Net Framework,Version=v4.6" }, { MetadataKeys.FrameworkName, ".Net Framework" }, { MetadataKeys.FrameworkVersion, "4.6" }, }); var mockTargetWithEmptyItemSpecToBeSkipped = new MockTaskItem( itemSpec: "", metadata: new Dictionary <string, string> { { MetadataKeys.RuntimeIdentifier, "" }, { MetadataKeys.TargetFrameworkMoniker, "" }, { MetadataKeys.FrameworkName, "" }, { MetadataKeys.FrameworkVersion, "" } }); var task = new PreprocessPackageDependenciesDesignTime(); task.TargetDefinitions = new[] { mockTargetWithType, mockTargetWithRidToBeSkipped, mockTargetWithoutType, mockTargetWithEmptyItemSpecToBeSkipped }; task.PackageDefinitions = new ITaskItem[] { }; task.FileDefinitions = new ITaskItem[] { }; task.PackageDependencies = new ITaskItem[] { }; task.FileDependencies = new ITaskItem[] { }; task.PackageReferences = new ITaskItem[] { }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.DependenciesDesignTime.Count().Should().Be(1); var resultTargetsWithType = task.DependenciesDesignTime .Where(x => x.ItemSpec.Equals(".Net Framework,Version=v4.5")).ToArray(); resultTargetsWithType.Length.Should().Be(1); VerifyTargetTaskItem(DependencyType.Target, mockTargetWithType, resultTargetsWithType[0]); }
public void ItShouldCombineSdkReferencesWithImplicitPackageReferences() { // Arrange var sdkReference1 = new MockTaskItem( itemSpec: "SdkReference1", metadata: new Dictionary <string, string> { { MetadataKeys.Version, "2.0.1" } }); var sdkReference2 = new MockTaskItem( itemSpec: "SdkReference2", metadata: new Dictionary <string, string> { { MetadataKeys.Version, "1.0.1" } }); var packageReference1 = new MockTaskItem( itemSpec: "PackageReference1", metadata: new Dictionary <string, string> { { MetadataKeys.IsImplicitlyDefined, "True" }, { MetadataKeys.SDKPackageItemSpec, "" }, { MetadataKeys.Name, "PackageReference1" } }); var packageReference2 = new MockTaskItem( itemSpec: "PackageReference2", metadata: new Dictionary <string, string> { { MetadataKeys.IsImplicitlyDefined, "aaa" }, { MetadataKeys.Version, "3.0.1" } }); var packageReference3 = new MockTaskItem( itemSpec: "PackageReference3", metadata: new Dictionary <string, string> { { MetadataKeys.IsImplicitlyDefined, "False" }, { MetadataKeys.Version, "1.0.1" } }); var defaultImplicitPackage1 = new MockTaskItem( itemSpec: "DefaultImplicitPackage1", metadata: new Dictionary <string, string> { { MetadataKeys.SDKPackageItemSpec, "" }, { MetadataKeys.Name, "DefaultImplicitPackage1" } }); var task = new CollectSDKReferencesDesignTime(); task.SdkReferences = new[] { sdkReference1, sdkReference2 }; task.PackageReferences = new ITaskItem[] { packageReference1, packageReference2, packageReference3, defaultImplicitPackage1 }; task.DefaultImplicitPackages = "DefaultImplicitPackage1;SomeOtherImplicitPackage"; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.SDKReferencesDesignTime.Count().Should().Be(4); VerifyTaskItem(sdkReference1, task.SDKReferencesDesignTime[0]); VerifyTaskItem(sdkReference2, task.SDKReferencesDesignTime[1]); VerifyTaskItem(packageReference1, task.SDKReferencesDesignTime[2]); VerifyTaskItem(defaultImplicitPackage1, task.SDKReferencesDesignTime[3]); }
public void ItShouldCombineSdkReferencesWithImplicitPackageReferences() { // Arrange var sdkReference1 = new MockTaskItem( itemSpec: "SdkReference1", metadata: new Dictionary <string, string> { { MetadataKeys.Version, "2.0.1" } }); var sdkReference2 = new MockTaskItem( itemSpec: "SdkReference2", metadata: new Dictionary <string, string> { { MetadataKeys.Version, "1.0.1" } }); var packageReference1 = new MockTaskItem( itemSpec: "tfm1/PackageReference1/3.0.1", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Package" }, { MetadataKeys.IsTopLevelDependency, "True" }, { MetadataKeys.IsImplicitlyDefined, "True" }, { MetadataKeys.SDKPackageItemSpec, "tfm1/PackageReference1/3.0.1" }, { MetadataKeys.Name, "PackageReference1" }, { MetadataKeys.OriginalItemSpec, "PackageReference1" }, { MetadataKeys.Path, @"x:\folder\subfolder" }, { MetadataKeys.Version, @"3.0.1" } }); var packageReference1_otherTFM = new MockTaskItem( itemSpec: "tfm2/PackageReference1/3.0.1", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Package" }, { MetadataKeys.IsTopLevelDependency, "True" }, { MetadataKeys.IsImplicitlyDefined, "True" }, { MetadataKeys.SDKPackageItemSpec, "tfm2/PackageReference1/3.0.1" }, { MetadataKeys.Name, "PackageReference1" }, { MetadataKeys.OriginalItemSpec, "PackageReference1" }, { MetadataKeys.Path, @"x:\folder\subfolder\tfm2" } }); var packageReference_Target = new MockTaskItem( itemSpec: "packageReference_Target", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Target" }, { MetadataKeys.IsTopLevelDependency, "True" }, { MetadataKeys.IsImplicitlyDefined, "True" }, { MetadataKeys.Name, "packageReference_Target" } }); var packageReference_Unknown = new MockTaskItem( itemSpec: "packageReference_Unknown", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Xxx" }, { MetadataKeys.IsTopLevelDependency, "True" }, { MetadataKeys.IsImplicitlyDefined, "True" }, { MetadataKeys.Name, "packageReference_Unknown" } }); var packageReference_NotTopLevel = new MockTaskItem( itemSpec: "packageReference_NotTopLevel", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Package" }, { MetadataKeys.IsTopLevelDependency, "False" }, { MetadataKeys.IsImplicitlyDefined, "True" }, { MetadataKeys.Name, "packageReference_NotTopLevel" } }); var packageReference_NotTopLevel2 = new MockTaskItem( itemSpec: "packageReference_NotTopLevel2", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Package" }, { MetadataKeys.IsTopLevelDependency, "xxxx" }, { MetadataKeys.IsImplicitlyDefined, "True" }, { MetadataKeys.Name, "packageReference_NotTopLevel2" } }); var packageReference_NotImplicit = new MockTaskItem( itemSpec: "packageReference_NotImplicit", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Package" }, { MetadataKeys.IsTopLevelDependency, "True" }, { MetadataKeys.IsImplicitlyDefined, "False" }, { MetadataKeys.Name, "packageReference_NotImplicit" } }); var packageReference_NotImplicit2 = new MockTaskItem( itemSpec: "packageReference_NotImplicit2", metadata: new Dictionary <string, string> { { MetadataKeys.Type, "Package" }, { MetadataKeys.IsTopLevelDependency, "True" }, { MetadataKeys.IsImplicitlyDefined, "Xxxx" }, { MetadataKeys.Name, "packageReference_NotImplicit2" } }); var task = new CollectResolvedSDKReferencesDesignTime(); task.ResolvedSdkReferences = new[] { sdkReference1, sdkReference2 }; task.DependenciesDesignTime = new ITaskItem[] { packageReference1, packageReference1_otherTFM, packageReference_Target, packageReference_Unknown, packageReference_NotTopLevel, packageReference_NotTopLevel2, packageReference_NotImplicit, packageReference_NotImplicit2 }; // Act var result = task.Execute(); // Assert result.Should().BeTrue(); task.ResolvedSDKReferencesDesignTime.Count().Should().Be(3); VerifyTaskItem(sdkReference1, task.ResolvedSDKReferencesDesignTime[0]); VerifyTaskItem(sdkReference2, task.ResolvedSDKReferencesDesignTime[1]); var path = packageReference1.GetMetadata(MetadataKeys.Path); packageReference1.RemoveMetadata(MetadataKeys.Path); packageReference1.SetMetadata(MetadataKeys.SDKRootFolder, path); VerifyTaskItem(packageReference1, task.ResolvedSDKReferencesDesignTime[2], "PackageReference1"); }