public void ExplicitTestCaseMatchesWhenSelectedDirectly()
 {
     NUnit.Core.TestCase explicitTest = (NUnit.Core.TestCase)TestFinder.Find("ExplicitlyRunTest", testSuite);
     SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture.ExplicitlyRunTest");
     Assert.IsTrue(filter.Pass(explicitTest), "Name Filter did not pass on test case");
     Assert.IsTrue(filter.Pass(testSuite), "Name Filter did not pass on test suite");
 }
 public void HighLevelSuite()
 {
     NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite);
     SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture");
     Assert.AreEqual(true, filter.Pass(mock3), "test case");
     Assert.AreEqual(true, filter.Pass(mockTest), "middle suite");
     Assert.AreEqual(true, filter.Pass(testSuite), "test suite");
 }
 public void ExplicitTestSuiteDoesNotMatchWhenNotSelectedDirectly()
 {
     NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite);
     mockTest.RunState = RunState.Explicit;
     SimpleNameFilter filter = new SimpleNameFilter("Mock Test Suite");
     Assert.AreEqual(false, filter.Pass(mock3), "descendant of explicit suite should not match");
     Assert.AreEqual(false, filter.Pass(mockTest), "explicit suite should not match");
 }
 public void MultipleNameMatchWithTrailingComma()
 {
     Test mock1 = TestFinder.Find("MockTest1", testSuite, true);
     SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture.MockTest3,NUnit.Tests.Assemblies.MockTestFixture.MockTest1,");
     Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case");
     Assert.IsTrue(filter.Pass(mock1), "Name Filter did not pass test case");
     Assert.IsTrue(filter.Pass((TestSuite)testSuite.Tests[0]), "Name Filter did not pass test suite");
 }
        private ITestFilter GetNameFilter(string featureName)
        {
            var nameFilter = new SimpleNameFilter();
            foreach (string name in TestNameParser.Parse(featureName))
                nameFilter.Add(name);

            return nameFilter;
        }
 public void SuiteNameMatch()
 {
     NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite, true);
     SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture");
     Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case");
     Assert.IsTrue(filter.Pass(mockTest), "Fixture did not pass test case");
     Assert.IsTrue(filter.Pass(testSuite), "Suite did not pass test case");
 }
 public void ExplicitTestSuiteMatchesWhenSelectedDirectly()
 {
     NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite);
     mockTest.RunState = RunState.Explicit;
     SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture");
     Assert.AreEqual(true, filter.Pass(mock3), "test case");
     Assert.AreEqual(true, filter.Pass(mockTest), "middle suite");
     Assert.AreEqual(true, filter.Pass(testSuite), "test suite");
 }
 public void SingleNameMatch()
 {
     string fullName = "NUnit.Tests.Assemblies.MockTestFixture.MockTest3";
     Assert.AreEqual(fullName, mock3.TestName.FullName);
     SimpleNameFilter filter = new SimpleNameFilter(fullName);
     Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case");
     Assert.AreEqual("NUnit.Tests.Assemblies.MockTestFixture", ((TestSuite)testSuite.Tests[0]).TestName.FullName);
     Assert.IsTrue(filter.Pass((TestSuite)testSuite.Tests[0]), "Name Filter did not pass test suite");
 }
 public void MultipleNameMatch()
 {
     NUnit.Core.TestCase mock1 = (NUnit.Core.TestCase)TestFinder.Find("MockTest1", testSuite);
     SimpleNameFilter filter = new SimpleNameFilter();
     filter.Add("NUnit.Tests.Assemblies.MockTestFixture.MockTest3");
     filter.Add("NUnit.Tests.Assemblies.MockTestFixture.MockTest1");
     Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case");
     Assert.IsTrue(filter.Pass(mock1), "Name Filter did not pass test case");
     Assert.IsTrue(filter.Pass((TestSuite)testSuite.Tests[0]), "Name Filter did not pass test suite");
 }
		public void RunTests(string[] tests, UnitTestRunner.ITestRunnerCallback testRunnerEventListener)
		{
			List<String> assemblies = GetAssemblies();
			TestSuite suite = PrepareTestSuite(assemblies);

			ITestFilter filter = TestFilter.Empty;
			if (tests != null && tests.Any())
				filter = new SimpleNameFilter(tests);
			
			if (testRunnerEventListener!=null)
				testRunnerEventListener.RunStarted(suite.TestName.FullName, suite.TestCount);
			
			ExecuteTestSuite(suite, testRunnerEventListener, filter);
			
			if (testRunnerEventListener!=null)
				testRunnerEventListener.RunFinished();
		}
		public UnitTestResult[] RunTests(string[] tests, UnitTestRunner.ITestRunnerCallback testRunnerEventListener)
		{
			List<String> assemblies = GetAssemblies();
			TestSuite suite = PrepareTestSuite(assemblies);

			ITestFilter filter = TestFilter.Empty;
			if (tests != null && tests.Any())
				filter = new SimpleNameFilter(tests);

			testRunnerEventListener.RunStarted(suite.TestName.FullName, suite.TestCount);

			NUnit.Core.TestResult result = ExecuteTestSuite(suite,
												testRunnerEventListener,
												filter);
			UpdateTestResults(result);

			testRunnerEventListener.RunFinished();

			return testList.ToArray();
		}
Exemple #12
0
        private TestFilter getTestFilter(Options options)
        {
            TestFilter testFilter = TestFilter.Empty;
            if (options.Tests != null && options.Tests != string.Empty)
                testFilter = new SimpleNameFilter(options.Tests);

            if (options.Categories != null && options.Categories != string.Empty)
            {
                TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.Categories).Filter);
                if (testFilter.IsEmpty)
                    testFilter = excludeFilter;
                else if (testFilter is AndFilter)
                    ((AndFilter)testFilter).Add(excludeFilter);
                else
                    testFilter = new AndFilter(testFilter, excludeFilter);
            }

            if (testFilter is NotFilter)
                ((NotFilter)testFilter).TopLevel = true;
            return testFilter;
        }
        private TestFilter getTestFilter(Options options)
        {
            var testFilter = TestFilter.Empty;
            if (!string.IsNullOrEmpty(options.Tests))
                testFilter = new SimpleNameFilter(options.Tests);

            if (!string.IsNullOrEmpty(options.Categories))
            {
                TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.Categories).Filter);
                if (testFilter.IsEmpty)
                    testFilter = excludeFilter;
                else if (testFilter is AndFilter)
                    ((AndFilter)testFilter).Add(excludeFilter);
                else
                    testFilter = new AndFilter(testFilter, excludeFilter);
            }

            var notFilter = testFilter as NotFilter;
            if (notFilter != null)
                notFilter.TopLevel = true;
            return testFilter;
        }
        public TestResult ExecuteTest(string testName)
        {
            if (_isRunnerReady)
               {
               var result = new NunitTestResult(new TestName());
               var filter = new SimpleNameFilter();
               filter.Add(testName);

               result = _testRunner.Run(_eventListener, filter, false, LoggingThreshold.Off);

               var testSuiteResult = new TestSuite
               {
                   Name = _projectName,
                   TestResults = new List<TestResult>()
               };

               TestAnalyzerHelper.ParseTestResults(testSuiteResult, result);
               return testSuiteResult.TestResults.First();
               }

               return new TestResult();
        }
Exemple #15
0
		public int Execute( ConsoleOptions options )
		{
			XmlTextReader transformReader = GetTransformReader(options);
			if(transformReader == null) return FILE_NOT_FOUND;

			TextWriter outWriter = Console.Out;
			bool redirectOutput = options.output != null && options.output != string.Empty;
			if ( redirectOutput )
			{
				StreamWriter outStreamWriter = new StreamWriter( options.output );
				outStreamWriter.AutoFlush = true;
				outWriter = outStreamWriter;
			}

			TextWriter errorWriter = Console.Error;
			bool redirectError = options.err != null && options.err != string.Empty;
			if ( redirectError )
			{
				StreamWriter errorStreamWriter = new StreamWriter( options.err );
				errorStreamWriter.AutoFlush = true;
				errorWriter = errorStreamWriter;
			}

			TestRunner testRunner = MakeRunnerFromCommandLine( options );

			try
			{
				if (testRunner.Test == null)
				{
					testRunner.Unload();
					Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture);
					return FIXTURE_NOT_FOUND;
				}

				EventCollector collector = new EventCollector( options, outWriter, errorWriter );

				TestFilter testFilter = TestFilter.Empty;
				if ( options.run != null && options.run != string.Empty )
				{
					Console.WriteLine( "Selected test: " + options.run );
					testFilter = new SimpleNameFilter( options.run );
				}

				if ( options.include != null && options.include != string.Empty )
				{
					Console.WriteLine( "Included categories: " + options.include );
					TestFilter includeFilter = new CategoryExpression( options.include ).Filter;
					if ( testFilter.IsEmpty )
						testFilter = includeFilter;
					else
						testFilter = new AndFilter( testFilter, includeFilter );
				}

				if ( options.exclude != null && options.exclude != string.Empty )
				{
					Console.WriteLine( "Excluded categories: " + options.exclude );
					TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter );
					if ( testFilter.IsEmpty )
						testFilter = excludeFilter;
					else if ( testFilter is AndFilter )
						((AndFilter)testFilter).Add( excludeFilter );
					else
						testFilter = new AndFilter( testFilter, excludeFilter );
				}

				TestResult result = null;
				string savedDirectory = Environment.CurrentDirectory;
				TextWriter savedOut = Console.Out;
				TextWriter savedError = Console.Error;

				try
				{
					result = testRunner.Run( collector, testFilter );
				}
				finally
				{
					outWriter.Flush();
					errorWriter.Flush();

					if ( redirectOutput )
						outWriter.Close();
					if ( redirectError )
						errorWriter.Close();

					Environment.CurrentDirectory = savedDirectory;
					Console.SetOut( savedOut );
					Console.SetError( savedError );
				}

				Console.WriteLine();

				string xmlOutput = CreateXmlOutput( result );
			
				if (options.xmlConsole)
				{
					Console.WriteLine(xmlOutput);
				}
				else
				{
					try
					{
						//CreateSummaryDocument(xmlOutput, transformReader );
						XmlResultTransform xform = new XmlResultTransform( transformReader );
						xform.Transform( new StringReader( xmlOutput ), Console.Out );
					}
					catch( Exception ex )
					{
						Console.WriteLine( "Error: {0}", ex.Message );
						return TRANSFORM_ERROR;
					}
				}

				// Write xml output here
				string xmlResultFile = options.xml == null || options.xml == string.Empty
					? "TestResult.xml" : options.xml;

				using ( StreamWriter writer = new StreamWriter( xmlResultFile ) ) 
				{
					writer.Write(xmlOutput);
				}

				//if ( testRunner != null )
				//    testRunner.Unload();

				if ( collector.HasExceptions )
				{
					collector.WriteExceptions();
					return UNEXPECTED_ERROR;
				}
            
				if ( !result.IsFailure ) return OK;

				ResultSummarizer summ = new ResultSummarizer( result );
				return summ.FailureCount;
			}
			finally
			{
				testRunner.Unload();
			}
		}
Exemple #16
0
 ITestFilter GetFilters()
 {
     var simpleNameFilter = new SimpleNameFilter(filters.ToArray());
     return simpleNameFilter;
 }
Exemple #17
0
		public int Execute( ConsoleOptions options )
		{
            this.workDir = options.work;
            if (workDir == null || workDir == string.Empty)
                workDir = Environment.CurrentDirectory;
            else
            {
                workDir = Path.GetFullPath(workDir);
                if (!Directory.Exists(workDir))
                    Directory.CreateDirectory(workDir);
            }

			TextWriter outWriter = Console.Out;
			bool redirectOutput = options.output != null && options.output != string.Empty;
			if ( redirectOutput )
			{
				StreamWriter outStreamWriter = new StreamWriter( Path.Combine(workDir, options.output) );
				outStreamWriter.AutoFlush = true;
				outWriter = outStreamWriter;
			}

			TextWriter errorWriter = Console.Error;
			bool redirectError = options.err != null && options.err != string.Empty;
			if ( redirectError )
			{
				StreamWriter errorStreamWriter = new StreamWriter( Path.Combine(workDir, options.err) );
				errorStreamWriter.AutoFlush = true;
				errorWriter = errorStreamWriter;
			}

            TestPackage package = MakeTestPackage(options);

            ProcessModel processModel = package.Settings.Contains("ProcessModel")
                ? (ProcessModel)package.Settings["ProcessModel"]
                : ProcessModel.Default;

            DomainUsage domainUsage = package.Settings.Contains("DomainUsage")
                ? (DomainUsage)package.Settings["DomainUsage"]
                : DomainUsage.Default;

            RuntimeFramework framework = package.Settings.Contains("RuntimeFramework")
                ? (RuntimeFramework)package.Settings["RuntimeFramework"]
                : RuntimeFramework.CurrentFramework;

#if CLR_2_0 || CLR_4_0
            Console.WriteLine("ProcessModel: {0}    DomainUsage: {1}", processModel, domainUsage);

            Console.WriteLine("Execution Runtime: {0}", framework);
#else
            Console.WriteLine("DomainUsage: {0}", domainUsage);

            if (processModel != ProcessModel.Default && processModel != ProcessModel.Single)
                Console.WriteLine("Warning: Ignoring project setting 'processModel={0}'", processModel);

            if (!RuntimeFramework.CurrentFramework.Supports(framework))
                Console.WriteLine("Warning: Ignoring project setting 'runtimeFramework={0}'", framework);
#endif

            using (TestRunner testRunner = new DefaultTestRunnerFactory().MakeTestRunner(package))
			{
                testRunner.Load(package);

                if (testRunner.Test == null)
				{
					testRunner.Unload();
					Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture);
					return FIXTURE_NOT_FOUND;
				}

				EventCollector collector = new EventCollector( options, outWriter, errorWriter );

				TestFilter testFilter = TestFilter.Empty;
                SimpleNameFilter nameFilter = new SimpleNameFilter();

				if ( options.run != null && options.run != string.Empty )
				{
					Console.WriteLine( "Selected test(s): " + options.run );
                    foreach (string name in TestNameParser.Parse(options.run))
                        nameFilter.Add(name);
                    testFilter = nameFilter;
				}

                if (options.runlist != null && options.runlist != string.Empty)
                {
                    Console.WriteLine("Run list: " + options.runlist);
                    using (StreamReader rdr = new StreamReader(options.runlist))
                    {
                        // NOTE: We can't use rdr.EndOfStream because it's
                        // not present in .NET 1.x.
                        string line = rdr.ReadLine();
                        while (line != null)
                        {
                            if (line[0] != '#')
                                nameFilter.Add(line);
                            line = rdr.ReadLine();
                        }
                    }
                    testFilter = nameFilter;
                }

				if ( options.include != null && options.include != string.Empty )
				{
					TestFilter includeFilter = new CategoryExpression( options.include ).Filter;
                    Console.WriteLine("Included categories: " + includeFilter.ToString());

                    if (testFilter.IsEmpty)
						testFilter = includeFilter;
					else
						testFilter = new AndFilter( testFilter, includeFilter );
				}

				if ( options.exclude != null && options.exclude != string.Empty )
				{
					TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter );
                    Console.WriteLine("Excluded categories: " + excludeFilter.ToString());

					if ( testFilter.IsEmpty )
						testFilter = excludeFilter;
					else if ( testFilter is AndFilter )
						((AndFilter)testFilter).Add( excludeFilter );
					else
						testFilter = new AndFilter( testFilter, excludeFilter );
				}

                if (testFilter is NotFilter)
                    ((NotFilter)testFilter).TopLevel = true;

				TestResult result = null;
				string savedDirectory = Environment.CurrentDirectory;
				TextWriter savedOut = Console.Out;
				TextWriter savedError = Console.Error;

				try
				{
					result = testRunner.Run( collector, testFilter, false, LoggingThreshold.Off );
				}
				finally
				{
					outWriter.Flush();
					errorWriter.Flush();

					if ( redirectOutput )
						outWriter.Close();
					if ( redirectError )
						errorWriter.Close();

					Environment.CurrentDirectory = savedDirectory;
					Console.SetOut( savedOut );
					Console.SetError( savedError );
				}

				Console.WriteLine();

                int returnCode = UNEXPECTED_ERROR;

                if (result != null)
                {
                    string xmlOutput = CreateXmlOutput(result);
                    ResultSummarizer summary = new ResultSummarizer(result);

                    if (options.xmlConsole)
                    {
                        Console.WriteLine(xmlOutput);
                    }
                    else
                    {
                        WriteSummaryReport(summary);
                        if (summary.ErrorsAndFailures > 0 || result.IsError || result.IsFailure)
                        {
                            if (options.stoponerror)
                            {
                                Console.WriteLine("Test run was stopped after first error, as requested.");
                                Console.WriteLine();
                            }

                            WriteErrorsAndFailuresReport(result);
                        }
                        if (summary.TestsNotRun > 0)
                            WriteNotRunReport(result);

                        if (!options.noresult)
                        {
                            // Write xml output here
                            string xmlResultFile = options.result == null || options.result == string.Empty
                                ? "TestResult.xml" : options.result;

                            using (StreamWriter writer = new StreamWriter(Path.Combine(workDir, xmlResultFile)))
                            {
                                writer.Write(xmlOutput);
                            }
                        }
                    }

                    returnCode = summary.ErrorsAndFailures;
                }

				if ( collector.HasExceptions )
				{
					collector.WriteExceptions();
					returnCode = UNEXPECTED_ERROR;
				}
            
				return returnCode;
			}
		}
 private static SimpleNameFilter MakeTestFilter(IEnumerable<TestCase> ptestCases)
 {
     var filter = new SimpleNameFilter();
     foreach (TestCase testCase in ptestCases)
     {
         filter.Add(testCase.FullyQualifiedName);
     }
     return filter;
 }
		public int Execute( ConsoleOptions options )
		{
			TextWriter outWriter = Console.Out;
			bool redirectOutput = options.output != null && options.output != string.Empty;
			if ( redirectOutput )
			{
				StreamWriter outStreamWriter = new StreamWriter( options.output );
				outStreamWriter.AutoFlush = true;
				outWriter = outStreamWriter;
			}

			TextWriter errorWriter = Console.Error;
			bool redirectError = options.err != null && options.err != string.Empty;
			if ( redirectError )
			{
				StreamWriter errorStreamWriter = new StreamWriter( options.err );
				errorStreamWriter.AutoFlush = true;
				errorWriter = errorStreamWriter;
			}

            TestPackage package = MakeTestPackage(options);

            Console.WriteLine("ProcessModel: {0}    DomainUsage: {1}", 
                package.Settings.Contains("ProcessModel")
                    ? package.Settings["ProcessModel"]
                    : "Default", 
                package.Settings.Contains("DomainUsage")
                    ? package.Settings["DomainUsage"]
                    : "Default");

            Console.WriteLine("Execution Runtime: {0}", 
                package.Settings.Contains("RuntimeFramework")
                    ? package.Settings["RuntimeFramework"]
                    : "Default");

            using (TestRunner testRunner = new DefaultTestRunnerFactory().MakeTestRunner(package))
			{
                testRunner.Load(package);

                if (testRunner.Test == null)
				{
					testRunner.Unload();
					Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture);
					return FIXTURE_NOT_FOUND;
				}

				EventCollector collector = new EventCollector( options, outWriter, errorWriter );

				TestFilter testFilter = TestFilter.Empty;
				if ( options.run != null && options.run != string.Empty )
				{
					Console.WriteLine( "Selected test(s): " + options.run );
					testFilter = new SimpleNameFilter( options.run );
				}

				if ( options.include != null && options.include != string.Empty )
				{
					Console.WriteLine( "Included categories: " + options.include );
					TestFilter includeFilter = new CategoryExpression( options.include ).Filter;
					if ( testFilter.IsEmpty )
						testFilter = includeFilter;
					else
						testFilter = new AndFilter( testFilter, includeFilter );
				}

				if ( options.exclude != null && options.exclude != string.Empty )
				{
					Console.WriteLine( "Excluded categories: " + options.exclude );
					TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter );
					if ( testFilter.IsEmpty )
						testFilter = excludeFilter;
					else if ( testFilter is AndFilter )
						((AndFilter)testFilter).Add( excludeFilter );
					else
						testFilter = new AndFilter( testFilter, excludeFilter );
				}

                if (testFilter is NotFilter)
                    ((NotFilter)testFilter).TopLevel = true;

				TestResult result = null;
				string savedDirectory = Environment.CurrentDirectory;
				TextWriter savedOut = Console.Out;
				TextWriter savedError = Console.Error;

				try
				{
					result = testRunner.Run( collector, testFilter );
				}
				finally
				{
					outWriter.Flush();
					errorWriter.Flush();

					if ( redirectOutput )
						outWriter.Close();
					if ( redirectError )
						errorWriter.Close();

					Environment.CurrentDirectory = savedDirectory;
					Console.SetOut( savedOut );
					Console.SetError( savedError );
				}

				Console.WriteLine();

                int returnCode = UNEXPECTED_ERROR;

                if (result != null)
                {
                    string xmlOutput = CreateXmlOutput(result);
                    ResultSummarizer summary = new ResultSummarizer(result);

                    if (options.xmlConsole)
                    {
                        Console.WriteLine(xmlOutput);
                    }
                    else
                    {
                        WriteSummaryReport(summary);
                        if (summary.ErrorsAndFailures > 0)
                            WriteErrorsAndFailuresReport(result);
                        if (summary.TestsNotRun > 0)
                            WriteNotRunReport(result);
                    }

                    // Write xml output here
                    string xmlResultFile = options.xml == null || options.xml == string.Empty
                        ? "TestResult.xml" : options.xml;

                    using (StreamWriter writer = new StreamWriter(xmlResultFile))
                    {
                        writer.Write(xmlOutput);
                    }

                    returnCode = summary.ErrorsAndFailures;
                }

				if ( collector.HasExceptions )
				{
					collector.WriteExceptions();
					returnCode = UNEXPECTED_ERROR;
				}
            
				return returnCode;
			}
		}
Exemple #20
0
        static void Main(string[] args)
        {
            try
            {
                CoreExtensions.Host.InitializeService();

                string assemblyName = "";
                if (args.Length == 2)
                {
                    assemblyName = args[1];
                }
                else
                {
                    Console.WriteLine("usage: VisualNunitRunner.exe [run|list|serve] file");
                    return;
                }

                if (args.Length == 2 && args[0] == "run")
                {
                    // Run tests according to console input.
                    ConsoleTraceListener consoleListener = new ConsoleTraceListener();
                    Trace.Listeners.Add(consoleListener);

                    ConsoleTestRunListener runnerListener = new ConsoleTestRunListener();
                    SimpleNameFilter testFilter = new SimpleNameFilter();
                    testFilter.Add(Console.ReadLine());

                    TestSuite testSuite = new TestBuilder().Build(assemblyName, true);
                    TestResult result = testSuite.Run(runnerListener, testFilter);

                    if (result.StackTrace != null && result.StackTrace.Length > 0)
                    {
                        Trace.TraceError(result.StackTrace);
                    }

                    Console.WriteLine("beginning-of-test-result-xml");
                    StringBuilder builder = new StringBuilder();
                    new XmlResultWriter(new StringWriter(builder)).SaveTestResult(result);
                    Console.WriteLine(builder.ToString());
                }
                else if (args.Length == 2 && args[0] == "list")
                {
                    // List tests to console output.
                    ConsoleTraceListener consoleListener = new ConsoleTraceListener();
                    Trace.Listeners.Add(consoleListener);

                    TestSuite testSuite = new TestBuilder().Build(assemblyName, true);
                    Queue<ITest> testQueue = new Queue<ITest>();
                    testQueue.Enqueue(testSuite);
                    while (testQueue.Count > 0)
                    {
                        ITest test = testQueue.Dequeue();
                        if (test.Tests != null)
                        {
                            foreach (ITest childTest in test.Tests)
                            {
                                testQueue.Enqueue(childTest);
                            }
                        }
                        else
                        {
                            Console.WriteLine(test.TestName.FullName);
                        }
                    }
                }
                else if (args.Length == 2 && args[0] == "serve")
                {
                    // Run in service mode to serve visual studio via named pipes.
                    RunnerServer runnerServer = new RunnerServer(assemblyName);
                    while (runnerServer.IsAlive)
                    {
                        Thread.Sleep(10);
                    }
                    System.Environment.Exit(0);
                }
            }
            catch (Exception e)
            {
                Trace.TraceError("VisualNunitRunner failed: "+e);
            }
        }
        private bool CreateTestFilter(HostedOptions options, out TestFilter testFilter)
        {
            testFilter = TestFilter.Empty;
            SimpleNameFilter simpleNameFilter = new SimpleNameFilter();

            if (testFilter is NotFilter)
            {
                ((NotFilter)testFilter).TopLevel = true;
            }
            return true;
        }
 public void TestDoesNotMatch()
 {
     SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture.MockTest1");
     Assert.IsFalse(filter.Pass(mock3), "Name Filter did pass test case");
     Assert.IsTrue(filter.Pass(testSuite), "Name Filter did not pass test suite");
 }
Exemple #23
0
		internal static bool CreateTestFilter(ConsoleOptions options, out TestFilter testFilter)
		{
			testFilter = TestFilter.Empty;

			SimpleNameFilter nameFilter = new SimpleNameFilter();

			if (options.run != null && options.run != string.Empty)
			{
				Console.WriteLine("Selected test(s): " + options.run);

				foreach (string name in TestNameParser.Parse(options.run))
					nameFilter.Add(name);

				testFilter = nameFilter;
			}

			if (options.runlist != null && options.runlist != string.Empty)
			{
				Console.WriteLine("Run list: " + options.runlist);
				
				try
				{
					using (StreamReader rdr = new StreamReader(options.runlist))
					{
						// NOTE: We can't use rdr.EndOfStream because it's
						// not present in .NET 1.x.
						string line = rdr.ReadLine();
						while (line != null && line.Length > 0)
						{
							if (line[0] != '#')
								nameFilter.Add(line);
							line = rdr.ReadLine();
						}
					}
				}
				catch (Exception e)
				{
					if (e is FileNotFoundException || e is DirectoryNotFoundException)
					{
						Console.WriteLine("Unable to locate file: " + options.runlist);
						return false;
					}
					throw;
				}

				testFilter = nameFilter;
			}

			if (options.include != null && options.include != string.Empty)
			{
				TestFilter includeFilter = new CategoryExpression(options.include).Filter;
				Console.WriteLine("Included categories: " + includeFilter.ToString());

				if (testFilter.IsEmpty)
					testFilter = includeFilter;
				else
					testFilter = new AndFilter(testFilter, includeFilter);
			}

			if (options.exclude != null && options.exclude != string.Empty)
			{
				TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.exclude).Filter);
				Console.WriteLine("Excluded categories: " + excludeFilter.ToString());

				if (testFilter.IsEmpty)
					testFilter = excludeFilter;
				else if (testFilter is AndFilter)
					((AndFilter) testFilter).Add(excludeFilter);
				else
					testFilter = new AndFilter(testFilter, excludeFilter);
			}

			if (testFilter is NotFilter)
				((NotFilter) testFilter).TopLevel = true;

			return true;
		}
 public void MultipleSuiteNameMatch()
 {
     testSuite.Add(TestBuilder.MakeFixture(typeof(OneTestCase)));
     NUnit.Core.TestSuite mockTestFixture = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite, true);
     NUnit.Core.TestSuite oneTestCaseFixture = (NUnit.Core.TestSuite)TestFinder.Find("OneTestCase", testSuite, true);
     SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture,NUnit.Tests.Singletons.OneTestCase");
     Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case");
     Assert.IsTrue(filter.Pass(mockTestFixture), "Fixture did not pass test case");
     Assert.IsTrue(filter.Pass(oneTestCaseFixture), "Fixture did not pass test case");
     Assert.IsTrue(filter.Pass(testSuite), "Suite did not pass test case");
 }
Exemple #25
0
        public int Execute(ConsoleOptions options)
        {
            var outWriter = System.Console.Out;
            var redirectOutput = options.output != null && options.output != string.Empty;
            if (redirectOutput)
            {
                var outStreamWriter = new StreamWriter(options.output);
                outStreamWriter.AutoFlush = true;
                outWriter = outStreamWriter;
            }

            var errorWriter = System.Console.Error;
            var redirectError = options.err != null && options.err != string.Empty;
            if (redirectError)
            {
                var errorStreamWriter = new StreamWriter(options.err);
                errorStreamWriter.AutoFlush = true;
                errorWriter = errorStreamWriter;
            }

            var package = MakeTestPackage(options);

            System.Console.WriteLine("ProcessModel: {0}    DomainUsage: {1}",
                package.Settings.Contains("ProcessModel")
                    ? package.Settings["ProcessModel"]
                    : "Default",
                package.Settings.Contains("DomainUsage")
                    ? package.Settings["DomainUsage"]
                    : "Default");

            System.Console.WriteLine("Execution Runtime: {0}",
                package.Settings.Contains("RuntimeFramework")
                    ? package.Settings["RuntimeFramework"]
                    : "Default");

            var collector = new EventCollector(options, outWriter, errorWriter);

            var testFilter = TestFilter.Empty;
            if (options.run != null && options.run != string.Empty)
            {
                System.Console.WriteLine("Selected test(s): " + options.run);
                testFilter = new SimpleNameFilter(options.run);
            }

            if (options.include != null && options.include != string.Empty)
            {
                System.Console.WriteLine("Included categories: " + options.include);
                var includeFilter = new CategoryExpression(options.include).Filter;
                if (testFilter.IsEmpty)
                    testFilter = includeFilter;
                else
                    testFilter = new AndFilter(testFilter, includeFilter);
            }

            if (options.exclude != null && options.exclude != string.Empty)
            {
                System.Console.WriteLine("Excluded categories: " + options.exclude);
                TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.exclude).Filter);
                if (testFilter.IsEmpty)
                    testFilter = excludeFilter;
                else if (testFilter is AndFilter)
                    ((AndFilter)testFilter).Add(excludeFilter);
                else
                    testFilter = new AndFilter(testFilter, excludeFilter);
            }

            if (testFilter is NotFilter)
                ((NotFilter)testFilter).TopLevel = true;
            TestResult result;

            var returnCode = DoRun(options, redirectOutput, redirectError, package, outWriter, errorWriter, testFilter, out result, collector);
            if (returnCode != 0)
                return returnCode;

            returnCode = UNEXPECTED_ERROR;

            if (result != null)
            {
                var xmlOutput = CreateXmlOutput(result);
                var summary = new ResultSummarizer(result);

                if (options.xmlConsole)
                {
                    System.Console.WriteLine(xmlOutput);
                }
                else
                {
                    WriteSummaryReport(summary);
                    if (summary.ErrorsAndFailures > 0)
                        WriteErrorsAndFailuresReport(result);
                    if (summary.TestsNotRun > 0)
                        WriteNotRunReport(result);
                }

                // Write xml output here
                var xmlResultFile = options.xml == null || options.xml == string.Empty
                                        ? "TestResult.xml" : options.xml;

                using (var writer = new StreamWriter(xmlResultFile))
                {
                    writer.Write(xmlOutput);
                }

                returnCode = summary.ErrorsAndFailures;
            }

            if (collector.HasExceptions)
            {
                collector.WriteExceptions();
                returnCode = UNEXPECTED_ERROR;
            }

            return returnCode;
        }
        /// <summary>
        /// Runs the requested test and return result XML.
        /// </summary>
        /// <param name="testName"></param>
        /// <returns>Result XML document</returns> 
        private string RunTest(string testName, bool explicitRun)
        {
            // Execute the give test.
            SimpleNameFilter testFilter = new SimpleNameFilter();

            testFilter.Add(testName);

            TestSuite testSuite = new TestBuilder().Build(assemblyName, true);
            //TestResult result = testSuite.Run(this, testFilter);

            TestResult result = null;
            Queue<ITest> testQueue = new Queue<ITest>();
            testQueue.Enqueue(testSuite);
            while (testQueue.Count > 0)
            {
                ITest test = testQueue.Dequeue();

                if (test.Tests != null)
                {
                    foreach (ITest childTest in test.Tests)
                    {
                        testQueue.Enqueue(childTest);
                    }
                }
                else
                {
                    if (test.TestName.FullName.Equals(testName))
                    {
                        if (!explicitRun && test.RunState == RunState.Explicit)
                        {
                            result = new TestResult(test.TestName);
                        }
                        else
                        {
                            result = ((Test)test).Run(this, null);
                        }
                    }
                }
            }

            // Trace error stack trace.
            if (result.StackTrace != null && result.StackTrace.Length > 0)
            {
                Trace.TraceError(result.StackTrace);
            }

            // Serialize result to XML.
            StringBuilder builder = new StringBuilder();
            new XmlResultWriter(new StringWriter(builder)).SaveTestResult(result);

            return builder.ToString();
        }
        private object RunFixture(string name)
        {
            var invalid = new { text = "Please select a valid fixture", status = "info" };
            if (String.IsNullOrWhiteSpace(name)) return new { message = invalid };

            if (!tests.Any(t => t.ClassName.Equals(name))) return new { message = invalid };

            var namesToAdd = tests
                .Where(t => t.ClassName.Equals(name))
                .OrderBy(t => t.TestName.TestID.ToString())
                .Select(t => t.TestName.FullName)
                .ToArray();

            var simpleNameFilter = new SimpleNameFilter(namesToAdd);
            return RunTests(simpleNameFilter);
        }
Exemple #28
0
        protected ITestFilter ConstructFilter()
        {
            var categories = (from ListItem item in cblCategories.Items
                where item.Selected
                select item.Value).ToArray();

            var methodNames = (from ListItem item in cblMethods.Items
                where item.Selected
                select item.Value).ToArray();

            if (!categories.Any() && !methodNames.Any())
                return TestFilter.Empty;

            var categoryFilter = new CategoryFilter(categories);
            var methodFilter = new SimpleNameFilter(methodNames);

            return new OrFilter(categoryFilter, methodFilter);
        }
        private object RunTest(string id)
        {
            var invalid = new { text = "Please select a valid test", status = "info" };
            if (String.IsNullOrWhiteSpace(id)) return new { message = invalid };

            var test = tests.FirstOrDefault(t => t.TestName.FullName.Equals(id));
            if (test == null) return new { message = invalid };

            var simpleNameFilter = new SimpleNameFilter(id);
            return RunTests(simpleNameFilter);
        }
 public void ExplicitTestCaseDoesNotMatchWhenNotSelectedDirectly()
 {
     Test explicitTest = TestFinder.Find("ExplicitlyRunTest", testSuite, true);
     SimpleNameFilter filter = new SimpleNameFilter("Mock Test Suite");
     Assert.AreEqual(false, filter.Pass(explicitTest));
 }