diff --git a/configure.ac b/configure.ac
index 24d1f32afe..cd94ab8ab0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -123,7 +123,14 @@ AM_CONDITIONAL(ENABLE_MONODOC, test "x$enable_monodoc" = "xyes")
## Check for the gapi programs
PKG_CHECK_MODULES(GAPI, gapi-2.0 >= $GLIBSHARP_REQUIRED_VERSION)
-PKG_CHECK_MODULES(MONO_NUNIT, mono-nunit >= 1.0, do_tests="yes", do_tests="no")
+## NUnit tests
+AC_PATH_PROG(NUNIT_TESTER, nunit-console, no)
+if test "x$NUNIT_TESTER" = "xno" ; then
+ AC_MSG_WARN([Could not find nunit-console: unit tests cannot be executed])
+fi
+AC_SUBST(NUNIT_TESTER)
+
+PKG_CHECK_MODULES(MONO_NUNIT, mono-nunit >= 2.0, do_tests="yes", do_tests="no")
AC_SUBST(MONO_NUNIT_LIBS)
AM_CONDITIONAL(ENABLE_TESTS, test "x$do_tests" = "xyes")
if test "x$do_tests" = "xno"; then
diff --git a/tests/ConsoleUi.cs b/tests/ConsoleUi.cs
deleted file mode 100644
index 44edb1b3db..0000000000
--- a/tests/ConsoleUi.cs
+++ /dev/null
@@ -1,421 +0,0 @@
-#region Copyright (c) 2002-2003, James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole, Philip A. Craig
-/************************************************************************************
-'
-' Copyright © 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
-' Copyright © 2000-2003 Philip A. Craig
-'
-' This software is provided 'as-is', without any express or implied warranty. In no
-' event will the authors be held liable for any damages arising from the use of this
-' software.
-'
-' Permission is granted to anyone to use this software for any purpose, including
-' commercial applications, and to alter it and redistribute it freely, subject to the
-' following restrictions:
-'
-' 1. The origin of this software must not be misrepresented; you must not claim that
-' you wrote the original software. If you use this software in a product, an
-' acknowledgment (see the following) in the product documentation is required.
-'
-' Portions Copyright © 2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
-' or Copyright © 2000-2003 Philip A. Craig
-'
-' 2. Altered source versions must be plainly marked as such, and must not be
-' misrepresented as being the original software.
-'
-' 3. This notice may not be removed or altered from any source distribution.
-'
-'***********************************************************************************/
-#endregion
-
-namespace NUnit.Console
-{
- using System;
- using System.Collections;
- using System.Collections.Specialized;
- using System.IO;
- using System.Reflection;
- using System.Xml;
- using System.Xml.Xsl;
- using System.Xml.XPath;
- using System.Resources;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Diagnostics;
- using NUnit.Core;
- using NUnit.Util;
-
-
- ///
- /// Summary description for ConsoleUi.
- ///
- public class ConsoleUi
- {
- [STAThread]
- public static int Main(string[] args)
- {
- ConsoleOptions options = new ConsoleOptions(args);
- if(!options.nologo)
- WriteCopyright();
-
- if(options.help)
- {
- options.Help();
- return 0;
- }
-
- if(options.NoArgs)
- {
- Console.Error.WriteLine("fatal error: no inputs specified");
- options.Help();
- return 0;
- }
-
- if(!options.Validate())
- {
- Console.Error.WriteLine("fatal error: invalid arguments");
- options.Help();
- return 2;
- }
-
- try
- {
- ConsoleUi consoleUi = new ConsoleUi();
- consoleUi.Execute( options );
- return 0;
- }
- catch( FileNotFoundException ex )
- {
- Console.WriteLine( ex.Message );
- return 2;
- }
- catch( BadImageFormatException ex )
- {
- Console.WriteLine( ex.Message );
- return 2;
- }
- catch( Exception ex )
- {
- Console.WriteLine( "Unhandled Exception:\n{0}", ex.ToString() );
- return 2;
- }
- finally
- {
- if(options.wait)
- {
- Console.Out.WriteLine("\nHit key to continue");
- Console.ReadLine();
- }
- }
- }
-
- private static XmlTextReader GetTransformReader(ConsoleOptions parser)
- {
- XmlTextReader reader = null;
- if(!parser.IsTransform)
- {
- Assembly assembly = Assembly.GetAssembly(typeof(XmlResultVisitor));
- ResourceManager resourceManager = new ResourceManager("NUnit.Util.Transform",assembly);
- string xmlData = (string)resourceManager.GetObject("Summary.xslt");
-
- reader = new XmlTextReader(new StringReader(xmlData));
- }
- else
- {
- FileInfo xsltInfo = new FileInfo(parser.transform);
- if(!xsltInfo.Exists)
- {
- Console.Error.WriteLine("Transform file: {0} does not exist", xsltInfo.FullName);
- reader = null;
- }
- else
- {
- reader = new XmlTextReader(xsltInfo.FullName);
- }
- }
-
- return reader;
- }
-
- private static void WriteCopyright()
- {
- Assembly executingAssembly = Assembly.GetExecutingAssembly();
- System.Version version = executingAssembly.GetName().Version;
-
- string clrPlatform = Type.GetType("Mono.Runtime", false) == null ? ".NET" : "Mono";
- Console.WriteLine( string.Format("OS Version: {0} {1} Version: {2}",
- Environment.OSVersion, clrPlatform, Environment.Version ) );
- Console.WriteLine();
- }
-
- private static Test MakeTestFromCommandLine(TestDomain testDomain, ConsoleOptions parser)
- {
- NUnitProject project;
-
- if ( parser.IsTestProject )
- {
- project = NUnitProject.LoadProject( (string)parser.Parameters[0] );
- string configName = (string) parser.config;
- if ( configName != null )
- project.SetActiveConfig( configName );
- }
- else
- project = NUnitProject.FromAssemblies( (string[])parser.Parameters.ToArray( typeof( string ) ) );
-
- return testDomain.Load( project, parser.fixture );
- }
-
- public ConsoleUi()
- {
- }
-
- public int Execute( ConsoleOptions options )
- {
- XmlTextReader transformReader = GetTransformReader(options);
- if(transformReader == null) return 3;
-
- ConsoleWriter outStream = options.isOut
- ? new ConsoleWriter( new StreamWriter( options.output ) )
- : new ConsoleWriter(Console.Out);
-
- ConsoleWriter errorStream = options.isErr
- ? new ConsoleWriter( new StreamWriter( options.err ) )
- : new ConsoleWriter(Console.Error);
-
- TestDomain testDomain = new TestDomain(outStream, errorStream);
- if ( options.noshadow ) testDomain.ShadowCopyFiles = false;
-
- Test test = MakeTestFromCommandLine(testDomain, options);
-
- if(test == null)
- {
- Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture);
- return 2;
- }
-
- Directory.SetCurrentDirectory(new FileInfo((string)options.Parameters[0]).DirectoryName);
-
- EventListener collector = new EventCollector( options, outStream );
-
- string savedDirectory = Environment.CurrentDirectory;
-
- if (options.HasInclude)
- {
- Console.WriteLine( "Included categories: " + options.include );
- testDomain.SetFilter( new CategoryFilter( options.IncludedCategories ) );
- }
- else if ( options.HasExclude )
- {
- Console.WriteLine( "Excluded categories: " + options.exclude );
- testDomain.SetFilter( new CategoryFilter( options.ExcludedCategories, true ) );
- }
-
- TestResult result = null;
- if ( options.thread )
- {
- testDomain.RunTest( collector );
- testDomain.Wait();
- result = testDomain.Result;
- }
- else
- {
- result = testDomain.Run( collector );
- }
-
- Directory.SetCurrentDirectory( savedDirectory );
-
- Console.WriteLine();
-
- string xmlOutput = CreateXmlOutput( result );
-
- if (options.xmlConsole)
- Console.WriteLine(xmlOutput);
- else
- CreateSummaryDocument(xmlOutput, transformReader);
-
- // Write xml output here
- string xmlResultFile = options.IsXml ? options.xml : "TestResult.xml";
-
- using ( StreamWriter writer = new StreamWriter( xmlResultFile ) )
- {
- writer.Write(xmlOutput);
- }
-
- if ( testDomain != null )
- testDomain.Unload();
-
- return result.IsFailure ? 1 : 0;
- }
-
- private string CreateXmlOutput( TestResult result )
- {
- StringBuilder builder = new StringBuilder();
- XmlResultVisitor resultVisitor = new XmlResultVisitor(new StringWriter( builder ), result);
- result.Accept(resultVisitor);
- resultVisitor.Write();
-
- return builder.ToString();
- }
-
- private void CreateSummaryDocument(string xmlOutput, XmlTextReader transformReader)
- {
- XPathDocument originalXPathDocument = new XPathDocument(new StringReader(xmlOutput));
- XslTransform summaryXslTransform = new XslTransform();
-
- // Using obsolete form for now, remove warning suppression from project after changing
- summaryXslTransform.Load(transformReader);
-
- // Using obsolete form for now, remove warning suppression from project after changing
- summaryXslTransform.Transform(originalXPathDocument,null,Console.Out);
- }
-
- #region Nested Class to Handle Events
-
- private class EventCollector : LongLivingMarshalByRefObject, EventListener
- {
- private int testRunCount;
- private int testIgnoreCount;
- private int failureCount;
- private int level;
-
- private ConsoleOptions options;
- private ConsoleWriter writer;
-
- StringCollection messages;
-
- private bool debugger = false;
- private string currentTestName;
-
- public EventCollector( ConsoleOptions options, ConsoleWriter writer )
- {
- debugger = Debugger.IsAttached;
- level = 0;
- this.options = options;
- this.writer = writer;
- this.currentTestName = string.Empty;
- }
-
- public void RunStarted(Test[] tests)
- {
- }
-
- public void RunFinished(TestResult[] results)
- {
- }
-
- public void RunFinished(Exception exception)
- {
- }
-
- public void TestFinished(TestCaseResult testResult)
- {
- if ( !options.xmlConsole && !options.labels )
- {
- if(testResult.Executed)
- {
- testRunCount++;
-
- if(testResult.IsFailure)
- {
- failureCount++;
- Console.Write("F");
- if ( debugger )
- {
- messages.Add( string.Format( "{0}) {1} :", failureCount, testResult.Test.FullName ) );
- messages.Add( testResult.Message.Trim( Environment.NewLine.ToCharArray() ) );
-
- string stackTrace = StackTraceFilter.Filter( testResult.StackTrace );
- string[] trace = stackTrace.Split( System.Environment.NewLine.ToCharArray() );
- foreach( string s in trace )
- {
- if ( s != string.Empty )
- {
- string link = Regex.Replace( s.Trim(), @".* in (.*):line (.*)", "$1($2)");
- messages.Add( string.Format( "at\n{0}", link ) );
- }
- }
- }
- }
- }
- else
- {
- testIgnoreCount++;
- Console.Write("N");
- }
- }
-
- currentTestName = string.Empty;
- }
-
- public void TestStarted(TestCase testCase)
- {
- currentTestName = testCase.FullName;
-
- if ( options.labels )
- writer.WriteLine("***** {0}", testCase.FullName );
- else if ( !options.xmlConsole )
- Console.Write(".");
-}
-
- public void SuiteStarted(TestSuite suite)
- {
- if ( debugger && level++ == 0 )
- {
- messages = new StringCollection();
- testRunCount = 0;
- testIgnoreCount = 0;
- failureCount = 0;
- Trace.WriteLine( "################################ UNIT TESTS ################################" );
- Trace.WriteLine( "Running tests in '" + suite.FullName + "'..." );
- }
- }
-
- public void SuiteFinished(TestSuiteResult suiteResult)
- {
- if ( debugger && --level == 0)
- {
- Trace.WriteLine( "############################################################################" );
-
- if (messages.Count == 0)
- {
- Trace.WriteLine( "############## S U C C E S S #################" );
- }
- else
- {
- Trace.WriteLine( "############## F A I L U R E S #################" );
-
- foreach ( string s in messages )
- {
- Trace.WriteLine(s);
- }
- }
-
- Trace.WriteLine( "############################################################################" );
- Trace.WriteLine( "Executed tests : " + testRunCount );
- Trace.WriteLine( "Ignored tests : " + testIgnoreCount );
- Trace.WriteLine( "Failed tests : " + failureCount );
- Trace.WriteLine( "Total time : " + suiteResult.Time + " seconds" );
- Trace.WriteLine( "############################################################################");
- }
- }
-
- public void UnhandledException( Exception exception )
- {
- string msg = string.Format( "##### Unhandled Exception while running {0}", currentTestName );
-
- // If we do labels, we already have a newline
- if ( !options.labels ) writer.WriteLine();
- writer.WriteLine( msg );
- writer.WriteLine( exception.ToString() );
-
- if ( debugger )
- {
- Trace.WriteLine( msg );
- Trace.WriteLine( exception.ToString() );
- }
- }
- }
-
- #endregion
- }
-}
-
diff --git a/tests/Makefile.am b/tests/Makefile.am
index cb0f4f51b9..b9ed1fc0bd 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,23 +1,15 @@
-MCS_FLAGS = -debug
-NUNIT_FLAGS = $(MONO_NUNIT_LIBS)
+MCS_FLAGS = -debug $(MONO_NUNIT_LIBS)
ASSEMBLY_NAME = gstreamer-tests
ASSEMBLY = $(ASSEMBLY_NAME).dll
ASSEMBLY_CSFILES = $(srcdir)/ApplicationTest.cs $(srcdir)/BinTest.cs $(srcdir)/BufferTest.cs $(srcdir)/CapsTest.cs $(srcdir)/PadTest.cs $(srcdir)/ElementTest.cs $(srcdir)/MessageTest.cs $(srcdir)/PipelineTest.cs
-NUNIT_TESTER_NAME = ConsoleUi
-NUNIT_TESTER = $(NUNIT_TESTER_NAME).exe
-NUNIT_TESTER_CSFILES = $(srcdir)/$(NUNIT_TESTER_NAME).cs
-
$(ASSEMBLY): $(ASSEMBLY_CSFILES)
- $(CSC) $(MCS_FLAGS) $(NUNIT_FLAGS) -out:$@ -target:library -r:$(top_builddir)/gstreamer-sharp/gstreamer-sharp.dll $(ASSEMBLY_CSFILES) $(GLIBSHARP_LIBS)
+ $(CSC) $(MCS_FLAGS) -out:$@ -target:library -r:$(top_builddir)/gstreamer-sharp/gstreamer-sharp.dll $(ASSEMBLY_CSFILES) $(GLIBSHARP_LIBS)
-$(NUNIT_TESTER): $(NUNIT_TESTER_CSFILES)
- $(CSC) $(MCS_FLAGS) -out:$@ $(NUNIT_FLAGS) $(NUNIT_TESTER_CSFILES)
+run-test: $(ASSEMBLY)
+ MONO_PATH="../gstreamer-sharp/" $(MONO) $(NUNIT_TESTER) $(ASSEMBLY)
-run-test: $(NUNIT_TESTER) $(ASSEMBLY)
- MONO_PATH="../gstreamer-sharp/" mono --debug $(NUNIT_TESTER) $(ASSEMBLY)
-
-CLEANFILES = $(ASSEMBLY) $(NUNIT_TESTER) TestResult.xml
-DISTCLEANFILES = *.mdb Makefile.in *.dll *.exe
+CLEANFILES = $(ASSEMBLY) *.mdb *.pdb TestResult.xml
+DISTCLEANFILES = Makefile.in