コード例 #1
0
ファイル: MSTestProvider.cs プロジェクト: locbet/sneal
        public void ExploreAssembly(IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer)
        {
            foreach (IMetadataTypeInfo type in assembly.GetTypes())
            {
                if (!IsTestFixture(type))
                {
                    continue;
                }

                var fixture = new MSTestFixtureElement(this, project, type.FullyQualifiedName, assembly.Location);
                fixture.SetExplicit(GetExplicitString(type));

                consumer(fixture);
                int order = 0;
                foreach (IMetadataMethod method in GetAllTestMethods(type))
                {
                    if (!IsTestMethod(method))
                    {
                        continue;
                    }

                    var testElement = new MSTestElement(this, fixture, project,
                                                        method.DeclaringType.FullyQualifiedName, method.Name,
                                                        order++);
                    testElement.SetExplicit(GetExplicitString(method));
                    consumer(testElement);
                }
            }
        }
コード例 #2
0
        public void ExploreAssembly(
            IProject project,
            IMetadataAssembly metadataAssembly,
            UnitTestElementConsumer consumer,
            ManualResetEvent exitEvent)
        {
            using (ReadLockCookie.Create())
            {
                if (project.GetModuleReferences().All(module => module.Name != "Fixie"))
                {
                    return;
                }

                foreach (var metadataTypeInfo in GetExportedTypes(metadataAssembly.GetTypes()))
                {
                    bool isTestClass = ExploreType(project, metadataAssembly, consumer, metadataTypeInfo);
                    if (isTestClass)
                    {
                        foreach (var metadataMethod in metadataTypeInfo.GetMethods())
                        {
                            ExploreMethod(project, metadataAssembly, consumer, metadataMethod);
                        }
                    }
                }
            }
        }
コード例 #3
0
 public IEnumerable <ITypeInfo> GetTypes(bool includePrivateTypes)
 {
     // Still don't know why I can't use assembly.GetExportedTypes()
     return(from typeInfo in assembly.GetTypes()
            where includePrivateTypes || typeInfo.IsPublic || typeInfo.IsNestedPublic
            select(ITypeInfo) new MetadataTypeInfoAdapter2(typeInfo));
 }
コード例 #4
0
        public void Explore(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer)
        {
            if (!assembly.ReferencedAssembliesNames.Any(x => String.Equals(
                                                            x.Name,
                                                            typeof(It).Assembly.GetName().Name,
                                                            StringComparison.InvariantCultureIgnoreCase)))
            {
                return;
            }

            assembly.GetTypes().Where(type => type.IsContext()).ForEach(type =>
            {
                var contextElement = _factories.Contexts.CreateContext(project, assembly.Location.FullPath, type);
                consumer(contextElement);

                type
                .GetSpecifications()
                .ForEach(x => consumer(_factories.ContextSpecifications.CreateContextSpecification(contextElement, x)));

                type.GetBehaviors().ForEach(x =>
                {
                    var behaviorElement = _factories.Behaviors.CreateBehavior(contextElement, x);
                    consumer(behaviorElement);

                    _factories.BehaviorSpecifications
                    .CreateBehaviorSpecificationsFromBehavior(behaviorElement, x)
                    .ForEach(y => consumer(y));
                });
            });
        }
コード例 #5
0
        public void Explore()
        {
            if (!_assembly.ReferencedAssembliesNames.Any(x => String.Equals(
#if RESHARPER_6
                                                             x.Name,
#else
                                                             x.AssemblyName.Name,
#endif
                                                             typeof(It).Assembly.GetName().Name,
                                                             StringComparison.InvariantCultureIgnoreCase)))
            {
                return;
            }

            _assembly.GetTypes().Where(type => type.IsContext()).ForEach(type =>
            {
                var contextElement = _contextFactory.CreateContext(type);
                _consumer(contextElement);

                type
                .GetSpecifications()
                .ForEach(x => _consumer(_contextSpecificationFactory.CreateContextSpecification(contextElement, x)));

                type.GetBehaviors().ForEach(x =>
                {
                    var behaviorElement = _behaviorFactory.CreateBehavior(contextElement, x);
                    _consumer(behaviorElement);

                    _behaviorSpecificationFactory
                    .CreateBehaviorSpecificationsFromBehavior(behaviorElement, x)
                    .ForEach(y => _consumer(y));
                });
            });
        }
コード例 #6
0
        public void Explore(IMetadataAssembly assembly, CancellationToken token)
        {
            try
            {
                myTempMethods      = new List <IMetadataMethod>(200);
                myTempMethodsNames = new JetHashSet <string>(200);

                foreach (var type in assembly.GetTypes())
                {
                    ExploreType(type, assembly, token);
                }
            }

            finally
            {
                if (myTempMethods != null)
                {
                    myTempMethods.Clear();
                    myTempMethods = null;
                }
                if (myTempMethodsNames != null)
                {
                    myTempMethodsNames.Clear();
                    myTempMethods = null;
                }
            }
        }
コード例 #7
0
    public void Explore(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer)
    {
      if (!assembly.ReferencedAssembliesNames.Any(x => String.Equals(
                                                                     x.Name,
                                                                     typeof(It).Assembly.GetName().Name,
                                                                     StringComparison.InvariantCultureIgnoreCase)))
      {
        return;
      }

      assembly.GetTypes().Where(type => type.IsContext()).ForEach(type =>
      {
        var contextElement = _factories.Contexts.CreateContext(project,assembly.Location.FullPath, type);
        consumer(contextElement);

        type
          .GetSpecifications()
          .ForEach(x => consumer(_factories.ContextSpecifications.CreateContextSpecification(contextElement, x)));

        type.GetBehaviors().ForEach(x =>
        {
          var behaviorElement = _factories.Behaviors.CreateBehavior(contextElement, x);
          consumer(behaviorElement);

          _factories.BehaviorSpecifications
                    .CreateBehaviorSpecificationsFromBehavior(behaviorElement, x)
                    .ForEach(y => consumer(y));
        });
      });
    }
コード例 #8
0
 public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer)
 {
   using (ReadLockCookie.Create()) //Get a read lock so that it is safe to read the assembly
   {
     foreach (var metadataTypeInfo in GetTypesIncludingNested(assembly.GetTypes()))
       this._assemblyExplorer.Explore(project, assembly, consumer, metadataTypeInfo);
   }
 }
コード例 #9
0
 // ReSharper 8.0
 public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer, ManualResetEvent exitEvent)
 {
     // TODO: Monitor exitEvent to stop processing. Note that nunit currently ignores it, too
     using (ReadLockCookie.Create())
     {
         foreach (var metadataTypeInfo in GetExportedTypes(assembly.GetTypes()))
             ExploreType(project, assembly, consumer, metadataTypeInfo);
     }
 }
コード例 #10
0
        public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer)
        {
            var types = GetExportedTypes(assembly.GetTypes()).ToArray();

            foreach (var metadataTypeInfo in types)
            {
                ExploreType(project, assembly, consumer, metadataTypeInfo);
            }
        }
コード例 #11
0
        public ITestAssembly GetTestAssembly(IMetadataAssembly assembly)
        {
            var identity  = new Identity(_project.GetOutputFilePath().FullPath);
            var testTypes = assembly.GetTypes()
                            .TakeWhile(_notInterrupted)
                            .Select(x => VisitType(x, identity))
                            .WhereNotNull();

            return(new TestAssembly(testTypes.ToList(), assembly));
        }
        public void ExploreAssembly(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver consumer, CancellationToken cancellationToken)
        {
            // TODO: Use CancellationToken to exit early

            using (ReadLockCookie.Create()) //Get a read lock so that it is safe to read the assembly
            {
                foreach (var metadataTypeInfo in GetTypesIncludingNested(assembly.GetTypes()))
                    this._assemblyExplorer.Explore(project, assembly, consumer, metadataTypeInfo);
            }
        }
コード例 #13
0
        public ITestAssembly GetTestAssembly(IMetadataAssembly assembly)
        {
            var identity = new Identity(_project.GetOutputFilePath().FullPath);
              var testTypes = assembly.GetTypes()
              .TakeWhile(_notInterrupted)
              .Select(x => VisitType(x, identity))
              .WhereNotNull();

              return new TestAssembly(testTypes.ToList(), assembly);
        }
コード例 #14
0
 public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer)
 {
     using (ReadLockCookie.Create()) //Get a read lock so that it is safe to read the assembly
     {
         foreach (var metadataTypeInfo in GetExportedTypes(assembly.GetTypes()))
         {
             this._assemblyExplorer.Explore(project, assembly, consumer, metadataTypeInfo);
         }
     }
 }
コード例 #15
0
 // ReSharper 8.0
 public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer, ManualResetEvent exitEvent)
 {
     // TODO: Monitor exitEvent to stop processing. Note that nunit currently ignores it, too
     using (ReadLockCookie.Create())
     {
         foreach (var metadataTypeInfo in GetExportedTypes(assembly.GetTypes()))
         {
             ExploreType(project, assembly, consumer, metadataTypeInfo);
         }
     }
 }
コード例 #16
0
        public void ExploreAssembly(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer, CancellationToken cancellationToken)
        {
            using (ReadLockCookie.Create())
            {
                foreach (var metadataTypeInfo in GetExportedTypes(assembly.GetTypes()))
                {
                    if (cancellationToken.IsCancellationRequested)
                        break;

                    ExploreType(project, assembly, observer, metadataTypeInfo);
                }
            }
        }
コード例 #17
0
 public void ExploreAssembly(IMetadataAssembly assembly)
 {
     using (shellLocks.UsingReadLock())
     {
         if (project.IsValid())
         {
             foreach (var metadataTypeInfo in GetExportedTypes(assembly.GetTypes()))
             {
                 ProcessTypeInfo(metadataTypeInfo);
             }
         }
     }
 }
コード例 #18
0
        public void ExploreAssembly(IProject project, IMetadataAssembly assembly, CancellationToken token)
        {
            using (ReadLockCookie.Create())
            {
                var types = assembly.GetTypes();

                foreach (var type in types)
                {
                    if (token.IsCancellationRequested)
                    {
                        break;
                    }
                }
            }
        }
コード例 #19
0
        public void ExploreAssembly(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer, CancellationToken cancellationToken)
        {
            using (ReadLockCookie.Create())
            {
                foreach (var metadataTypeInfo in GetExportedTypes(assembly.GetTypes()))
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        break;
                    }

                    ExploreType(project, assembly, observer, metadataTypeInfo);
                }
            }
        }
        public void ExploreAssembly(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver consumer, CancellationToken cancellationToken)
        {
            using (ReadLockCookie.Create()) //Get a read lock so that it is safe to read the assembly
            {
                foreach (var metadataTypeInfo in GetTypesIncludingNested(assembly.GetTypes()))
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        break;
                    }

                    this._assemblyExplorer.Explore(project, assembly, consumer, metadataTypeInfo);
                }
            }
        }
コード例 #21
0
        public void ExploreAssembly(
            IProject project,
            IMetadataAssembly metadataAssembly,
            UnitTestElementConsumer consumer,
            ManualResetEvent exitEvent)
        {
            using (ReadLockCookie.Create())
            {
                if (project.GetModuleReferences().All(module => module.Name != "Fixie"))
                    return;

                foreach (var metadataTypeInfo in GetExportedTypes(metadataAssembly.GetTypes()))
                    ExploreType(project, metadataAssembly, consumer, metadataTypeInfo);
            }
        }
コード例 #22
0
        public ITestAssembly Aggregate(IMetadataAssembly metadataAssembly, IProject project, [CanBeNull] Func <bool> notInterrupted)
        {
            notInterrupted = notInterrupted ?? (() => true);

            var assemblyIdentity      = new Identity(project.GetOutputFilePath().FullPath);
            var testMetadataProviders = _testMetadataProviderFactories.Select(x => x.CreateTestMetadataProvider(assemblyIdentity, project, notInterrupted)).ToList();
            var metadataTypeInfos     = metadataAssembly.GetTypes();
            var testMetadata          = GetTestMetadata(testMetadataProviders, metadataTypeInfos).TakeWhile(notInterrupted).WhereNotNull().ToList();

            if (testMetadata.Count == 0)
            {
                return(null);
            }

            return(new TestAssembly(testMetadata, metadataAssembly));
        }
コード例 #23
0
        public void Explore(IMetadataAssembly assembly)
        {
            using (ReadLockCookie.Create())
            {
                var types = assembly.GetTypes()
                            .Flatten(x => x.GetNestedTypes())
                            .Where(x => x.FullyQualifiedName != "<Module>");

                Types.AddRange(types.Select(x => x.AsTypeInfo()));

                foreach (var type in Types)
                {
                    Fields.AddRange(type.GetFields());
                }
            }
        }
コード例 #24
0
        public void ExploreAssembly(IProject project, IMetadataAssembly assembly, CancellationToken token)
        {
            using (ReadLockCookie.Create())
            {
                var types = assembly.GetTypes()
                            .Flatten(x => x.GetNestedTypes());

                foreach (var type in types)
                {
                    if (token.IsCancellationRequested)
                    {
                        break;
                    }

                    ExploreType(project, assembly, type.AsTypeInfo());
                }
            }
        }
コード例 #25
0
 public IMetadataTypeInfo[] GetTypes()
 {
     return(_metadataAssembly.GetTypes());
 }