public void LoadPlugins_Find_All_Referenced_Plugins() { var testAssemblyProvider = new TestAssemblyProvider(); var testAssembly = Assembly.GetExecutingAssembly(); testAssemblyProvider.RegisterTestAssembly(testAssembly); //ARRANGE var runtimePluginLocator = new RuntimePluginLocator(new RuntimePluginLocationMerger(), new SpecFlowPath(), testAssemblyProvider); //ACT var plugins = runtimePluginLocator.GetAllRuntimePlugins(); //ASSERT var projectReferences = GetProjectReferencesDlls(); var allProjectReferenceFoundByPluginLocator = projectReferences.All(pr => plugins.Any(plugin => plugin.Contains(pr))); allProjectReferenceFoundByPluginLocator.Should().BeTrue(); var numberOfGeneratorPlugins = NumberOfGeneratorPluginsReferenced(projectReferences); var generatorPluginsFound = plugins.Where(p => p.Contains("Generator")).ToList(); generatorPluginsFound.Count.Should().Be(numberOfGeneratorPlugins); var numberOfRuntimePlugins = NumberOfRuntimePluginsReferenced(projectReferences); var runtimePluginsFound = plugins.Where(p => !p.Equals(testAssembly.Location)).Except(generatorPluginsFound).ToList(); runtimePluginsFound.Should().HaveCount(numberOfRuntimePlugins, $"{string.Join(",", runtimePluginsFound)} were found"); }
public void CandidateAssemblies_ReturnsLibrariesReferencingDefaultAssemblies() { // Arrange var defaultProvider = new TestAssemblyProvider(CreateLibraryManager()); // Act var defaultProviderCandidates = defaultProvider.GetCandidateLibraries(); // Assert Assert.Equal(new[] { "Baz" }, defaultProviderCandidates.Select(a => a.Name)); }
public void LoadPlugins_Find_TestAssembly() { var testAssemblyProvider = new TestAssemblyProvider(); var testAssembly = Assembly.GetExecutingAssembly(); testAssemblyProvider.RegisterTestAssembly(testAssembly); //ARRANGE var runtimePluginLocator = new RuntimePluginLocator(new RuntimePluginLocationMerger(), new SpecFlowPath(), testAssemblyProvider); //ACT var plugins = runtimePluginLocator.GetAllRuntimePlugins(); //ASSERT plugins.Should().Contain(testAssembly.Location); }
public void LoadPlugins_Doesnt_load_too_much_assemblies() { //ARRANGE var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); var testAssemblyProvider = new TestAssemblyProvider(); testAssemblyProvider.RegisterTestAssembly(Assembly.GetExecutingAssembly()); var runtimePluginLocator = new RuntimePluginLocator(new RuntimePluginLocationMerger(), new SpecFlowPath(), testAssemblyProvider); //ACT runtimePluginLocator.GetAllRuntimePlugins(); //ASSERT var nowLoadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); nowLoadedAssemblies.Should().BeEquivalentTo(loadedAssemblies); }
public void CandidateAssemblies_ReturnsLibrariesReferencingAnyMvcAssembly() { // Arrange var manager = new Mock<ILibraryManager>(); manager.Setup(f => f.GetReferencingLibraries(It.IsAny<string>())) .Returns(Enumerable.Empty<ILibraryInformation>()); manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc.Core")) .Returns(new[] { CreateLibraryInfo("Foo") }); manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc.Abstractions")) .Returns(new[] { CreateLibraryInfo("Bar") }); manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc")) .Returns(new[] { CreateLibraryInfo("Baz") }); var provider = new TestAssemblyProvider(manager.Object); // Act var candidates = provider.GetCandidateLibraries(); // Assert Assert.Equal(new[] { "Baz", "Bar", "Foo" }, candidates.Select(a => a.Name)); }
public void CandidateAssemblies_ReturnsLibrariesReferencingAnyMvcAssembly() { // Arrange var manager = new Mock <ILibraryManager>(); manager.Setup(f => f.GetReferencingLibraries(It.IsAny <string>())) .Returns(Enumerable.Empty <Library>()); manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc.Core")) .Returns(new[] { new Library("Foo") }); manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc.Abstractions")) .Returns(new[] { new Library("Bar") }); manager.Setup(f => f.GetReferencingLibraries("Microsoft.AspNet.Mvc")) .Returns(new[] { new Library("Baz") }); var provider = new TestAssemblyProvider(manager.Object); // Act var candidates = provider.GetCandidateLibraries(); // Assert Assert.Equal(new[] { "Baz", "Bar", "Foo" }, candidates.Select(a => a.Name)); }
public void CandidateAssemblies_IgnoresMvcAssemblies() { // Arrange var manager = new Mock <ILibraryManager>(); manager.Setup(f => f.GetReferencingLibraries(It.IsAny <string>())) .Returns(new[] { CreateLibraryInfo("Microsoft.AspNet.Mvc.Core"), CreateLibraryInfo("Microsoft.AspNet.Mvc"), CreateLibraryInfo("Microsoft.AspNet.Mvc.ModelBinding"), CreateLibraryInfo("SomeRandomAssembly"), }) .Verifiable(); var provider = new TestAssemblyProvider(manager.Object); // Act var candidates = provider.GetCandidateLibraries(); // Assert Assert.Equal(new[] { "SomeRandomAssembly" }, candidates.Select(a => a.Name)); }
public void CandidateAssemblies_IgnoresMvcAssemblies() { // Arrange var manager = new Mock<ILibraryManager>(); manager.Setup(f => f.GetReferencingLibraries(It.IsAny<string>())) .Returns(new[] { CreateLibraryInfo("Microsoft.AspNet.Mvc.Core"), CreateLibraryInfo("Microsoft.AspNet.Mvc"), CreateLibraryInfo("Microsoft.AspNet.Mvc.Abstractions"), CreateLibraryInfo("SomeRandomAssembly"), }) .Verifiable(); var provider = new TestAssemblyProvider(manager.Object); // Act var candidates = provider.GetCandidateLibraries(); // Assert Assert.Equal(new[] { "SomeRandomAssembly" }, candidates.Select(a => a.Name)); var context = new Mock<HttpContext>(); }
public MainCommand() { AssemblyProvider = new TestAssemblyProvider(); }