public TestAssembly( IEnumerable <ITestMetadata> testMetadatas, IMetadataAssembly metadataAssembly) : base(metadataAssembly) { _testMetadatas = testMetadatas; }
public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer, ManualResetEvent exitEvent) { ExploreAssembly(project, assembly, consumer); }
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; } } }
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); } } }
private void ExploreContext(IProject project, IMetadataAssembly assembly, ITypeInfo type) { var contextElement = _factory.GetOrCreateContext( project, new ClrTypeName(type.FullyQualifiedName), assembly.Location, type.GetSubject(), type.GetTags().ToArray(), type.IsIgnored()); _observer.OnUnitTestElement(contextElement); var fields = type.GetFields().ToArray(); var specifications = fields.Where(x => x.IsSpecification()); var behaviors = fields.Where(x => x.IsBehavior()); foreach (var specification in specifications) { ExploreSpecification(project, contextElement, type, specification); } foreach (var behavior in behaviors) { ExploreBehavior(project, contextElement, type, behavior); } _observer.OnUnitTestElementChanged(contextElement); }
public void Explore(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver consumer, IMetadataTypeInfo metadataTypeInfo) { if (!metadataTypeInfo.IsContext()) { return; } ContextElement contextElement = this._factories.Contexts.CreateContext(project, assembly.Location.FullPath, metadataTypeInfo); consumer.OnUnitTestElement(contextElement); metadataTypeInfo.GetSpecifications() .ForEach(x => { var contextSpecificationElement = this._factories.ContextSpecifications.CreateContextSpecification(contextElement, x); consumer.OnUnitTestElement(contextSpecificationElement); }); metadataTypeInfo.GetBehaviors().ForEach(x => { var behaviorElement = this._factories.Behaviors.CreateBehavior(contextElement, x); consumer.OnUnitTestElement(behaviorElement); this._factories.BehaviorSpecifications .CreateBehaviorSpecificationsFromBehavior(behaviorElement, x) .ForEach(consumer.OnUnitTestElement); consumer.OnUnitTestElementChanged(behaviorElement); }); consumer.OnUnitTestElementChanged(contextElement); }
public AssemblyExplorer(MSpecUnitTestProvider provider, #if RESHARPER_61 IUnitTestElementManager manager, PsiModuleManager psiModuleManager, CacheManager cacheManager, #endif IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { _assembly = assembly; _consumer = consumer; using (ReadLockCookie.Create()) { var projectEnvoy = new ProjectModelElementEnvoy(project); var cache = new ContextCache(); #if RESHARPER_61 _contextFactory = new ContextFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, _assembly.Location.FullPath, cache); _contextSpecificationFactory = new ContextSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); _behaviorFactory = new BehaviorFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, manager, psiModuleManager, cacheManager, project, projectEnvoy); #else #if RESHARPER_6 _contextFactory = new ContextFactory(provider, project, projectEnvoy, _assembly.Location.FullPath, cache); #else _contextFactory = new ContextFactory(provider, project, projectEnvoy, _assembly.Location, cache); #endif _contextSpecificationFactory = new ContextSpecificationFactory(provider, project, projectEnvoy, cache); _behaviorFactory = new BehaviorFactory(provider, project, projectEnvoy, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, project, projectEnvoy); #endif } }
public void Explore(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer, IMetadataTypeInfo metadataTypeInfo) { if (!metadataTypeInfo.IsContext()) { return; } var contextElement = _factories.Contexts.CreateContext(project, assembly.Location.FullPath, metadataTypeInfo); consumer(contextElement); metadataTypeInfo.GetSpecifications() .ForEach(x => consumer(_factories.ContextSpecifications.CreateContextSpecification(contextElement, x))); metadataTypeInfo.GetBehaviors().ForEach(x => { var behaviorElement = _factories.Behaviors.CreateBehavior(contextElement, x); consumer(behaviorElement); _factories.BehaviorSpecifications .CreateBehaviorSpecificationsFromBehavior(behaviorElement, x) .ForEach(y => consumer(y)); }); }
public void Explore(IProject project, IMetadataAssembly assembly, Action <IUnitTestElement> consumer, Func <bool> notInterrupted) { // TODO: ILMerge / embedded reference //if (!referencedAssemblies.Any(x => x.StartsWith("TestFx"))) var frameworkPrefix = typeof(IRootRunner).Assembly.GetName().Name; var referencedAssemblies = assembly.ReferencedAssembliesNames.Select(x => x.Name); if (!referencedAssemblies.Any(x => x.StartsWith(frameworkPrefix))) { return; } using (ReadLockCookie.Create()) { var testAssembly = assembly.ToTestAssembly(project, notInterrupted); if (testAssembly == null) { return; } var testElements = testAssembly.TestMetadatas.Select(_testElementFactory.GetOrCreateClassTestElementRecursively); var allTestElements = testElements.SelectMany(x => x.DescendantsAndSelf(y => y.Children)).ToList(); Debug.Assert(allTestElements.Count > 0, "No tests found."); allTestElements.ForEach(consumer); } }
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); } } } } }
public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer, ManualResetEvent exitEvent) { var envoy = ProjectModelElementEnvoy.Create(project); if (assembly.ReferencedAssembliesNames.Any(n => n.Name == SilverlightMsTestAssemblyName)) { var allElements = new List<IUnitTestElement>(); var mappedElements = new Dictionary<IUnitTestElement, IUnitTestElement>(); new mstestlegacy::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestMetadataExplorer(msTestElementFactory, msTestAttributesProvider, project, shellLocks, allElements.Add) .ExploreAssembly(assembly); foreach (var classElement in allElements.OfType<mstest10::JetBrains.ReSharper.UnitTestProvider.MSTest10.MsTestTestClassElement>()) mappedElements.Add(classElement, elementFactory.GetOrCreateClassElement(classElement.TypeName, project, envoy)); foreach (var methodElement in allElements.OfType<mstest10::JetBrains.ReSharper.UnitTestProvider.MSTest10.MsTestTestMethodElement>()) mappedElements.Add(methodElement, elementFactory.GetOrCreateMethodElement(methodElement.Id, project, (mstestlegacy::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestTestClassElementBase)mappedElements[methodElement.Parent], envoy, methodElement.TypeName)); foreach (var rowElement in allElements.OfType<mstest10::JetBrains.ReSharper.UnitTestProvider.MSTest10.MsTestTestRowElement>()) mappedElements.Add(rowElement, elementFactory.GetOrCreateRowElement(rowElement.Id, project, (mstestlegacy::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestTestMethodElementBase)mappedElements[rowElement.Parent], envoy)); foreach (var element in allElements) { IUnitTestElement mappedElement; if (mappedElements.TryGetValue(element, out mappedElement)) consumer(mappedElements[element]); else consumer(element); } } }
public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer) { if (assembly.ReferencedAssembliesNames.Any(n => n.Name == SilverlightMsTestAssemblyName)) { var originalReferencedAssemblies = InjectMsTestIntoReferencedAssemblyNames(assembly); try { #if RS70 if (msTest11Provider != null) { new mstest11::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestMetadataExplorer(msTest11ElementFactory, project, shellLocks, consumer).ExploreAssembly(assembly); } else #endif if (msTest10Provider != null) { new mstest10::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestMetadataExplorer(msTest10ElementFactory, project, shellLocks, consumer).ExploreAssembly(assembly); } else if (msTestLegacyProvider != null) { new mstestlegacy::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestMetadataExplorer(msTestLegacyElementFactory, project, shellLocks, consumer).ExploreAssembly(assembly); } } finally { SetReferencedAssemblyNames(assembly, originalReferencedAssemblies); } } }
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)); }); }); }
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)); }); }); }
public void Explore(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer, CancellationToken cancellationToken) { // TODO: ILMerge / embedded reference //if (!referencedAssemblies.Any(x => x.StartsWith("TestFx"))) var frameworkPrefix = typeof(IRootRunner).Assembly.GetName().Name; var referencedAssemblies = assembly.ReferencedAssembliesNames.Select(x => x.Name); if (!referencedAssemblies.Any(x => x.StartsWith(frameworkPrefix))) { return; } using (ReadLockCookie.Create()) { var testAssembly = assembly.ToTestAssembly(project, notInterrupted: () => !cancellationToken.IsCancellationRequested); if (testAssembly == null) { return; } var testElements = testAssembly.TestMetadatas.Select(_testElementFactory.GetOrCreateClassTestElementRecursively); var allTestElements = testElements.SelectMany(x => x.DescendantsAndSelf(y => y.Children)).ToList(); foreach (var testElement in allTestElements) { observer.OnUnitTestElement(testElement); observer.OnUnitTestElementChanged(testElement); } observer.OnCompleted(); } }
public TestAssembly( IEnumerable<ITestMetadata> testMetadatas, IMetadataAssembly metadataAssembly) : base(metadataAssembly) { _testMetadatas = testMetadatas; }
public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer) { new AssemblyExplorer(_provider, #if RESHARPER_61 _manager, _psiModuleManager, _cacheManager, #endif assembly, project, consumer).Explore(); }
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); } }
public void ExploreAssembly( IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer, CancellationToken cancellationToken) { var environment = new ExecutionEnvironment(assembly.Location.FullPath); var methodGroups = environment.DiscoverTestMethodGroups(null); }
private void ExploreType(IProject project, IMetadataAssembly assembly, ITypeInfo type) { if (!type.IsContext()) { return; } ExploreContext(project, assembly, type); }
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); } }
// 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); } }
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); } }
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 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, 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); } } }
private void ExploreType(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer, IMetadataTypeInfo metadataTypeInfo) { // It would be nice to use TestClassCommandFactory.Make(...), but that doesn't work // with RunWith, since Make ends up calling TypeUtility.GetRunWith, which tries to // call IAttributeInfo.GetInstance<RunWithAttribute>, and we can't support that. // So we'll break down Make and do it ourselves. If the runner finds any methods // that we don't find, it will create them at runtime var typeInfo = metadataTypeInfo.AsTypeInfo(); if (TypeUtility.IsTestClass(typeInfo)) ExploreTestClass(project, assembly, consumer, typeInfo, metadataTypeInfo.FullyQualifiedName); }
// 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); } } }
private bool ExploreType(IProject project, IMetadataAssembly metadataAssembly, UnitTestElementConsumer consumer, IMetadataTypeInfo typeInfo) { if (conventionCheck.IsValidTestClass(project, typeInfo)) { var classUnitTestElement = unitTestElementFactory.GetOrCreateTestClass(project, new ClrTypeName(typeInfo.FullyQualifiedName), metadataAssembly.Location.FullPath); consumer(classUnitTestElement); return(true); } return(false); }
public void Explore(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer, CancellationToken cancellationToken) { Explore( project, assembly, x => { observer.OnUnitTestElement(x); observer.OnUnitTestElementChanged(x); }, notInterrupted: () => !cancellationToken.IsCancellationRequested); }
public void Explore(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer) { Explore( project, assembly, x => { observer.OnUnitTestElement(x); observer.OnUnitTestElementChanged(x); }, () => true); }
private AssemblyNameInfo[] InjectMsTestIntoReferencedAssemblyNames(IMetadataAssembly assembly) { var referencedAssemblyNames = assembly.ReferencedAssembliesNames; var updatedReferencedAssemblyNames = new AssemblyNameInfo[referencedAssemblyNames.Length + 1]; Array.Copy(referencedAssemblyNames, updatedReferencedAssemblyNames, referencedAssemblyNames.Length); updatedReferencedAssemblyNames[referencedAssemblyNames.Length] = new AssemblyNameInfo(DotNetMsTestAssemblyName); SetReferencedAssemblyNames(assembly, updatedReferencedAssemblyNames); return referencedAssemblyNames; }
private TestUnitTestElementObserver GetMetadataObserver(IProject project, IMetadataAssembly assembly) { var serviceProvider = Solution.GetComponent <MspecServiceProvider>(); var observer = new TestUnitTestElementObserver(); var factory = new UnitTestElementFactory(serviceProvider, observer.TargetFrameworkId); var explorer = new MspecTestMetadataExplorer(factory, observer); explorer.ExploreAssembly(project, assembly, CancellationToken.None); return(observer); }
private AssemblyNameInfo[] InjectMsTestIntoReferencedAssemblyNames(IMetadataAssembly assembly) { var referencedAssemblyNames = assembly.ReferencedAssembliesNames.ToArray(); var updatedReferencedAssemblyNames = new AssemblyNameInfo[referencedAssemblyNames.Length + 1]; Array.Copy(referencedAssemblyNames, updatedReferencedAssemblyNames, referencedAssemblyNames.Length); updatedReferencedAssemblyNames[referencedAssemblyNames.Length] = new AssemblyNameInfo(DotNetMsTestAssemblyName); SetReferencedAssemblyNames(assembly, updatedReferencedAssemblyNames); return(referencedAssemblyNames); }
private void ExploreMethod(IProject project, IMetadataAssembly metadataAssembly, UnitTestElementConsumer consumer, IMetadataMethod metadataMethod) { if (conventionCheck.IsValidTestMethod(project, metadataMethod)) { bool isParameterised = conventionCheck.IsParameterizedMethod( project, metadataMethod.DeclaringType.FullyQualifiedName, metadataMethod.Name); var methodUnitTestElement = unitTestElementFactory.GetOrCreateTestMethod(project, new ClrTypeName(metadataMethod.DeclaringType.FullyQualifiedName), metadataMethod.Name, metadataAssembly.Location.FullPath, isParameterised); consumer(methodUnitTestElement); } }
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(IMetadataAssembly assembly) { using (shellLocks.UsingReadLock()) { if (project.IsValid()) { foreach (var metadataTypeInfo in GetExportedTypes(assembly.GetTypes())) { ProcessTypeInfo(metadataTypeInfo); } } } }
private void ExploreType(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer, IMetadataTypeInfo metadataTypeInfo) { // It would be nice to use TestClassCommandFactory.Make(...), but that doesn't work // with RunWith, since Make ends up calling TypeUtility.GetRunWith, which tries to // call IAttributeInfo.GetInstance<RunWithAttribute>, and we can't support that. // So we'll break down Make and do it ourselves. If the runner finds any methods // that we don't find, it will create them at runtime var typeInfo = metadataTypeInfo.AsTypeInfo(); if (TypeUtility.IsTestClass(typeInfo)) { ExploreTestClass(project, assembly, observer, typeInfo, metadataTypeInfo.FullyQualifiedName); } }
public AssemblyExplorer(MSpecUnitTestProvider provider, IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { _provider = provider; _assembly = assembly; _project = project; _consumer = consumer; _contextFactory = new ContextFactory(_provider, _project, _assembly.Location); _contextSpecificationFactory = new ContextSpecificationFactory(_provider, _project); _behaviorFactory = new BehaviorFactory(_provider, _project); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(_provider, _project); }
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); } } }
private void ExploreTestClass(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver observer, ITypeInfo typeInfo, string typeName) { var classUnitTestElement = unitTestElementFactory.GetOrCreateTestClass(project, new ClrTypeName(typeName), assembly.Location.FullPath, typeInfo.GetTraits()); observer.OnUnitTestElement(classUnitTestElement); // Don't create elements for [Fact] methods when the class has [RunWith]. This // is because we don't know what the RunWith will do - it might not pay any // attention to [Fact], and if we create the elements now, they won't be // dynamic, and that can cause issues later if (!TypeUtility.HasRunWith(typeInfo)) { foreach (var methodInfo in TypeUtility.GetTestMethods(typeInfo)) ExploreTestMethod(project, classUnitTestElement, observer, methodInfo); } }
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); } } }
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); } }
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; } } } }
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()); } } }
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)); }
public void ExploreAssembly(IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { var a = Assembly.LoadFrom(assembly.Location); var specTypes = FilterToSpecs(a.GetTypes()); var elementFactory = new ElementFactory(project, consumer, _provider); foreach (var type in specTypes) { var instance = Activator.CreateInstance(type); var spec = (instance is ISpec) ? (ISpec)instance : new SpecWrapper(instance); elementFactory.CreateContainerElements(spec); } }
public void Explore(IProject project, IMetadataAssembly assembly, Action<IUnitTestElement> consumer, Func<bool> notInterrupted) { // TODO: ILMerge / embedded reference //if (!referencedAssemblies.Any(x => x.StartsWith("TestFx"))) var frameworkPrefix = typeof (ISuite).Assembly.GetName().Name; var referencedAssemblies = assembly.ReferencedAssembliesNames.Select(x => x.Name); if (!referencedAssemblies.Any(x => x.StartsWith(frameworkPrefix))) return; using (ReadLockCookie.Create()) { var assemblyTest = assembly.ToTestAssembly(project, notInterrupted); var testElements = assemblyTest.TestMetadatas.Select(_testElementFactory.GetOrCreateClassTestElementRecursively); var allTestElements = testElements.SelectMany(x => x.DescendantsAndSelf(y => y.Children)).ToList(); Debug.Assert(allTestElements.Count > 0, "Found no tests."); allTestElements.ForEach(consumer); } }
public AssemblyExplorer(MSpecUnitTestProvider provider, IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer) { _assembly = assembly; _consumer = consumer; using (ReadLockCookie.Create()) { var projectEnvoy = new ProjectModelElementEnvoy(project); var cache = new ContextCache(); _contextFactory = new ContextFactory(provider, projectEnvoy, _assembly.Location, cache); _contextSpecificationFactory = new ContextSpecificationFactory(provider, projectEnvoy, cache); _behaviorFactory = new BehaviorFactory(provider, projectEnvoy, cache); _behaviorSpecificationFactory = new BehaviorSpecificationFactory(provider, projectEnvoy); } }
public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer) { if (assembly.ReferencedAssembliesNames.Any(n => n.Name == SilverlightMsTestAssemblyName)) { var originalReferencedAssemblies = InjectMsTestIntoReferencedAssemblyNames(assembly); try { if (msTest10Provider != null) { new MsTest10MetadataExplorer(msTest10Provider, project, consumer).ExploreAssembly(assembly); } else if (msTestLegacyProvider != null) { new MsTestLegacyMetadataExplorer(msTestLegacyProvider, project, consumer).ExploreAssembly(assembly); } } finally { SetReferencedAssemblyNames(assembly, originalReferencedAssemblies); } } }
public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer) { if (assembly.ReferencedAssembliesNames.Any(n => n.Name == SilverlightMsTestAssemblyName)) { var originalReferencedAssemblies = InjectMsTestIntoReferencedAssemblyNames(assembly); try { if (msTest10Provider != null) { new mstest10::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestMetadataExplorer(msTest10ElementFactory, project, shellLocks, consumer).ExploreAssembly(assembly); } else if (msTestLegacyProvider != null) { new mstestlegacy::JetBrains.ReSharper.UnitTestProvider.MSTest.MsTestMetadataExplorer(msTestLegacyElementFactory, project, shellLocks, consumer).ExploreAssembly(assembly); } } finally { SetReferencedAssemblyNames(assembly, originalReferencedAssemblies); } } }
public void Explore(IProject project, IMetadataAssembly assembly, IUnitTestElementsObserver consumer, IMetadataTypeInfo metadataTypeInfo) { if (!metadataTypeInfo.IsContext()) { return; } var contextElement = this._factories.Contexts.CreateContext(project, assembly.Location.FullPath, metadataTypeInfo); consumer.OnUnitTestElement(contextElement); metadataTypeInfo.GetSpecifications() .ForEach(x => { var element = this._factories.ContextSpecifications.CreateContextSpecification(contextElement, x); consumer.OnUnitTestElement(element); consumer.OnUnitTestElementChanged(element); }); metadataTypeInfo.GetBehaviors().ForEach(x => { var behaviorElement = this._factories.Behaviors.CreateBehavior(contextElement, x); consumer.OnUnitTestElement(behaviorElement); consumer.OnUnitTestElementChanged(behaviorElement); this._factories.BehaviorSpecifications .CreateBehaviorSpecificationsFromBehavior(behaviorElement, x) .ForEach(y => { consumer.OnUnitTestElement(y); consumer.OnUnitTestElementChanged(y); }); }); }
private void SetReferencedAssemblyNames(IMetadataAssembly assembly, AssemblyNameInfo[] referencedAssemblyNames) { assembly.SetField("myReferencedAssembliesNames", referencedAssemblyNames); }
public void ExploreAssembly(IProject project, IMetadataAssembly assembly, UnitTestElementConsumer consumer) { _assemblyExplorer.Explore(project, assembly, consumer); }