Merge pull request #1465 from dotnet/pakrym/app-local-logic
Change app local resolution logic to require refs folder for packages and referenceassemblies
This commit is contained in:
commit
bd94c19d2e
2 changed files with 69 additions and 8 deletions
|
@ -37,21 +37,29 @@ namespace Microsoft.Extensions.DependencyModel.Resolution
|
||||||
|
|
||||||
public bool TryResolveAssemblyPaths(CompilationLibrary library, List<string> assemblies)
|
public bool TryResolveAssemblyPaths(CompilationLibrary library, List<string> assemblies)
|
||||||
{
|
{
|
||||||
if (!string.Equals(library.LibraryType, "package", StringComparison.OrdinalIgnoreCase) &&
|
var isProject = string.Equals(library.LibraryType, "project", StringComparison.OrdinalIgnoreCase);
|
||||||
!string.Equals(library.LibraryType, "project", StringComparison.OrdinalIgnoreCase) &&
|
|
||||||
|
if (!isProject &&
|
||||||
|
!string.Equals(library.LibraryType, "package", StringComparison.OrdinalIgnoreCase) &&
|
||||||
!string.Equals(library.LibraryType, "referenceassembly", StringComparison.OrdinalIgnoreCase))
|
!string.Equals(library.LibraryType, "referenceassembly", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var refsPath = Path.Combine(_basePath, "refs");
|
||||||
|
var hasRefs = _fileSystem.Directory.Exists(refsPath);
|
||||||
|
|
||||||
|
// Resolving packages and reference assebmlies requires refs folder to exist
|
||||||
|
if (!isProject && !hasRefs)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
var directories = new List<string>()
|
var directories = new List<string>()
|
||||||
{
|
{
|
||||||
_basePath
|
_basePath
|
||||||
};
|
};
|
||||||
|
|
||||||
var refsPath = Path.Combine(_basePath, "refs");
|
|
||||||
var hasRefs = _fileSystem.Directory.Exists(refsPath);
|
|
||||||
|
|
||||||
if (hasRefs)
|
if (hasRefs)
|
||||||
{
|
{
|
||||||
directories.Insert(0, refsPath);
|
directories.Insert(0, refsPath);
|
||||||
|
|
|
@ -21,7 +21,11 @@ namespace Microsoft.Extensions.DependencyModel.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ResolvesProjectType()
|
public void ResolvesProjectType()
|
||||||
{
|
{
|
||||||
var resolver = new AppBaseCompilationAssemblyResolver();
|
var fileSystem = FileSystemMockBuilder
|
||||||
|
.Create()
|
||||||
|
.AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly)
|
||||||
|
.Build();
|
||||||
|
var resolver = new AppBaseCompilationAssemblyResolver(fileSystem, BasePath);
|
||||||
var library = TestLibraryFactory.Create(
|
var library = TestLibraryFactory.Create(
|
||||||
TestLibraryFactory.ProjectType,
|
TestLibraryFactory.ProjectType,
|
||||||
assemblies: TestLibraryFactory.EmptyAssemblies);
|
assemblies: TestLibraryFactory.EmptyAssemblies);
|
||||||
|
@ -34,7 +38,11 @@ namespace Microsoft.Extensions.DependencyModel.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ResolvesPackageType()
|
public void ResolvesPackageType()
|
||||||
{
|
{
|
||||||
var resolver = new AppBaseCompilationAssemblyResolver();
|
var fileSystem = FileSystemMockBuilder
|
||||||
|
.Create()
|
||||||
|
.AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly)
|
||||||
|
.Build();
|
||||||
|
var resolver = new AppBaseCompilationAssemblyResolver(fileSystem, BasePath);
|
||||||
var library = TestLibraryFactory.Create(
|
var library = TestLibraryFactory.Create(
|
||||||
TestLibraryFactory.PackageType,
|
TestLibraryFactory.PackageType,
|
||||||
assemblies: TestLibraryFactory.EmptyAssemblies);
|
assemblies: TestLibraryFactory.EmptyAssemblies);
|
||||||
|
@ -47,7 +55,11 @@ namespace Microsoft.Extensions.DependencyModel.Tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ResolvesReferenceAssemblyType()
|
public void ResolvesReferenceAssemblyType()
|
||||||
{
|
{
|
||||||
var resolver = new AppBaseCompilationAssemblyResolver();
|
var fileSystem = FileSystemMockBuilder
|
||||||
|
.Create()
|
||||||
|
.AddFiles(BasePathRefs, TestLibraryFactory.DefaultAssembly)
|
||||||
|
.Build();
|
||||||
|
var resolver = new AppBaseCompilationAssemblyResolver(fileSystem, BasePath);
|
||||||
var library = TestLibraryFactory.Create(
|
var library = TestLibraryFactory.Create(
|
||||||
TestLibraryFactory.ReferenceAssemblyType,
|
TestLibraryFactory.ReferenceAssemblyType,
|
||||||
assemblies: TestLibraryFactory.EmptyAssemblies);
|
assemblies: TestLibraryFactory.EmptyAssemblies);
|
||||||
|
@ -57,6 +69,46 @@ namespace Microsoft.Extensions.DependencyModel.Tests
|
||||||
Assert.True(result);
|
Assert.True(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void RequiresExistingRefsFolderForNonProjects()
|
||||||
|
{
|
||||||
|
var fileSystem = FileSystemMockBuilder
|
||||||
|
.Create()
|
||||||
|
.AddFiles(BasePath, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly)
|
||||||
|
.Build();
|
||||||
|
var library = TestLibraryFactory.Create(
|
||||||
|
TestLibraryFactory.ReferenceAssemblyType,
|
||||||
|
assemblies: TestLibraryFactory.TwoAssemblies);
|
||||||
|
var resolver = new AppBaseCompilationAssemblyResolver(fileSystem, BasePath);
|
||||||
|
var assemblies = new List<string>();
|
||||||
|
|
||||||
|
var result = resolver.TryResolveAssemblyPaths(library, assemblies);
|
||||||
|
|
||||||
|
Assert.False(result);
|
||||||
|
assemblies.Should().HaveCount(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ResolvesProjectWithoutRefsFolder()
|
||||||
|
{
|
||||||
|
var fileSystem = FileSystemMockBuilder
|
||||||
|
.Create()
|
||||||
|
.AddFiles(BasePath, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly)
|
||||||
|
.Build();
|
||||||
|
var library = TestLibraryFactory.Create(
|
||||||
|
TestLibraryFactory.ProjectType,
|
||||||
|
assemblies: TestLibraryFactory.TwoAssemblies);
|
||||||
|
var resolver = new AppBaseCompilationAssemblyResolver(fileSystem, BasePath);
|
||||||
|
var assemblies = new List<string>();
|
||||||
|
|
||||||
|
var result = resolver.TryResolveAssemblyPaths(library, assemblies);
|
||||||
|
|
||||||
|
Assert.True(result);
|
||||||
|
assemblies.Should().HaveCount(2);
|
||||||
|
assemblies.Should().Contain(Path.Combine(BasePath, TestLibraryFactory.DefaultAssembly));
|
||||||
|
assemblies.Should().Contain(Path.Combine(BasePath, TestLibraryFactory.SecondAssembly));
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void RequiresAllLibrariesToExist()
|
public void RequiresAllLibrariesToExist()
|
||||||
{
|
{
|
||||||
|
@ -84,6 +136,7 @@ namespace Microsoft.Extensions.DependencyModel.Tests
|
||||||
var fileSystem = FileSystemMockBuilder
|
var fileSystem = FileSystemMockBuilder
|
||||||
.Create()
|
.Create()
|
||||||
.AddFiles(BasePath, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly)
|
.AddFiles(BasePath, TestLibraryFactory.DefaultAssembly, TestLibraryFactory.SecondAssembly)
|
||||||
|
.AddFiles(BasePathRefs, "Dummy.dll")
|
||||||
.Build();
|
.Build();
|
||||||
var library = TestLibraryFactory.Create(
|
var library = TestLibraryFactory.Create(
|
||||||
TestLibraryFactory.ReferenceAssemblyType,
|
TestLibraryFactory.ReferenceAssemblyType,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue