public virtual List<ITestClass> GetTestClasses(IAssembly assembly, TestClassInstanceDictionary instances)
 {
     List<ITestClass> classes = new List<ITestClass>(assembly.GetTestClasses());
     FilterTestClasses(classes, instances);
     SortTestClasses(classes);
     return classes;
 }
 /// <summary>
 /// Create a new assembly manager, takes in the harness, provider 
 /// reference and actual IAssembly object.
 /// </summary>
 /// <param name="runFilter">The test run filter object.</param>
 /// <param name="testHarness">Harness object.</param>
 /// <param name="provider">The unit test metadata provider.</param>
 /// <param name="testAssembly">The test assembly metadata object.</param>
 public AssemblyManager(TestRunFilter runFilter, UnitTestHarness testHarness, IUnitTestProvider provider, IAssembly testAssembly) : base(testHarness, provider)
 {
     _filter = runFilter;
     _assembly = testAssembly;
     _testClasses = new CompositeWorkItem();
     ClassInstances = new TestClassInstanceDictionary();
 }
Example #3
0
 public override List<ITestClass> GetTestClasses(IAssembly assembly, TestClassInstanceDictionary instances)
 {
     return new List<ITestClass>
     {
         _test
     };
 }
 public override List<ITestClass> GetTestClasses(IAssembly assembly, TestClassInstanceDictionary instances) {
     List<ITestClass> result = base.GetTestClasses(assembly, instances);
     int i = 0, movedClassCount = 0;
     while(i < result.Count) {
         ITestClass testClass = result[i];
         if(testClass.Type.GetCustomAttributes(typeof(RunFirstAttribute), true).Length > 0 && result.IndexOf(testClass) != movedClassCount && !TestHelper.IsGUI()) {
             result.Remove(testClass);
             result.Insert(movedClassCount++, testClass);
         }
         i++;
     }
     return result;
 }
        public override List <ITestClass> GetTestClasses(IAssembly assembly, TestClassInstanceDictionary instances)
        {
            List <ITestClass> result = base.GetTestClasses(assembly, instances);
            int i = 0, movedClassCount = 0;

            while (i < result.Count)
            {
                ITestClass testClass = result[i];
                if (testClass.Type.GetCustomAttributes(typeof(RunFirstAttribute), true).Length > 0 && result.IndexOf(testClass) != movedClassCount && !TestHelper.IsGUI())
                {
                    result.Remove(testClass);
                    result.Insert(movedClassCount++, testClass);
                }
                i++;
            }
            return(result);
        }
Example #6
0
	private void FilterByRuntimeVersion (IList<ITestClass> classes, TestClassInstanceDictionary instances)
	{
		List<ITestClass> emptyTests = new List<ITestClass>();
		foreach (ITestClass test in classes)
		{
			object instance = instances.GetInstance(test.Type);
			ICollection<ITestMethod> methods = GetTestMethods(test, instance);
			FilterByRuntimeVersion (methods);
			if (methods.Count == 0) {
				emptyTests.Add(test);
			}
		}
		if (emptyTests.Count > 0) {
			foreach (ITestClass test in emptyTests) {
				classes.Remove(test);
			}
		}
	}
        /// <summary>
        /// Apply tag filtering.
        /// </summary>
        /// <param name="classes">List of test classes.</param>
        /// <param name="instances">Test class instance dictionary.</param>
        protected override void FilterCustomTestClasses(IList<ITestClass> classes, TestClassInstanceDictionary instances)
        {
            if (string.IsNullOrEmpty(TagExpression))
            {
                return;
            }

            // Temporarily apply to the methods as well. If the class has no 
            // methods that were matched in the expression, then cut the 
            // class from the run.
            List<ITestClass> emptyTests = new List<ITestClass>();
            foreach (ITestClass test in classes)
            {
                object instance = instances.GetInstance(test.Type);
                ICollection<ITestMethod> methods = GetTestMethods(test, instance);
                TagManager tm = new TagManager(test.Type, methods);
                ApplyExpression(tm, methods);
                if (methods.Count == 0)
                {
                    emptyTests.Add(test);
                }
            }
            if (emptyTests.Count > 0)
            {
                foreach (ITestClass test in emptyTests)
                {
                    classes.Remove(test);
                }
            }

            if (!_hasLoggedWarning)
            {
                UnitTestHarness.LogWriter.Information(string.Format(CultureInfo.InvariantCulture, Properties.UnitTestMessage.TagTestRunFilter_TaggingInUse, TagExpression));
                _hasLoggedWarning = true;
            }
        }
 /// <summary>
 /// Exclusive attributes are not supported when also using tagging.
 /// </summary>
 /// <param name="classes">List of test classes.</param>
 /// <param name="instances">Test class instance dictionary.</param>
 protected override void FilterExclusiveTestClasses(IList<ITestClass> classes, TestClassInstanceDictionary instances)
 {
 }
 /// <summary>
 /// Perform any custom filtering that the TestRunFilter needs.
 /// </summary>
 /// <param name="classes">List of test classes.</param>
 /// <param name="instances">Test class instance dictionary.</param>
 protected virtual void FilterCustomTestClasses(IList<ITestClass> classes, TestClassInstanceDictionary instances)
 {
 }
 /// <summary>
 /// Filter out tests based on the standard-supported methods.
 /// </summary>
 /// <param name="classes">List of test classes.</param>
 /// <param name="instances">Test class instance dictionary.</param>
 protected void FilterTestClasses(IList<ITestClass> classes, TestClassInstanceDictionary instances)
 {
     FilterExclusiveTestClasses(classes, instances);
     FilterLegacyTestClasses(classes, instances);
     FilterCustomTestClasses(classes, instances);
 }
 /// <summary>
 /// If any exclusive classes are found, filter them.
 /// </summary>
 /// <param name="classes">List of test classes.</param>
 /// <param name="instances">Test class instance dictionary.</param>
 protected virtual void FilterExclusiveTestClasses(IList<ITestClass> classes, TestClassInstanceDictionary instances)
 {
     TestClassHelper.FilterExclusiveClasses(classes, UnitTestHarness.LogWriter);
 }
 /// <summary>
 /// If specific string-contains filters are present.
 /// </summary>
 /// <param name="classes">List of test classes.</param>
 /// <param name="instances">Test class instance dictionary.</param>
 protected virtual void FilterLegacyTestClasses(IList<ITestClass> classes, TestClassInstanceDictionary instances)
 {
     if (_settings != null && _settings.TestClassesToRun != null)
     {
         TestClassHelper.FilterTestsToRun(classes, _settings.TestClassesToRun);
     }
     if (_settings != null && _settings.Parameters != null)
     {
         TestClassHelper.FilterByFilterClassParameter(_settings.Parameters, classes);
     }
 }
Example #13
0
        protected internal override void FilterExclusiveTestClasses(IList<ITestClass> classes, TestClassInstanceDictionary instances)
        {
		subfilter.FilterExclusiveTestClasses (classes, instances);

		FilterByRuntimeVersion (classes, instances);
        }
 public override List<ITestClass> GetTestClasses(IAssembly assembly, TestClassInstanceDictionary instances)
 {
     return base.GetTestClasses(assembly, instances);
 }