Merge pull request #2329 from natemcmaster/namc/dep-context

Fix bug in dependency context adding assets to wrong groups
This commit is contained in:
Pavel Krymets 2016-04-07 09:57:33 -07:00
commit a1d4641b8e
2 changed files with 39 additions and 2 deletions

View file

@ -195,7 +195,8 @@ namespace Microsoft.Extensions.DependencyModel
var nativeLibraryGroups = new List<RuntimeAssetGroup>();
foreach (var ridGroup in entries.GroupBy(e => e.Rid))
{
var groupRuntimeAssemblies = entries.Where(e => e.Type == DependencyContextStrings.RuntimeAssetType)
var groupRuntimeAssemblies = ridGroup
.Where(e => e.Type == DependencyContextStrings.RuntimeAssetType)
.Select(e => e.Path)
.ToArray();
@ -206,7 +207,8 @@ namespace Microsoft.Extensions.DependencyModel
groupRuntimeAssemblies.Where(a => Path.GetFileName(a) != "_._")));
}
var groupNativeLibraries = entries.Where(e => e.Type == DependencyContextStrings.NativeAssetType)
var groupNativeLibraries = ridGroup
.Where(e => e.Type == DependencyContextStrings.NativeAssetType)
.Select(e => e.Path)
.ToArray();

View file

@ -37,6 +37,41 @@ namespace Microsoft.Extensions.DependencyModel.Tests
context.Target.Runtime.Should().Be("osx.10.10-x64");
}
[Fact]
public void GroupsRuntimeAssets()
{
var context = Read(@"
{
""targets"": {
"".NETStandard,Version=v1.5"": {
""System.Banana/1.0.0"": {
""runtimeTargets"": {
""runtimes/unix/Banana.dll"": { ""rid"": ""unix"", ""assetType"": ""runtime"" },
""runtimes/win7/Banana.dll"": { ""rid"": ""win7"", ""assetType"": ""runtime"" },
""runtimes/native/win7/Apple.dll"": { ""rid"": ""win7"", ""assetType"": ""native"" },
""runtimes/native/unix/libapple.so"": { ""rid"": ""unix"", ""assetType"": ""native"" }
}
}
}
},
""libraries"": {
""System.Banana/1.0.0"": {
""type"": ""package"",
""serviceable"": false,
""sha512"": ""HASH-System.Banana""
},
}
}");
context.RuntimeLibraries.Should().HaveCount(1);
var runtimeLib = context.RuntimeLibraries.Single();
runtimeLib.RuntimeAssemblyGroups.Should().HaveCount(2);
runtimeLib.RuntimeAssemblyGroups.All(g => g.AssetPaths.Count == 1).Should().BeTrue();
runtimeLib.NativeLibraryGroups.Should().HaveCount(2);
runtimeLib.NativeLibraryGroups.All(g => g.AssetPaths.Count == 1).Should().BeTrue();
}
[Fact]
public void SetsPortableIfRuntimeTargetHasNoRid()
{