Fix tests

This commit is contained in:
Pavel Krymets 2016-03-04 15:05:29 -08:00
parent 1d7cff48d4
commit 1658a40806
4 changed files with 42 additions and 53 deletions

View file

@ -30,8 +30,10 @@ namespace Microsoft.Extensions.DependencyModel
{
var runtime = string.Empty;
var target = string.Empty;
var isPortable = true;
var runtimeTargetName = root[DependencyContextStrings.RuntimeTargetPropertyName]?.Value<string>();
var runtimeTargetInfo = ReadRuntimeTargetInfo(root);
var libraryStubs = ReadLibraryStubs((JObject) root[DependencyContextStrings.LibrariesPropertyName]);
var targetsObject = (JObject) root[DependencyContextStrings.TargetsPropertyName];
@ -45,18 +47,19 @@ namespace Microsoft.Extensions.DependencyModel
compileTarget = (JObject)compileTargetProperty.Value;
target = compileTargetProperty.Name;
if (!string.IsNullOrEmpty(runtimeTargetInfo.Name))
if (!string.IsNullOrEmpty(runtimeTargetName))
{
runtimeTarget = (JObject) targetsObject[runtimeTargetInfo.Name];
runtimeTarget = (JObject) targetsObject[runtimeTargetName];
if (runtimeTarget == null)
{
throw new FormatException($"Target with name {runtimeTargetInfo.Name} not found");
throw new FormatException($"Target with name {runtimeTargetName} not found");
}
var seperatorIndex = runtimeTargetInfo.Name.IndexOf(DependencyContextStrings.VersionSeperator);
if (seperatorIndex > -1 && seperatorIndex < runtimeTargetInfo.Name.Length)
var seperatorIndex = runtimeTargetName.IndexOf(DependencyContextStrings.VersionSeperator);
if (seperatorIndex > -1 && seperatorIndex < runtimeTargetName.Length)
{
runtime = runtimeTargetInfo.Name.Substring(seperatorIndex + 1);
runtime = runtimeTargetName.Substring(seperatorIndex + 1);
isPortable = false;
}
}
else
@ -68,7 +71,7 @@ namespace Microsoft.Extensions.DependencyModel
return new DependencyContext(
target,
runtime,
runtimeTargetInfo.Portable,
isPortable,
ReadCompilationOptions((JObject)root[DependencyContextStrings.CompilationOptionsPropertName]),
ReadLibraries(compileTarget, false, libraryStubs).Cast<CompilationLibrary>().ToArray(),
ReadLibraries(runtimeTarget, true, libraryStubs).Cast<RuntimeLibrary>().ToArray(),
@ -91,24 +94,6 @@ namespace Microsoft.Extensions.DependencyModel
}
}
private RuntimeTargetInfo ReadRuntimeTargetInfo(JObject root)
{
var runtimeTarget = (JObject)root[DependencyContextStrings.RuntimeTargetPropertyName];
if (runtimeTarget != null)
{
return new RuntimeTargetInfo()
{
Name = runtimeTarget[DependencyContextStrings.RuntimeTargetNamePropertyName]?.Value<string>(),
Portable = runtimeTarget[DependencyContextStrings.PortablePropertyName]?.Value<bool>() == true
};
}
return new RuntimeTargetInfo()
{
Portable = true
};
}
private CompilationOptions ReadCompilationOptions(JObject compilationOptionsObject)
{
if (compilationOptionsObject == null)
@ -268,13 +253,6 @@ namespace Microsoft.Extensions.DependencyModel
public string Rid;
}
private struct RuntimeTargetInfo
{
public string Name;
public bool Portable;
}
private struct LibraryStub
{
public string Name;

View file

@ -36,16 +36,11 @@ namespace Microsoft.Extensions.DependencyModel
);
}
private JObject WriteRuntimeTargetInfo(DependencyContext context)
private string WriteRuntimeTargetInfo(DependencyContext context)
{
var target = context.IsPortable?
return context.IsPortable?
context.TargetFramework :
context.TargetFramework + DependencyContextStrings.VersionSeperator + context.Runtime;
return new JObject(
new JProperty(DependencyContextStrings.RuntimeTargetNamePropertyName, target),
new JProperty(DependencyContextStrings.PortablePropertyName, context.IsPortable)
);
}
private JObject WriteRuntimeGraph(DependencyContext context)

View file

@ -24,10 +24,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests
{
var context = Read(
@"{
""runtimeTarget"": {
""portable"": false,
""name"": "".NETStandardApp,Version=v1.5/osx.10.10-x64"",
},
""runtimeTarget"": "".NETStandardApp,Version=v1.5/osx.10.10-x64"",
""targets"": {
"".NETStandardApp,Version=v1.5"": {},
"".NETStandardApp,Version=v1.5/osx.10.10-x64"": {},
@ -47,6 +44,32 @@ namespace Microsoft.Extensions.DependencyModel.Tests
context.IsPortable.Should().BeTrue();
}
[Fact]
public void SetsPortableIfRuntimeTargetHasNoRid()
{
var context = Read(
@"{
""runtimeTarget"": "".NETStandardApp,Version=v1.5"",
""targets"": {
"".NETStandardApp,Version=v1.5"": {}
}
}");
context.IsPortable.Should().BeTrue();
}
[Fact]
public void SetsNotPortableIfRuntimeTargetHasRid()
{
var context = Read(
@"{
""runtimeTarget"": "".NETStandardApp,Version=v1.5/osx.10.10-x64""
""targets"": {
"".NETStandardApp,Version=v1.5/osx.10.10-x64"": {}
}
}");
context.IsPortable.Should().BeTrue();
}
[Fact]
public void ReadsMainTarget()
{

View file

@ -86,14 +86,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests
false)
);
var runtimeTarget = result.Should().HaveProperty("runtimeTarget")
.Subject.Should().BeOfType<JObject>().Subject;
runtimeTarget.Should().HaveProperty("name")
.Subject.Value<string>().Should().Be("Target/runtime");
runtimeTarget.Should().HaveProperty("portable")
.Subject.Value<bool>().Should().Be(false);
result.Should().HavePropertyValue("runtimeTarget", "Target/runtime");
}
[Fact]
@ -169,7 +162,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests
"HASH",
new [] { RuntimeAssembly.Create("Banana.dll")},
new []
{Lock
{
new RuntimeTarget("win7-x64",
new [] { RuntimeAssembly.Create("Banana.Win7-x64.dll") },
new [] { "Banana.Win7-x64.so" }