aspnetcore/test/Microsoft.Extensions.Projec.../DotNet/DotNetDependencyProviderTes...

89 lines
3.2 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.IO;
using System.Linq;
using Microsoft.DotNet.Cli.Utils;
using Microsoft.DotNet.ProjectModel;
using Xunit;
using Xunit.Abstractions;
namespace Microsoft.Extensions.ProjectModel.DotNet
{
public class DotNetDependencyProviderTests
{
private const string projectJson = @"
{
""buildOptions"": {
},
""dependencies"": {
""Microsoft.AspNetCore.Mvc"": ""1.0.0-*"",
},
""frameworks"": {
""netcoreapp1.0"": {
""dependencies"": {
""Microsoft.NETCore.App"": {
""version"": ""1.0.0"",
""type"": ""platform""
}
}
}
},
}
";
private readonly ITestOutputHelper _output;
public DotNetDependencyProviderTests(ITestOutputHelper output)
{
_output = output;
}
[Fact]
public void BuildProjectDependencies()
{
using (var fileProvider = new TemporaryFileProvider())
{
Directory.CreateDirectory(Path.Combine(fileProvider.Root, "demo"));
fileProvider.Add($"demo{Path.DirectorySeparatorChar}project.json", projectJson);
fileProvider.Add($"demo{Path.DirectorySeparatorChar}First.cs", "namespace demo { class First{} }");
var muxer = new Muxer().MuxerPath;
var result = Command
.Create(muxer, new[] { "restore", Path.Combine(fileProvider.Root, "demo") })
.OnErrorLine(l => _output.WriteLine(l))
.OnOutputLine(l => _output.WriteLine(l))
.Execute();
Assert.Equal(0, result.ExitCode);
var oldContext = ProjectContext
.CreateContextForEachFramework(Path.Combine(fileProvider.Root, "demo", "project.json"))
.First();
var context = new DotNetProjectContext(oldContext, "Debug", Path.Combine(fileProvider.Root, "demo", "bin"));
var home = Environment.GetEnvironmentVariable("USERPROFILE")
?? Environment.GetEnvironmentVariable("HOME");
var nugetPackageRoot = Path.Combine(home, ".nuget", "packages");
var expectedPackagePath = Path.Combine(nugetPackageRoot, "Microsoft.AspNetCore.Mvc", "1.0.0");
var expectedReferencePath = Path.Combine(expectedPackagePath, "lib", "netstandard1.6", "Microsoft.AspNetCore.Mvc.dll");
var assembly = context
.CompilationAssemblies
.Where(asm => asm.Name.Equals("Microsoft.AspNetCore.Mvc", StringComparison.OrdinalIgnoreCase))
.First();
Assert.Equal(expectedReferencePath, assembly.ResolvedPath);
var mvcPackage = context
.PackageDependencies
.Where(package => package.Name.Equals("Microsoft.AspNetCore.Mvc", StringComparison.OrdinalIgnoreCase))
.First();
Assert.Equal(expectedPackagePath, mvcPackage.Path);
}
}
}
}