Ejemplo n.º 1
0
        public void FindRootAssemblies_ForAppDomain_WithConsiderDynamicDirectoryTrue()
        {
            ExecuteInSeparateAppDomain(delegate
            {
                Assembly firstInMemoryAssembly  = CompileTestAssemblyInMemory("FirstInMemoryAssembly", _markedReferencedAssemblyPath);
                Assembly secondInMemoryAssembly = CompileTestAssemblyInMemory("SecondInMemoryAssembly");
                CompileTestAssemblyInMemory("UnmarkedInMemoryAssembly");

                InitializeDynamicDirectory();

                var assemblyLoader     = CreateLoaderForMarkedAssemblies();
                var rootAssemblyFinder = SearchPathRootAssemblyFinder.CreateForCurrentAppDomain(true, assemblyLoader);
                var rootAssemblies     = rootAssemblyFinder.FindRootAssemblies();

                Assert.That(rootAssemblies, Has.No.Member(firstInMemoryAssembly));
                Assert.That(rootAssemblies, Has.No.Member(secondInMemoryAssembly));

                Assert.That(
                    rootAssemblies.Select(root => root.Assembly).ToArray(),
                    Is.EquivalentTo(
                        new[]
                {
                    Load(_markedAssemblyPath),
                    Load(_markedExeAssemblyPath),
                    Load(_markedAssemblyWithDerivedAttributePath),
                    Load(_markedReferencedAssemblyPath),
                    Load(_markedAssemblyInSearchPathPath),
                    Load(_markedExeAssemblyInSearchPathPath),
                    Load(_markedAssemblyInDynamicDirectoryPath),
                    Load(_markedExeAssemblyInDynamicDirectoryPath),
                    LoadFile(_markedAssemblyInSearchPathWithNameMismatchPath)
                }));
            });
        }
        private ITypeDiscoveryService CreateServiceWithAutomaticDiscovery()
        {
            var assemblyLoader = CreateApplicationAssemblyLoader();
            var searchPathRootAssemblyFinder = SearchPathRootAssemblyFinder.CreateForCurrentAppDomain(false, assemblyLoader);

            return(CreateServiceWithAssemblyFinder(searchPathRootAssemblyFinder));
        }
 private IFileSearchService GetSearchServiceForCombinedFinder(SearchPathRootAssemblyFinder finder)
 {
     return(finder.CreateCombinedFinder()
            .InnerFinders
            .Cast <FilePatternRootAssemblyFinder> ()
            .Select(inner => inner.FileSearchService)
            .Distinct()
            .Single());
 }
        public void CreateForCurrentAppDomain()
        {
            var considerDynamicDirectory = BooleanObjectMother.GetRandomBoolean();

            var finder = SearchPathRootAssemblyFinder.CreateForCurrentAppDomain(considerDynamicDirectory, _loaderStub);

            Assert.That(finder.BaseDirectory, Is.EqualTo(AppDomain.CurrentDomain.BaseDirectory));
            Assert.That(finder.RelativeSearchPath, Is.EqualTo(AppDomain.CurrentDomain.RelativeSearchPath));
            Assert.That(finder.DynamicDirectory, Is.EqualTo(AppDomain.CurrentDomain.DynamicDirectory));
            Assert.That(finder.AssemblyLoader, Is.SameAs(_loaderStub));
            Assert.That(finder.ConsiderDynamicDirectory, Is.EqualTo(considerDynamicDirectory));
        }
Ejemplo n.º 5
0
        public static Mixer Create(string assemblyName, string assemblyOutputDirectory, int degreeOfParallelism)
        {
            var builderFactory = new MixerPipelineFactory(assemblyName, degreeOfParallelism);

            // Use a custom TypeDiscoveryService with the LoadAllAssemblyLoaderFilter so that mixed types within system assemblies are also considered.
            var assemblyLoader       = new FilteringAssemblyLoader(new LoadAllAssemblyLoaderFilter());
            var rootAssemblyFinder   = SearchPathRootAssemblyFinder.CreateForCurrentAppDomain(false, assemblyLoader);
            var assemblyFinder       = new CachingAssemblyFinderDecorator(new AssemblyFinder(rootAssemblyFinder, assemblyLoader));
            var typeDiscoveryService = new AssemblyFinderTypeDiscoveryService(assemblyFinder);

            var finder = new MixedTypeFinder(typeDiscoveryService);

            return(new Mixer(finder, builderFactory, assemblyOutputDirectory));
        }
        private FilePatternSpecification[] CheckCombinedFinderAndGetSpecifications(SearchPathRootAssemblyFinder finder)
        {
            var innerFinders = finder.CreateCombinedFinder()
                               .InnerFinders
                               .Cast <FilePatternRootAssemblyFinder> ();

            foreach (var innerFinder in innerFinders)
            {
                Assert.That(innerFinder.AssemblyLoader, Is.SameAs(_loaderStub));
            }

            return(innerFinders
                   .SelectMany(inner => inner.Specifications)
                   .Distinct()
                   .ToArray());
        }
Ejemplo n.º 7
0
        public void FindAssemblies_WithSpecificFiler_ConsiderAssemblyFalse()
        {
            ExecuteInSeparateAppDomain(delegate
            {
                InitializeDynamicDirectory();

                var filterMock = new MockRepository().StrictMock <IAssemblyLoaderFilter> ();
                filterMock.Expect(mock => mock.ShouldConsiderAssembly(Arg <AssemblyName> .Is.Anything)).Return(false).Repeat.AtLeastOnce();
                filterMock.Replay();

                var assemblyLoader     = new FilteringAssemblyLoader(filterMock);
                var rootAssemblyFinder = SearchPathRootAssemblyFinder.CreateForCurrentAppDomain(true, assemblyLoader);
                var assemblyFinder     = new AssemblyFinder(rootAssemblyFinder, assemblyLoader);

                Assembly[] assemblies = assemblyFinder.FindAssemblies().ToArray();

                filterMock.VerifyAllExpectations();
                Assert.That(assemblies, Is.Empty);
            });
        }
        private string[] GetDirectoriesForCombinedFinder(SearchPathRootAssemblyFinder finder)
        {
            var combinedFinder = finder.CreateCombinedFinder();

            return(combinedFinder.InnerFinders.Cast <FilePatternRootAssemblyFinder> ().Select(f => f.SearchPath).ToArray());
        }