← Back to team overview

nunit-core team mailing list archive

[Merge] lp:~simone.busoli/nunitv2/1057911 into lp:nunitv2

 

Simone Busoli has proposed merging lp:~simone.busoli/nunitv2/1057911 into lp:nunitv2.

Requested reviews:
  NUnit Core Developers (nunit-core)
Related bugs:
  Bug #1057911 in NUnit V2: "Trap incorrect input for nunit-console.exe options."
  https://bugs.launchpad.net/nunitv2/+bug/1057911

For more details, see:
https://code.launchpad.net/~simone.busoli/nunitv2/1057911/+merge/129599
-- 
https://code.launchpad.net/~simone.busoli/nunitv2/1057911/+merge/129599
Your team NUnit Core Developers is requested to review the proposed merge of lp:~simone.busoli/nunitv2/1057911 into lp:nunitv2.
=== modified file 'src/ConsoleRunner/nunit-console-exe/nunit-console.exe.build'
--- src/ConsoleRunner/nunit-console-exe/nunit-console.exe.build	2011-11-03 19:18:23 +0000
+++ src/ConsoleRunner/nunit-console-exe/nunit-console.exe.build	2012-10-14 21:16:20 +0000
@@ -12,7 +12,7 @@
         debug="${build.debug}" define="${build.defines}">
       <sources>
         <patternset refid="source-files"/>
-	  <include name="../../GeneratedAssemblyInfo.cs"/>
+	      <include name="../../GeneratedAssemblyInfo.cs"/>
       </sources>
       <references basedir="${current.lib.dir}">
         <include name="nunit.core.dll"/>

=== modified file 'src/ConsoleRunner/nunit-console/ConsoleUi.cs'
--- src/ConsoleRunner/nunit-console/ConsoleUi.cs	2012-10-04 23:42:38 +0000
+++ src/ConsoleRunner/nunit-console/ConsoleUi.cs	2012-10-14 21:16:20 +0000
@@ -104,64 +104,13 @@
 					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;
-
+				EventCollector collector = new EventCollector( options, outWriter, errorWriter );
+
+				TestFilter testFilter;
+					
+				if(!CreateTestFilter(options, out testFilter))
+					return INVALID_ARG;
+
 				TestResult result = null;
 				string savedDirectory = Environment.CurrentDirectory;
 				TextWriter savedOut = Console.Out;
@@ -176,9 +125,10 @@
 					outWriter.Flush();
 					errorWriter.Flush();
 
-					if ( redirectOutput )
+					if (redirectOutput)
 						outWriter.Close();
-					if ( redirectError )
+
+					if (redirectError)
 						errorWriter.Close();
 
 					Environment.CurrentDirectory = savedDirectory;
@@ -233,7 +183,7 @@
                     returnCode = summary.Errors + summary.Failures + summary.NotRunnable;
                 }
 
-				if ( collector.HasExceptions )
+				if (collector.HasExceptions)
 				{
 					collector.WriteExceptions();
 					returnCode = UNEXPECTED_ERROR;
@@ -241,8 +191,86 @@
             
 				return returnCode;
 			}
-		}
-
+		}
+
+		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;
+		}
+
 		#region Helper Methods
         // TODO: See if this can be unified with the Gui's MakeTestPackage
         private TestPackage MakeTestPackage( ConsoleOptions options )

=== modified file 'src/ConsoleRunner/tests/ConsoleRunnerTest.cs'
--- src/ConsoleRunner/tests/ConsoleRunnerTest.cs	2012-07-08 17:20:44 +0000
+++ src/ConsoleRunner/tests/ConsoleRunnerTest.cs	2012-10-14 21:16:20 +0000
@@ -4,7 +4,8 @@
 // copyright ownership at http://nunit.org.
 // ****************************************************************
 
-using System;
+using System;
+using System.Diagnostics;
 using System.IO;
 using System.Text;
 using System.Collections;
@@ -174,6 +175,39 @@
 			StringAssert.Contains( failureMsg, output.ToString() );
 		}
 
+		[Test]
+		public void DoesNotFailWithEmptyRunList()
+		{
+			int returnCode = runFixture(typeof(SuccessTest), "-runlist=EmptyTextFile.txt");
+			Assert.AreEqual(0, returnCode);
+			StringAssert.Contains("Tests run: 0", output.ToString());
+		}
+
+		[Test]
+		public void DoesNotFailIfRunListHasEmptyLines()
+		{
+			int returnCode = runFixture(typeof(SuccessTest), "-runlist=EmptyLineTextFile.txt");
+			Assert.AreEqual(0, returnCode);
+			StringAssert.Contains("Tests run: 0", output.ToString());
+		}
+
+		[Test]
+		public void FailsGracefullyIfRunListPointsToNonExistingFile()
+		{
+			int returnCode = runFixture(typeof(SuccessTest), "-runlist=NonExistingFile.txt");
+			Assert.AreEqual(ConsoleUi.INVALID_ARG, returnCode);
+			StringAssert.Contains("NonExistingFile.txt", output.ToString());
+		}
+
+
+		[Test]
+		public void FailsGracefullyIfRunListPointsToNonExistingDirectory()
+		{
+			int returnCode = runFixture(typeof(SuccessTest), "-runlist=NonExistingDirectory\\NonExistingFile.txt");
+			Assert.AreEqual(ConsoleUi.INVALID_ARG, returnCode);
+			StringAssert.Contains("NonExistingDirectory", output.ToString());
+		}
+
 		private int runFixture( Type type )
 		{
             return executeConsole(new string[] { AssemblyHelper.GetAssemblyPath(type), "-fixture:" + type.FullName, "-noxml" });

=== added file 'src/ConsoleRunner/tests/EmptyLineTextFile.txt'
--- src/ConsoleRunner/tests/EmptyLineTextFile.txt	1970-01-01 00:00:00 +0000
+++ src/ConsoleRunner/tests/EmptyLineTextFile.txt	2012-10-14 21:16:20 +0000
@@ -0,0 +1,1 @@
+

=== added file 'src/ConsoleRunner/tests/EmptyTextFile.txt'
--- src/ConsoleRunner/tests/EmptyTextFile.txt	1970-01-01 00:00:00 +0000
+++ src/ConsoleRunner/tests/EmptyTextFile.txt	2012-10-14 21:16:20 +0000
@@ -0,0 +1,1 @@
+
\ No newline at end of file

=== modified file 'src/ConsoleRunner/tests/nunit-console.tests.build'
--- src/ConsoleRunner/tests/nunit-console.tests.build	2011-03-14 17:09:10 +0000
+++ src/ConsoleRunner/tests/nunit-console.tests.build	2012-10-14 21:16:20 +0000
@@ -25,9 +25,12 @@
         <include name="${current.test.dir}/nunit.framework.tests.dll"/>
         <include name="${current.test.dir}/test-assembly.dll"/>
         <include name="${current.test.dir}/mock-assembly.dll"/>
-		<include name="${current.test.dir}/nonamespace-assembly.dll"/>
+		    <include name="${current.test.dir}/nonamespace-assembly.dll"/>
       </references>
     </csc>
+
+    <copy file="EmptyTextFile.txt" tofile="${current.test.dir}/EmptyTextFile.txt"/>
+    <copy file="EmptyLineTextFile.txt" tofile="${current.test.dir}/EmptyLineTextFile.txt"/>
   </target>
 
   <target name="package">

=== modified file 'src/ConsoleRunner/tests/nunit-console.tests.csproj'
--- src/ConsoleRunner/tests/nunit-console.tests.csproj	2012-09-18 03:49:27 +0000
+++ src/ConsoleRunner/tests/nunit-console.tests.csproj	2012-10-14 21:16:20 +0000
@@ -1,159 +1,167 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="4.0">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{8597D2C6-804D-48CB-BFC7-ED2404D389B0}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit-console.tests</AssemblyName>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>ConsoleRunner.Tests</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>3.5</OldToolsVersion>
-    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
-    <PublishUrl>publish\</PublishUrl>
-    <Install>true</Install>
-    <InstallFrom>Disk</InstallFrom>
-    <UpdateEnabled>false</UpdateEnabled>
-    <UpdateMode>Foreground</UpdateMode>
-    <UpdateInterval>7</UpdateInterval>
-    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
-    <UpdatePeriodically>false</UpdatePeriodically>
-    <UpdateRequired>false</UpdateRequired>
-    <MapFileExtensions>true</MapFileExtensions>
-    <ApplicationRevision>0</ApplicationRevision>
-    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
-    <IsWebBootstrapper>false</IsWebBootstrapper>
-    <UseApplicationTrust>false</UseApplicationTrust>
-    <BootstrapperEnabled>true</BootstrapperEnabled>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <OutputPath>..\..\..\bin\Debug\tests\</OutputPath>
-    <BaseAddress>285212672</BaseAddress>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>TRACE;DEBUG;CLR_2_0,NET_2_0,CS_3_0</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <DebugSymbols>true</DebugSymbols>
-    <FileAlignment>4096</FileAlignment>
-    <Optimize>false</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>full</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <OutputPath>..\..\..\bin\Release\tests\</OutputPath>
-    <BaseAddress>285212672</BaseAddress>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>TRACE;CLR_2_0,NET_2_0,CS_3_0</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <FileAlignment>4096</FileAlignment>
-    <Optimize>true</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>none</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-    <ProjectReference Include="..\..\ClientUtilities\util\nunit.util.dll.csproj">
-      <Name>nunit.util.dll</Name>
-      <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj">
-      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
-      <Name>nunit.core.dll</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj">
-      <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project>
-      <Name>nunit.core.interfaces.dll</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll.csproj">
-      <Name>nunit.framework.dll</Name>
-      <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tests\mock-assembly\mock-assembly.csproj">
-      <Project>{2E368281-3BA8-4050-B05E-0E0E43F8F446}</Project>
-      <Name>mock-assembly</Name>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tests\nonamespace-assembly\nonamespace-assembly.csproj">
-      <Project>{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}</Project>
-      <Name>nonamespace-assembly</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tests\test-assembly\test-assembly.csproj">
-      <Name>test-assembly</Name>
-      <Project>{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}</Project>
-    </ProjectReference>
-    <ProjectReference Include="..\nunit-console\nunit-console.csproj">
-      <Name>nunit-console</Name>
-      <Project>{9367EC89-6A38-42BA-9607-0DC288E4BC3A}</Project>
-      <Private>False</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="CommandLineTests.cs" />
-    <Compile Include="CommandLineTests_MultipleAssemblies.cs" />
-    <Compile Include="ConsoleRunnerTest.cs" />
-    <Compile Include="TestNameParserTests.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="nunit-console.tests.build" />
-  </ItemGroup>
-  <ItemGroup>
-    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
-      <Install>false</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
-      <Visible>False</Visible>
-      <ProductName>.NET Framework 3.5 SP1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
-      <Visible>False</Visible>
-      <ProductName>Windows Installer 3.1</ProductName>
-      <Install>true</Install>
-    </BootstrapperPackage>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="4.0">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{8597D2C6-804D-48CB-BFC7-ED2404D389B0}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit-console.tests</AssemblyName>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>ConsoleRunner.Tests</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>..\..\..\bin\Debug\tests\</OutputPath>
+    <BaseAddress>285212672</BaseAddress>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>TRACE;DEBUG;CLR_2_0,NET_2_0,CS_3_0</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>true</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <Optimize>false</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>full</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>..\..\..\bin\Release\tests\</OutputPath>
+    <BaseAddress>285212672</BaseAddress>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>TRACE;CLR_2_0,NET_2_0,CS_3_0</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <FileAlignment>4096</FileAlignment>
+    <Optimize>true</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>none</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+    <ProjectReference Include="..\..\ClientUtilities\util\nunit.util.dll.csproj">
+      <Name>nunit.util.dll</Name>
+      <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj">
+      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
+      <Name>nunit.core.dll</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj">
+      <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project>
+      <Name>nunit.core.interfaces.dll</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll.csproj">
+      <Name>nunit.framework.dll</Name>
+      <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tests\mock-assembly\mock-assembly.csproj">
+      <Project>{2E368281-3BA8-4050-B05E-0E0E43F8F446}</Project>
+      <Name>mock-assembly</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tests\nonamespace-assembly\nonamespace-assembly.csproj">
+      <Project>{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}</Project>
+      <Name>nonamespace-assembly</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tests\test-assembly\test-assembly.csproj">
+      <Name>test-assembly</Name>
+      <Project>{1960CAC4-9A82-47C5-A9B3-55BC37572C3C}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\nunit-console\nunit-console.csproj">
+      <Name>nunit-console</Name>
+      <Project>{9367EC89-6A38-42BA-9607-0DC288E4BC3A}</Project>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="CommandLineTests.cs" />
+    <Compile Include="CommandLineTests_MultipleAssemblies.cs" />
+    <Compile Include="ConsoleRunnerTest.cs" />
+    <Compile Include="TestNameParserTests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="nunit-console.tests.build" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="EmptyLineTextFile.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="EmptyTextFile.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file