public void GivenPackagesWithFrameworkReferences_FrameworkReferencesAreResolved()
        {
            PackageAssemblyResolver assemblyResolver = CreateResolver();

            Assert.Contains <string>("System.Net.Http", assemblyResolver.AssemblyReferences);
            Assert.Contains <string>("System.Net.Http.WebRequest", assemblyResolver.AssemblyReferences);
        }
示例#2
0
            public void WhenManyPackagesAreMatchedAllNonMatchingDllsShouldBeExcluded()
            {
                _package.Setup(
                    i =>
                    i.GetCompatibleDlls(
                        It.Is <FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName)))
                .Returns(new List <string> {
                    "test.dll"
                });
                _packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40"), new Version("3.0")));

                var p = new Mock <IPackageObject>();

                p.Setup(i => i.GetCompatibleDlls(It.IsAny <FrameworkName>()))
                .Returns(new List <string> {
                    "test3.dll"
                });
                p.SetupGet(i => i.Id).Returns("testId2");
                p.SetupGet(i => i.Version).Returns(new Version("3.0"));
                p.SetupGet(i => i.TextVersion).Returns("3.0");
                p.SetupGet(i => i.FullName).Returns(_package.Object.Id + "." + _package.Object.Version);

                _packageContainer.Setup(i => i.FindPackage(It.IsAny <string>(), It.Is <IPackageReference>(x => x.PackageId == "testId2"))).Returns(p.Object);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(2);
            }
        private static void RefreshAssemblies(ILog log)
        {
            var fileSystem = new FileSystem();

            var packagesFolder = Path.Combine(fileSystem.CurrentDirectory, "packages");

            if (fileSystem.DirectoryExists(packagesFolder))
            {
                // Delete any blacklisted packages to avoid various issues with PackageAssemblyResolver
                // https://github.com/scriptcs/scriptcs/issues/511
                foreach (var packagePath in
                         _blacklistedPackages.SelectMany(packageName => Directory.GetDirectories(packagesFolder)
                                                         .Where(d => new DirectoryInfo(d).Name.StartsWith(packageName, StringComparison.InvariantCultureIgnoreCase)),
                                                         (packageName, packagePath) => new { packageName, packagePath })
                         .Where(t => fileSystem.DirectoryExists(t.packagePath))
                         .Select(t => @t.packagePath))
                {
                    fileSystem.DeleteDirectory(packagePath);
                }
            }

            var par = new PackageAssemblyResolver(fileSystem, new PackageContainer(fileSystem, log), log);

            _assemblies = par.GetAssemblyNames(fileSystem.CurrentDirectory).ToList();

            // Add the assemblies in the current directory
            _assemblies.AddRange(Directory.GetFiles(fileSystem.CurrentDirectory, "*.dll")
                                 .Where(a => new AssemblyUtility().IsManagedAssembly(a)));
        }
示例#4
0
            public void ShouldNotLoadIncompatibleDependenciesDlls()
            {
                var p = new Mock <IPackageObject>();

                p.Setup(i => i.GetCompatibleDlls(It.IsAny <FrameworkName>()))
                .Returns(new List <string>());
                p.SetupGet(i => i.Id).Returns("p2");
                p.SetupGet(i => i.Version).Returns(new Version("4.0"));
                p.SetupGet(i => i.TextVersion).Returns("4.0");
                p.SetupGet(i => i.FullName).Returns(_package.Object.Id + "." + _package.Object.Version);

                _package.Setup(i => i.Dependencies).Returns(new List <IPackageObject> {
                    p.Object
                });
                _packageContainer.Setup(
                    i => i.FindPackage(It.IsAny <string>(), It.Is <IPackageReference>(x => x.PackageId == "p2")))
                .Returns(p.Object);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                _packageContainer.Verify(i => i.FindPackage(It.IsAny <string>(), It.IsAny <IPackageReference>()), Times.Exactly(2));
                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(2);
            }
示例#5
0
            public void WhenPackagesAreFoundButNoMatchingDllsExistShouldThrowArgumentEx()
            {
                _package.Setup(i => i.GetCompatibleDlls(It.IsAny <FrameworkName>())).Returns <List <string> >(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                Assert.Throws <MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
            }
        public void GivenPackagesWithAssemblyReferences_AssemblyReferencesAreResolved()
        {
            PackageAssemblyResolver assemblyResolver = CreateResolver();

            string nugetHome = PackageManager.GetNugetPackagesPath();

            Assert.Contains <string>(_targetAssemblyFilePath, assemblyResolver.AssemblyReferences);
        }
        public void TryResolveAssembly_WithReferencedAssemblyName_ResolvesAssemblyPathAndReturnsTrue()
        {
            PackageAssemblyResolver assemblyResolver = CreateResolver();

            bool result = assemblyResolver.TryResolveAssembly(this.GetType().Assembly.FullName, out string assemblyPath);

            Assert.True(result);
            Assert.Equal(_targetAssemblyFilePath, assemblyPath);
        }
        public void TryResolveAssembly_WithReferencedFrameworkAssemblyName_ResolvesAssemblyAndReturnsTrue()
        {
            PackageAssemblyResolver assemblyResolver = CreateResolver();

            bool result = assemblyResolver.TryResolveAssembly("System.Net.Http", out string assemblyPath);

            Assert.True(result);
            Assert.Equal("System.Net.Http", assemblyPath);
        }
示例#9
0
            public void WhenDllsAreMatchedDllFilePathsAreCorrectlyConcatenated()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory);

                found.First().ShouldEqual("c:\\test\\packages\\id.3.0\\test.dll");
                found.ElementAt(1).ShouldEqual("c:\\test\\packages\\id.3.0\\test2.dll");
            }
示例#10
0
            public void ShouldReturnEmptyIfPackagesConfigDoesNotExist()
            {
                _fs.Setup(i => i.FileExists(It.IsAny <string>())).Returns(false);

                var resolver = new PackageAssemblyResolver(_fs.Object, _pc.Object);
                var result   = resolver.GetPackages(@"c:/");

                result.ShouldBeEmpty();
            }
示例#11
0
            public void WhenNoPackagesAreFoundShouldThrowArgumentEx()
            {
                _packageContainer.Setup(i => i.FindPackage(It.IsAny <string>(), It.IsAny <IPackageReference>()))
                .Returns <List <IPackageObject> >(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                Assert.Throws <MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
            }
            public void WhenManyPackagesAreMatchedAllMatchingDllsWithUniquePathsShouldBeReturned()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logProvider, _assemblyUtility.Object);
                _packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40"), new Version("3.0")));

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(4);
            }
示例#13
0
            public void WhenPackagesConfigDoesNotExistShouldReturnEmptyPackagesList()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, new Mock <IPackageContainer>().Object);

                _filesystem.Setup(i => i.FileExists(It.IsAny <string>())).Returns(false);

                var found = resolver.GetAssemblyNames(_workingDirectory);

                found.ShouldBeEmpty();
            }
        public void GivenLockFile_PackageReferencesAreResolved()
        {
            PackageAssemblyResolver assemblyResolver = CreateResolver();

            PackageReference package = assemblyResolver.Packages.Single();

            Assert.Equal("Test.Package", package.Name);
            Assert.Equal("1.0.0", package.Version);
            Assert.Equal(1, package.CompileTimeAssemblies.Count);
            Assert.Equal(2, package.FrameworkAssemblies.Count);
        }
            public void WhenDllsAreMatchedDllFilePathsAreCorrectlyConcatenated()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object, _assemblyUtility.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory);

                found.First().ShouldEqual(
                    Path.Combine(_workingDirectory, "packages", "id.3.0", "test.dll"));
                found.ElementAt(1).ShouldEqual(
                    Path.Combine(_workingDirectory, "packages", "id.3.0", "test2.dll"));
            }
示例#16
0
            public void WhenManyPackagesAreMatchedAllMatchingDllsWithUniquePathsShouldBeReturned()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                _packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40"), new Version("3.0")));

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(2);
            }
            public void ShouldIgnoreUnmanagedAssemblies()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object, _assemblyUtility.Object);

                _packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40"), new Version("3.0")));
                _assemblyUtility.Setup(u => u.IsManagedAssembly(It.Is <string>(s => Path.GetFileName(s) == "test.dll"))).Returns(false);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(3);
            }
示例#18
0
            public void ShouldGetReferencesToPackages()
            {
                _fs.Setup(i => i.FileExists(It.IsAny <string>())).Returns(true);
                _pc.Setup(i => i.FindReferences(It.IsAny <string>())).Returns(new List <IPackageReference> {
                    new PackageReference("id", VersionUtility.ParseFrameworkName("net40"), new Version("3.0"))
                });

                var resolver = new PackageAssemblyResolver(_fs.Object, _pc.Object);
                var result   = resolver.GetPackages(@"c:/");

                _pc.Verify(i => i.FindReferences(It.IsAny <string>()), Times.Once());
                result.Count().ShouldEqual(1);
            }
示例#19
0
            public void WhenPackagesAreFoundButNoMatchingDllsExistShouldLogWarning()
            {
                // arrange
                _package.Setup(i => i.GetCompatibleDlls(It.IsAny <FrameworkName>())).Returns <List <string> >(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logProvider, _assemblyUtility.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logProvider.Output.ShouldContain(
                    "WARN: Cannot find compatible binaries for .NETFramework,Version=v4.0 in: testId 3.0");
            }
示例#20
0
            public void WhenNoPackagesAreFoundShouldLogWarning()
            {
                // arrange
                _packageContainer.Setup(i => i.FindPackage(It.IsAny <string>(), It.IsAny <IPackageReference>()))
                .Returns <List <IPackageObject> >(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logProvider, _assemblyUtility.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logProvider.Output.ShouldContain("WARN: Cannot find: testId 3.0");
            }
示例#21
0
        public void GivenPackagesWithFrameworkReferences_FrameworkReferencesAreResolved()
        {
            var functionMetadata = new FunctionMetadata()
            {
                Name       = "TestFunction",
                ScriptFile = _lockFilePath, /*We just need the path from this*/
                ScriptType = ScriptType.CSharp
            };

            var assemblyResolver = new PackageAssemblyResolver(functionMetadata);

            Assert.Contains <string>("System.Net.Http", assemblyResolver.AssemblyReferences);
            Assert.Contains <string>("System.Net.Http.WebRequest", assemblyResolver.AssemblyReferences);
        }
示例#22
0
        public void GivenPackagesWithAssemblyReferences_AssemblyReferencesAreResolved()
        {
            var functionMetadata = new FunctionMetadata()
            {
                Name       = "TestFunction",
                ScriptFile = _lockFilePath, /*We just need the path from this*/
                ScriptType = ScriptType.CSharp
            };

            var assemblyResolver = new PackageAssemblyResolver(functionMetadata);

            string nugetHome = PackageManager.GetNugetPackagesPath();

            Assert.Contains <string>(_targetAssemblyFilePath, assemblyResolver.AssemblyReferences);
        }
示例#23
0
        public void TryResolveAssembly_WithReferencedAssemblyName_ResolvesAssemblyPathAndReturnsTrue()
        {
            var functionMetadata = new FunctionMetadata()
            {
                Name       = "TestFunction",
                ScriptFile = _lockFilePath, /*We just need the path from this*/
                ScriptType = ScriptType.CSharp
            };

            var assemblyResolver = new PackageAssemblyResolver(functionMetadata);

            string assemblyPath;
            bool   result = assemblyResolver.TryResolveAssembly(this.GetType().Assembly.FullName, out assemblyPath);

            Assert.True(result);
            Assert.Equal(_targetAssemblyFilePath, assemblyPath);
        }
示例#24
0
        public void TryResolveAssembly_WithReferencedFrameworkAssemblyName_ResolvesAssemblyAndReturnsTrue()
        {
            var functionMetadata = new FunctionMetadata()
            {
                Name       = "TestFunction",
                ScriptFile = _lockFilePath, /*We just need the path from this*/
                ScriptType = ScriptType.CSharp
            };

            var assemblyResolver = new PackageAssemblyResolver(functionMetadata);

            string assemblyPath;
            bool   result = assemblyResolver.TryResolveAssembly("System.Net.Http", out assemblyPath);

            Assert.True(result);
            Assert.Equal("System.Net.Http", assemblyPath);
        }
示例#25
0
            public void WhenPackageIsMatchedItsNonMatchingDllsShouldBeExcluded()
            {
                _package.Setup(
                    i =>
                    i.GetCompatibleDlls(
                        It.Is <FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName)))
                .Returns(new List <string> {
                    "test.dll"
                });

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(1);
            }
示例#26
0
        public void GivenLockFile_PackageReferencesAreResolved()
        {
            var functionMetadata = new FunctionMetadata()
            {
                Name       = "TestFunction",
                ScriptFile = _lockFilePath, /*We just need the path from this*/
                ScriptType = ScriptType.CSharp
            };

            var assemblyResolver = new PackageAssemblyResolver(functionMetadata);

            PackageReference package = assemblyResolver.Packages.Single();

            Assert.Equal("Test.Package", package.Name);
            Assert.Equal("1.0.0", package.Version);
            Assert.Equal(1, package.Assemblies.Count);
            Assert.Equal(2, package.FrameworkAssemblies.Count);
        }
示例#27
0
            public void WhenNoPackagesAreFoundShouldLogWarning()
            {
                // arrange
                _packageContainer.Setup(i => i.FindPackage(It.IsAny <string>(), It.IsAny <IPackageReference>()))
                .Returns <List <IPackageObject> >(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logger.Verify(i => i.WarnFormat(
                                   It.IsAny <IFormatProvider>(),
                                   It.Is <string>(x => x == "Cannot find: {0} {1}"),
                                   It.IsAny <object>(),
                                   It.IsAny <object>()),
                               Times.Exactly(_packageContainer.Object.FindReferences("foo").Count()));
            }
示例#28
0
            public void WhenPackagesAreFoundButNoMatchingDllsExistShouldLogWarning()
            {
                // arrange
                _package.Setup(i => i.GetCompatibleDlls(It.IsAny <FrameworkName>())).Returns <List <string> >(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logger.Verify(i => i.WarnFormat(
                                   It.IsAny <IFormatProvider>(),
                                   It.Is <string>(x => x == "Cannot find compatible binaries for {0} in: {1} {2}"),
                                   It.IsAny <object>(),
                                   It.IsAny <object>(),
                                   It.IsAny <object>()),
                               Times.Exactly(_packageContainer.Object.FindReferences("foo").Count()));
            }
            public void ShouldLoadAllDependenciesIfPackageHasAny()
            {
                var p = new Mock<IPackageObject>();
                p.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>()))
                        .Returns(new List<string> { "test3.dll", "test4.dll" });
                p.SetupGet(i => i.Id).Returns("p2");
                p.SetupGet(i => i.Version).Returns(new Version("4.0"));
                p.SetupGet(i => i.TextVersion).Returns("4.0");
                p.SetupGet(i => i.FullName).Returns(_package.Object.Id + "." + _package.Object.Version);

                _package.Setup(i => i.Dependencies).Returns(new List<IPackageObject> { p.Object });
                _packageContainer.Setup(
                    i => i.FindPackage(It.IsAny<string>(), It.Is<IPackageReference>(x => x.PackageId == "p2")))
                                 .Returns(p.Object);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                _packageContainer.Verify(i => i.FindPackage(It.IsAny<string>(), It.IsAny<IPackageReference>()), Times.Exactly(2));
                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(4);
            }
            public void WhenPackagesAreFoundButNoMatchingDllsExistShouldLogWarning()
            {
                // arrange
                _package.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>())).Returns<List<string>>(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logProvider, _assemblyUtility.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logProvider.Output.ShouldContain(
                    "WARN: Cannot find compatible binaries for .NETFramework,Version=v4.0 in: testId 3.0");
            }
            public void ShouldIgnoreUnmanagedAssemblies()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logProvider, _assemblyUtility.Object);
                _packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40"), new Version("3.0")));
                _assemblyUtility.Setup(u => u.IsManagedAssembly(It.Is<string>(s => Path.GetFileName(s) == "test.dll"))).Returns(false);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(3);
            }
示例#32
0
 public PackageTargetFramework(PackageData package, HttpClient httpClient)
 {
     this.httpClient  = httpClient;
     Package          = package;
     AssemblyResolver = new PackageAssemblyResolver(package.IndexId, this);
 }
 public PackageTargetFramework(PackageData package)
 {
     Package          = package;
     AssemblyResolver = new PackageAssemblyResolver(package.IndexId, this);
 }
            public void WhenPackagesAreFoundButNoMatchingDllsExistShouldLogWarning()
            {
                // arrange
                _package.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>())).Returns<List<string>>(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logger.Verify(i => i.WarnFormat(
                    It.IsAny<IFormatProvider>(),
                    It.Is<string>(x => x == "Cannot find compatible binaries for {0} in: {1} {2}"),
                    It.IsAny<object>(),
                    It.IsAny<object>(),
                    It.IsAny<object>()),
                    Times.Exactly(_packageContainer.Object.FindReferences("foo").Count()));
            }
            public void WhenPackagesAreFoundButNoMatchingDllsExistShouldThrowArgumentEx()
            {
                _package.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>())).Returns<List<string>>(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                Assert.Throws<MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
            }
            public void WhenPackageIsMatchedItsNonMatchingDllsShouldBeExcluded()
            {
                _package.Setup(
                    i =>
                    i.GetCompatibleDlls(
                        It.Is<FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName)))
                        .Returns(new List<string> { "test.dll" });

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(1);
            }
            public void WhenNoPackagesAreFoundShouldThrowArgumentEx()
            {
                _packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.IsAny<IPackageReference>()))
                                 .Returns<List<IPackageObject>>(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                Assert.Throws<MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
            }
            public void WhenManyPackagesAreMatchedAllNonMatchingDllsShouldBeExcluded()
            {
                _package.Setup(
                    i =>
                    i.GetCompatibleDlls(
                        It.Is<FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName)))
                        .Returns(new List<string> { "test.dll" });
                _packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40"), new Version("3.0")));

                var p = new Mock<IPackageObject>();
                p.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>()))
                        .Returns(new List<string> { "test3.dll" });
                p.SetupGet(i => i.Id).Returns("testId2");
                p.SetupGet(i => i.Version).Returns(new Version("3.0"));
                p.SetupGet(i => i.TextVersion).Returns("3.0");
                p.SetupGet(i => i.FullName).Returns(_package.Object.Id + "." + _package.Object.Version);

                _packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.Is<IPackageReference>(x => x.PackageId == "testId2"))).Returns(p.Object);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory).ToList();

                found.ShouldNotBeEmpty();
                found.Count.ShouldEqual(2);
            }
            public void WhenDllsAreMatchedDllFilePathsAreCorrectlyConcatenated()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory);

                found.First().ShouldEqual("c:\\test\\packages\\id.3.0\\test.dll");
                found.ElementAt(1).ShouldEqual("c:\\test\\packages\\id.3.0\\test2.dll");
            }
            public void WhenNoPackagesAreFoundShouldLogWarning()
            {
                // arrange
                _packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.IsAny<IPackageReference>()))
                                 .Returns<List<IPackageObject>>(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logProvider, _assemblyUtility.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logProvider.Output.ShouldContain("WARN: Cannot find: testId 3.0");
            }
            public void WhenDllsAreMatchedDllFilePathsAreCorrectlyConcatenated()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logProvider, _assemblyUtility.Object);

                var found = resolver.GetAssemblyNames(_workingDirectory);

                found.First().ShouldEqual(
                    Path.Combine(_workingDirectory, "packages", "id.3.0", "test.dll"));
                found.ElementAt(1).ShouldEqual(
                    Path.Combine(_workingDirectory, "packages", "id.3.0", "test2.dll"));
            }
            public void WhenPackagesConfigDoesNotExistShouldReturnEmptyPackagesList()
            {
                var resolver = new PackageAssemblyResolver(_filesystem.Object, new Mock<IPackageContainer>().Object, _logger.Object);
                _filesystem.Setup(i => i.FileExists(It.IsAny<string>())).Returns(false);

                var found = resolver.GetAssemblyNames(_workingDirectory);
                found.ShouldBeEmpty();
            }
            public void ShouldGetReferencesToPackages()
            {
                _fs.Setup(i => i.FileExists(It.IsAny<string>())).Returns(true);
                _pc.Setup(i => i.FindReferences(It.IsAny<string>())).Returns(new List<IPackageReference> { new PackageReference("id", VersionUtility.ParseFrameworkName("net40"), new Version("3.0")) });

                var resolver = new PackageAssemblyResolver(_fs.Object, _pc.Object, _logger.Object);
                var result = resolver.GetPackages(@"c:/");

                _pc.Verify(i => i.FindReferences(It.IsAny<string>()), Times.Once());
                result.Count().ShouldEqual(1);
            }
            public void ShouldReturnEmptyIfPackagesConfigDoesNotExist()
            {
                _fs.Setup(i => i.FileExists(It.IsAny<string>())).Returns(false);

                var resolver = new PackageAssemblyResolver(_fs.Object, _pc.Object, _logger.Object);
                var result = resolver.GetPackages(@"c:/");

                result.ShouldBeEmpty();
            }
示例#45
0
 public PackageTargetFramework(string lowerPackageId)
 {
     AssemblyResolver = new PackageAssemblyResolver(lowerPackageId, this);
 }
            public void WhenNoPackagesAreFoundShouldLogWarning()
            {
                // arrange
                _packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.IsAny<IPackageReference>()))
                                 .Returns<List<IPackageObject>>(null);

                var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object, _logger.Object);

                // act
                resolver.GetAssemblyNames(_workingDirectory);

                // assert
                _logger.Verify(i => i.WarnFormat(
                    It.IsAny<IFormatProvider>(),
                    It.Is<string>(x => x == "Cannot find: {0} {1}"),
                    It.IsAny<object>(),
                    It.IsAny<object>()),
                    Times.Exactly(_packageContainer.Object.FindReferences("foo").Count()));
            }