public void SkipsNonReferenceAssembly()
        {
            var resolver = new ReferenceAssemblyPathResolver();
            var library  = F.Create(
                F.PackageType);

            var result = resolver.TryResolveAssemblyPaths(library, null);

            result.Should().BeFalse();
        }
示例#2
0
        public void SkipsNonPackage()
        {
            var resolver = new PackageCacheCompilationAssemblyResolver();
            var library  = F.Create(
                F.PackageType,
                assemblies: F.EmptyAssemblies);

            var result = resolver.TryResolveAssemblyPaths(library, null);

            result.Should().BeFalse();
        }
示例#3
0
        public void FailsOnInvalidHash(string hash)
        {
            var resolver = new PackageCacheCompilationAssemblyResolver(FileSystemMockBuilder.Empty, CachePath);
            var library  = F.Create(hash: hash);

            var exception = Assert.Throws <InvalidOperationException>(() => resolver.TryResolveAssemblyPaths(library, null));

            exception.Message.Should()
            .Contain(library.Hash)
            .And.Contain(library.Name);
        }
        public void ChecksForFileNameInFallbackLocation()
        {
            var fileSystem = FileSystemMockBuilder.Create()
                             .AddFiles(ReferencePath, F.DefaultAssembly)
                             .Build();

            var library    = F.Create(libraryType: F.ReferenceAssemblyType);
            var assemblies = new List <string>();

            var resolver = new ReferenceAssemblyPathResolver(fileSystem, null, new string[] { ReferencePath });
            var result   = resolver.TryResolveAssemblyPaths(library, assemblies);

            result.Should().BeTrue();
            assemblies.Should().Contain(Path.Combine(ReferencePath, F.DefaultAssembly));
        }
示例#5
0
        public void FailsWhenOneOfAssembliesNotFound()
        {
            var packagePath = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion);
            var fileSystem  = FileSystemMockBuilder.Create()
                              .AddFiles(packagePath, F.DefaultAssemblyPath)
                              .Build();
            var library = F.Create(assemblies: F.TwoAssemblies);

            var resolver   = new PackageCompilationAssemblyResolver(fileSystem, new string[] { PackagesPath });
            var assemblies = new List <string>();

            resolver.TryResolveAssemblyPaths(library, assemblies)
            .Should().BeFalse();

            assemblies.Should().BeEmpty();
        }
        public void ShouldResolveAll()
        {
            var fileSystem = FileSystemMockBuilder.Create()
                             .AddFiles(ReferencePath, F.DefaultAssembly)
                             .Build();

            var library    = F.Create(libraryType: F.ReferenceAssemblyType, assemblies: F.TwoAssemblies);
            var assemblies = new List <string>();

            var resolver = new ReferenceAssemblyPathResolver(fileSystem, null, new string[] { ReferencePath });

            var exception = Assert.Throws <InvalidOperationException>(() => resolver.TryResolveAssemblyPaths(library, assemblies));

            exception.Message.Should()
            .Contain(F.SecondAssemblyPath)
            .And.Contain(library.Name);
        }
示例#7
0
        public void FailsWhenOneOfAssembliesNotFound()
        {
            var packagePath = Path.Combine(PackagesPath, F.DefaultPackageName, F.DefaultVersion);
            var fileSystem  = FileSystemMockBuilder.Create()
                              .AddFiles(packagePath, F.DefaultAssemblyPath)
                              .Build();
            var library = F.Create(assemblies: F.TwoAssemblies);

            var resolver   = new PackageCompilationAssemblyResolver(fileSystem, PackagesPath);
            var assemblies = new List <string>();

            var exception = Assert.Throws <InvalidOperationException>(() => resolver.TryResolveAssemblyPaths(library, assemblies));

            exception.Message.Should()
            .Contain(F.SecondAssemblyPath)
            .And.Contain(library.Name);
        }
示例#8
0
        public void ResolvesAllAssemblies()
        {
            var packagePath = Path.Combine(PackagesPath, F.DefaultPackageName, F.DefaultVersion);
            var fileSystem  = FileSystemMockBuilder.Create()
                              .AddFiles(packagePath, F.TwoAssemblies)
                              .Build();
            var library = F.Create(assemblies: F.TwoAssemblies);

            var resolver   = new PackageCompilationAssemblyResolver(fileSystem, PackagesPath);
            var assemblies = new List <string>();

            var result = resolver.TryResolveAssemblyPaths(library, assemblies);

            assemblies.Should().HaveCount(2);
            assemblies.Should().Contain(Path.Combine(packagePath, F.DefaultAssemblyPath));
            assemblies.Should().Contain(Path.Combine(packagePath, F.SecondAssemblyPath));
        }
示例#9
0
        public void ChecksHashFile()
        {
            var packagePath = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion);
            var fileSystem  = FileSystemMockBuilder.Create()
                              .AddFile(
                GetHashFilePath(packagePath),
                "WRONGHASH"
                )
                              .AddFiles(packagePath, F.DefaultAssemblies)
                              .Build();

            var resolver   = new PackageCacheCompilationAssemblyResolver(fileSystem, CachePath);
            var assemblies = new List <string>();

            var result = resolver.TryResolveAssemblyPaths(F.Create(), assemblies);

            result.Should().BeFalse();
        }
示例#10
0
        public void ChecksHashFile()
        {
            var packagePath = Path.Combine(CachePath, F.DefaultPackageName, F.DefaultVersion);
            var fileSystem  = FileSystemMockBuilder.Create()
                              .AddFile(
                Path.Combine(packagePath, $"{F.DefaultPackageName}.{F.DefaultVersion}.nupkg.{F.DefaultHashAlgoritm}"),
                "WRONGHASH"
                )
                              .AddFiles(packagePath, F.DefaultAssemblies)
                              .Build();

            var resolver   = new PackageCacheCompilationAssemblyResolver(fileSystem, CachePath);
            var assemblies = new List <string>();

            var result = resolver.TryResolveAssemblyPaths(F.Create(), assemblies);

            result.Should().BeFalse();
        }
示例#11
0
        public void KeepsLookingWhenOneOfAssembliesNotFound()
        {
            var packagePath1 = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion);
            var secondPath   = "secondPath";
            var packagePath2 = GetPackagesPath(secondPath, F.DefaultPackageName, F.DefaultVersion);
            var fileSystem   = FileSystemMockBuilder.Create()
                               .AddFiles(packagePath1, F.DefaultAssemblyPath)
                               .AddFiles(packagePath2, F.DefaultAssemblyPath, F.SecondAssemblyPath)
                               .Build();
            var library = F.Create(assemblies: F.TwoAssemblies);

            var resolver   = new PackageCompilationAssemblyResolver(fileSystem, new string[] { PackagesPath, secondPath });
            var assemblies = new List <string>();

            resolver.TryResolveAssemblyPaths(library, assemblies)
            .Should().BeTrue();

            assemblies.Should().HaveCount(2);
            assemblies.Should().Contain(Path.Combine(packagePath2, F.DefaultAssemblyPath));
            assemblies.Should().Contain(Path.Combine(packagePath2, F.SecondAssemblyPath));
        }
        public void UsesPathProperty()
        {
            var testPathValue = "NotPackageId";
            var packagePath   = Path.Combine(CachePath, testPathValue);
            var fileSystem    = FileSystemMockBuilder.Create()
                                .AddFile(
                GetHashFilePath(packagePath),
                F.DefaultHashValue
                )
                                .AddFiles(packagePath, F.TwoAssemblies)
                                .Build();

            var library = F.Create(assemblies: F.TwoAssemblies, path: testPathValue);

            var resolver   = new PackageCacheCompilationAssemblyResolver(fileSystem, CachePath);
            var assemblies = new List <string>();

            var result = resolver.TryResolveAssemblyPaths(library, assemblies);

            result.Should().BeTrue();
            assemblies.Should().HaveCount(2);
            assemblies.Should().Contain(Path.Combine(packagePath, F.DefaultAssemblyPath));
            assemblies.Should().Contain(Path.Combine(packagePath, F.SecondAssemblyPath));
        }
        public void UsesHashPathProperty()
        {
            var hashFileName = "myFunkyHashPath.sha29";
            var packagePath  = GetPackagesPath(F.DefaultPackageName, F.DefaultVersion);
            var fileSystem   = FileSystemMockBuilder.Create()
                               .AddFile(
                Path.Combine(packagePath, hashFileName),
                F.DefaultHashValue
                )
                               .AddFiles(packagePath, F.TwoAssemblies)
                               .Build();

            var library = F.Create(assemblies: F.TwoAssemblies, hashPath: hashFileName);

            var resolver   = new PackageCacheCompilationAssemblyResolver(fileSystem, CachePath);
            var assemblies = new List <string>();

            var result = resolver.TryResolveAssemblyPaths(library, assemblies);

            result.Should().BeTrue();
            assemblies.Should().HaveCount(2);
            assemblies.Should().Contain(Path.Combine(packagePath, F.DefaultAssemblyPath));
            assemblies.Should().Contain(Path.Combine(packagePath, F.SecondAssemblyPath));
        }