示例#1
0
        public void CreateRuntimeInfoModel_GetsTheVersionAndAllPackages()
        {
            // Arrage
            var libraries = new ILibraryInformation[] {
                new FakeLibraryInformation()
                {
                    Name = "LibInfo1", Path = "Path1"
                },
                new FakeLibraryInformation()
                {
                    Name = "LibInfo2", Path = "Path2"
                },
            };

            var libraryManagerMock = new Mock <ILibraryManager>(MockBehavior.Strict);

            libraryManagerMock.Setup(l => l.GetLibraries()).Returns(libraries);

            RequestDelegate next = _ =>
            {
                return(Task.FromResult <object>(null));
            };

            var middleware = new RuntimeInfoMiddleware(
                next,
                new RuntimeInfoPageOptions(),
                libraryManagerMock.Object);

            // Act
            var model = middleware.CreateRuntimeInfoModel();

            // Assert
            Assert.False(string.IsNullOrWhiteSpace(model.Version));
            Assert.Same(libraries, model.References);
        }
示例#2
0
        private void Flatten(ILibraryInformation info,
                             Dictionary <string, List <ILibraryInformation> > firstLevelLookups,
                             HashSet <ILibraryInformation> parentDependents = null)
        {
            IEnumerable <ILibraryInformation> libraryDependents;

            if (!_inverse.TryGetValue(info.Name, out libraryDependents))
            {
                List <ILibraryInformation> firstLevelDependents;
                if (firstLevelLookups.TryGetValue(info.Name, out firstLevelDependents))
                {
                    var allDependents = new HashSet <ILibraryInformation>();
                    foreach (var dependent in firstLevelDependents)
                    {
                        allDependents.Add(dependent);
                        Flatten(dependent, firstLevelLookups, allDependents);
                    }
                    libraryDependents = allDependents;
                }
                else
                {
                    libraryDependents = Enumerable.Empty <ILibraryInformation>();
                }
                _inverse[info.Name] = libraryDependents;
            }
            AddRange(parentDependents, libraryDependents);
        }
示例#3
0
        public void CreateRuntimeInfoModel_GetsTheVersionAndAllPackages()
        {
            // Arrage
            var libraries = new ILibraryInformation[] {
                new FakeLibraryInformation()
                {
                    Name = "LibInfo1", Path = "Path1"
                },
                new FakeLibraryInformation()
                {
                    Name = "LibInfo2", Path = "Path2"
                },
            };

            var libraryManagerMock = new Mock <ILibraryManager>(MockBehavior.Strict);

            libraryManagerMock.Setup(l => l.GetLibraries()).Returns(libraries);

            var runtimeEnvironmentMock = new Mock <IRuntimeEnvironment>(MockBehavior.Strict);

            runtimeEnvironmentMock.Setup(r => r.OperatingSystem).Returns("Windows");
            runtimeEnvironmentMock.Setup(r => r.RuntimeArchitecture).Returns("x64");
            runtimeEnvironmentMock.Setup(r => r.RuntimeType).Returns("clr");
            runtimeEnvironmentMock.Setup(r => r.RuntimeVersion).Returns("1.0.0");

            RequestDelegate next = _ =>
            {
                return(Task.FromResult <object>(null));
            };

            var middleware = new RuntimeInfoMiddleware(
                next,
                new RuntimeInfoPageOptions(),
                libraryManagerMock.Object,
                runtimeEnvironmentMock.Object);

            // Act
            var model = middleware.CreateRuntimeInfoModel();

            // Assert
            Assert.Equal("1.0.0", model.Version);
            Assert.Equal("Windows", model.OperatingSystem);
            Assert.Equal("clr", model.RuntimeType);
            Assert.Equal("x64", model.RuntimeArchitecture);
            Assert.Same(libraries, model.References);
        }
示例#4
0
        private void Visit(ILibraryInformation item,
                           Dictionary <string, List <ILibraryInformation> > inverse,
                           HashSet <string> visited)
        {
            if (!visited.Add(item.Name))
            {
                return;
            }

            foreach (var dependency in item.Dependencies)
            {
                List <ILibraryInformation> dependents;
                if (!inverse.TryGetValue(dependency, out dependents))
                {
                    dependents          = new List <ILibraryInformation>();
                    inverse[dependency] = dependents;
                }

                dependents.Add(item);
                Visit(_graph[dependency], inverse, visited);
            }
        }
        public void CreateRuntimeInfoModel_GetsTheVersionAndAllPackages()
        {
            // Arrage
            var libraries = new ILibraryInformation[] {
                new FakeLibraryInformation() { Name ="LibInfo1", Path = "Path1" },
                new FakeLibraryInformation() { Name ="LibInfo2", Path = "Path2" },
            };

            var libraryManagerMock = new Mock<ILibraryManager>(MockBehavior.Strict);
            libraryManagerMock.Setup(l => l.GetLibraries()).Returns(libraries);

            var runtimeEnvironmentMock = new Mock<IRuntimeEnvironment>(MockBehavior.Strict);
            runtimeEnvironmentMock.Setup(r => r.OperatingSystem).Returns("Windows");
            runtimeEnvironmentMock.Setup(r => r.RuntimeArchitecture).Returns("x64");
            runtimeEnvironmentMock.Setup(r => r.RuntimeType).Returns("clr");
            runtimeEnvironmentMock.Setup(r => r.RuntimeVersion).Returns("1.0.0");

            RequestDelegate next = _ =>
            {
                return Task.FromResult<object>(null);
            };

            var middleware = new RuntimeInfoMiddleware(
                next,
                new RuntimeInfoPageOptions(),
                libraryManagerMock.Object,
                runtimeEnvironmentMock.Object);

            // Act
            var model = middleware.CreateRuntimeInfoModel();

            // Assert
            Assert.Equal("1.0.0", model.Version);
            Assert.Equal("Windows", model.OperatingSystem);
            Assert.Equal("clr", model.RuntimeType);
            Assert.Equal("x64", model.RuntimeArchitecture);
            Assert.Same(libraries, model.References);
        }
 private static bool IsCandidateLibrary(ILibraryInformation library)
 {
     return !_mvcAssemblyList.Contains(library.Name);
 }
 private static Assembly Load(ILibraryInformation library)
 {
     return Assembly.Load(new AssemblyName(library.Name));
 }
 private bool IsCandidateLibrary(ILibraryInformation library)
 {
     return !_codeGenerationFrameworkAssemblies.Contains(library.Name);
 }
示例#9
0
        private void Visit(ILibraryInformation item,
                          Dictionary<string, List<ILibraryInformation>> inverse,
                          HashSet<string> visited)
        {
            if (!visited.Add(item.Name))
            {
                return;
            }

            foreach (var dependency in item.Dependencies)
            {
                List<ILibraryInformation> dependents;
                if (!inverse.TryGetValue(dependency, out dependents))
                {
                    dependents = new List<ILibraryInformation>();
                    inverse[dependency] = dependents;
                }

                dependents.Add(item);
                Visit(_graph[dependency], inverse, visited);
            }
        }
示例#10
0
        private void Flatten(ILibraryInformation info,
                             Dictionary<string, List<ILibraryInformation>> firstLevelLookups,
                             HashSet<ILibraryInformation> parentDependents = null)
        {
            IEnumerable<ILibraryInformation> libraryDependents;
            if (!_inverse.TryGetValue(info.Name, out libraryDependents))
            {
                List<ILibraryInformation> firstLevelDependents;
                if (firstLevelLookups.TryGetValue(info.Name, out firstLevelDependents))
                {
                    var allDependents = new HashSet<ILibraryInformation>();
                    foreach (var dependent in firstLevelDependents)
                    {
                        allDependents.Add(dependent);
                        Flatten(dependent, firstLevelLookups, allDependents);
                    }
                    libraryDependents = allDependents;
                }
                else
                {
                    libraryDependents = Enumerable.Empty<ILibraryInformation>();
                }
                _inverse[info.Name] = libraryDependents;

            }
            AddRange(parentDependents, libraryDependents);
        }
示例#11
0
 private static bool IsCandidateLibrary(ILibraryInformation library)
 {
     return(!_mvcAssemblyList.Contains(library.Name));
 }
 private bool IsCandidateLibrary(ILibraryInformation library)
 {
     Debug.Assert(ReferenceAssemblies != null);
     return !ReferenceAssemblies.Contains(library.Name);
 }
示例#13
0
 private bool IsCandidateLibrary(ILibraryInformation library)
 {
     Debug.Assert(ReferenceAssemblies != null);
     return(!ReferenceAssemblies.Contains(library.Name));
 }
 private static Assembly Load(ILibraryInformation library)
 {
     return(Assembly.Load(new AssemblyName(library.Name)));
 }
 private bool IsCandidateLibrary(ILibraryInformation library)
 {
     return(!_codeGenerationFrameworkAssemblies.Contains(library.Name));
 }