Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a96ce278d2 | |||
| a10c13626c |
@@ -0,0 +1,36 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("SampleTestAssembly")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("SampleTestAssembly")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("bdafb5dd-ffb3-4a94-a312-dfb080010846")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
@@ -1,11 +1,75 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{BDAFB5DD-FFB3-4A94-A312-DFB080010846}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>SampleTestAssembly</RootNamespace>
|
||||||
|
<AssemblyName>SampleTestAssembly</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="xunit" Version="2.4.1" />
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="xunit.assert, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\xunit.assert.2.1.0\lib\dotnet\xunit.assert.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="xunit.core, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\xunit.extensibility.core.2.1.0\lib\dotnet\xunit.core.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="xunit.execution.desktop, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\xunit.extensibility.execution.2.1.0\lib\net45\xunit.execution.desktop.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Class1.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
</Project>
|
</Project>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="xunit" version="2.1.0" targetFramework="net452" />
|
||||||
|
<package id="xunit.abstractions" version="2.0.0" targetFramework="net452" />
|
||||||
|
<package id="xunit.assert" version="2.1.0" targetFramework="net452" />
|
||||||
|
<package id="xunit.core" version="2.1.0" targetFramework="net452" />
|
||||||
|
<package id="xunit.extensibility.core" version="2.1.0" targetFramework="net452" />
|
||||||
|
<package id="xunit.extensibility.execution" version="2.1.0" targetFramework="net452" />
|
||||||
|
</packages>
|
||||||
@@ -7,7 +7,7 @@ namespace Xunit.Runner.Data
|
|||||||
{
|
{
|
||||||
private readonly BinaryReader _reader;
|
private readonly BinaryReader _reader;
|
||||||
private bool _closed;
|
private bool _closed;
|
||||||
private Exception _exception;
|
private Exception? _exception;
|
||||||
|
|
||||||
public bool IsConnected => !_closed;
|
public bool IsConnected => !_closed;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("xunit.runner.data")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("xunit.runner.data")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("a1f579f4-443e-4f64-bc55-998ab86ff293")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
@@ -1,8 +1,59 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{A1F579F4-443E-4F64-BC55-998AB86FF293}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Xunit.Runner.Data</RootNamespace>
|
<RootNamespace>Xunit.Runner.Data</RootNamespace>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<AssemblyName>xunit.runner.data</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="ClientReader.cs" />
|
||||||
|
<Compile Include="ClientWriter.cs" />
|
||||||
|
<Compile Include="Constants.cs" />
|
||||||
|
<Compile Include="TestCaseData.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="TestDataKind.cs" />
|
||||||
|
<Compile Include="TestResultData.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
#if NETFRAMEWORK
|
|
||||||
|
|
||||||
// Taken from https://github.com/xunit/xunit/blob/master/src/common/AssemblyResolution/AssemblyHelper_Desktop.cs
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.IO;
|
|
||||||
using System.Reflection;
|
|
||||||
using Xunit.Abstractions;
|
|
||||||
using Xunit.Sdk;
|
|
||||||
|
|
||||||
namespace Xunit
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// This class provides assistance with assembly resolution for missing assemblies.
|
|
||||||
/// </summary>
|
|
||||||
class AssemblyHelper : LongLivedMarshalByRefObject, IDisposable
|
|
||||||
{
|
|
||||||
static readonly string[] Extensions = { ".dll", ".exe" };
|
|
||||||
|
|
||||||
readonly string directory;
|
|
||||||
readonly IMessageSink internalDiagnosticsMessageSink;
|
|
||||||
readonly Dictionary<string, Assembly> lookupCache = new Dictionary<string, Assembly>();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Constructs an instance using the given <paramref name="directory"/> for resolution.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="directory">The directory to use for resolving assemblies.</param>
|
|
||||||
public AssemblyHelper(string directory) : this(directory, null) { }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Constructs an instance using the given <paramref name="directory"/> for resolution.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="directory">The directory to use for resolving assemblies.</param>
|
|
||||||
/// <param name="internalDiagnosticsMessageSink">The message sink to send internal diagnostics messages to</param>
|
|
||||||
public AssemblyHelper(string directory, IMessageSink internalDiagnosticsMessageSink)
|
|
||||||
{
|
|
||||||
this.directory = directory;
|
|
||||||
this.internalDiagnosticsMessageSink = internalDiagnosticsMessageSink;
|
|
||||||
|
|
||||||
AppDomain.CurrentDomain.AssemblyResolve += Resolve;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public void Dispose()
|
|
||||||
=> AppDomain.CurrentDomain.AssemblyResolve -= Resolve;
|
|
||||||
|
|
||||||
Assembly LoadAssembly(AssemblyName assemblyName)
|
|
||||||
{
|
|
||||||
if (lookupCache.TryGetValue(assemblyName.Name, out var result))
|
|
||||||
return result;
|
|
||||||
|
|
||||||
var path = Path.Combine(directory, assemblyName.Name);
|
|
||||||
result = ResolveAndLoadAssembly(path, out var resolvedAssemblyPath);
|
|
||||||
|
|
||||||
if (internalDiagnosticsMessageSink != null)
|
|
||||||
{
|
|
||||||
if (result == null)
|
|
||||||
internalDiagnosticsMessageSink.OnMessage(new DiagnosticMessage($"[AssemblyHelper_Desktop.LoadAssembly] Resolution for '{assemblyName.Name}' failed, passed down to next resolver"));
|
|
||||||
else
|
|
||||||
internalDiagnosticsMessageSink.OnMessage(new DiagnosticMessage($"[AssemblyHelper_Desktop.LoadAssembly] Resolved '{assemblyName.Name}' to '{resolvedAssemblyPath}'"));
|
|
||||||
}
|
|
||||||
|
|
||||||
lookupCache[assemblyName.Name] = result;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
Assembly Resolve(object sender, ResolveEventArgs args)
|
|
||||||
=> LoadAssembly(new AssemblyName(args.Name));
|
|
||||||
|
|
||||||
Assembly ResolveAndLoadAssembly(string pathWithoutExtension, out string resolvedAssemblyPath)
|
|
||||||
{
|
|
||||||
foreach (var extension in Extensions)
|
|
||||||
{
|
|
||||||
resolvedAssemblyPath = pathWithoutExtension + extension;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (File.Exists(resolvedAssemblyPath))
|
|
||||||
return Assembly.LoadFrom(resolvedAssemblyPath);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
|
||||||
|
|
||||||
resolvedAssemblyPath = null;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Subscribes to the appropriate assembly resolution event, to provide automatic assembly resolution for
|
|
||||||
/// an assembly and any of its dependencies. Depending on the target platform, this may include the use
|
|
||||||
/// of the .deps.json file generated during the build process.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>An object which, when disposed, un-subscribes.</returns>
|
|
||||||
public static IDisposable SubscribeResolveForAssembly(string assemblyFileName, IMessageSink internalDiagnosticsMessageSink = null)
|
|
||||||
=> new AssemblyHelper(Path.GetDirectoryName(Path.GetFullPath(assemblyFileName)), internalDiagnosticsMessageSink);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Subscribes to the appropriate assembly resolution event, to provide automatic assembly resolution for
|
|
||||||
/// an assembly and any of its dependencies. Depending on the target platform, this may include the use
|
|
||||||
/// of the .deps.json file generated during the build process.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>An object which, when disposed, un-subscribes.</returns>
|
|
||||||
public static IDisposable SubscribeResolveForAssembly(Type typeInAssembly, IMessageSink internalDiagnosticsMessageSink = null)
|
|
||||||
=> new AssemblyHelper(Path.GetDirectoryName(typeInAssembly.Assembly.Location), internalDiagnosticsMessageSink);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
using Xunit.Sdk;
|
|
||||||
|
|
||||||
namespace Xunit.Runner.Worker.MessageSinks
|
namespace Xunit.Runner.Worker.MessageSinks
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("xunit.runner.worker")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("xunit.runner.worker")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("9df97a2b-0eb5-4b12-9f81-69dfac979814")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
@@ -9,7 +9,7 @@ namespace Xunit.Runner.Worker
|
|||||||
protected static void Go(string assemblyFileName, Stream stream, AppDomainSupport appDomainSupport,
|
protected static void Go(string assemblyFileName, Stream stream, AppDomainSupport appDomainSupport,
|
||||||
Action<XunitFrontController, TestAssemblyConfiguration, ClientWriter> action)
|
Action<XunitFrontController, TestAssemblyConfiguration, ClientWriter> action)
|
||||||
{
|
{
|
||||||
using (AssemblyHelper.SubscribeResolveForAssembly(assemblyFileName))
|
using (AssemblyHelper.SubscribeResolve())
|
||||||
using (var xunit = new XunitFrontController(appDomainSupport, assemblyFileName, shadowCopy: false))
|
using (var xunit = new XunitFrontController(appDomainSupport, assemblyFileName, shadowCopy: false))
|
||||||
using (var writer = new ClientWriter(stream))
|
using (var writer = new ClientWriter(stream))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="xunit.abstractions" version="2.0.0" targetFramework="net452" />
|
||||||
|
<package id="xunit.runner.utility" version="2.1.0" targetFramework="net46" />
|
||||||
|
</packages>
|
||||||
@@ -1,14 +1,86 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{9DF97A2B-0EB5-4B12-9F81-69DFAC979814}</ProjectGuid>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>Xunit.Runner.Worker</RootNamespace>
|
<RootNamespace>Xunit.Runner.Worker</RootNamespace>
|
||||||
<TargetFramework>net472</TargetFramework>
|
<AssemblyName>xunit.runner.worker</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="xunit.runner.utility" Version="2.4.1" />
|
<Reference Include="System" />
|
||||||
<ProjectReference Include="..\xunit.runner.data\xunit.runner.data.csproj" />
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="xunit.abstractions">
|
||||||
|
<HintPath>..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="xunit.runner.utility.desktop, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\xunit.runner.utility.2.1.0\lib\net35\xunit.runner.utility.desktop.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Connection.cs" />
|
||||||
|
<Compile Include="DiscoverUtil.cs" />
|
||||||
|
<Compile Include="Listener.cs" />
|
||||||
|
<Compile Include="MessageSinks\BaseMessageSink.cs" />
|
||||||
|
<Compile Include="MessageSinks\BaseTestRunSink.cs" />
|
||||||
|
<Compile Include="MessageSinks\DiagnosticSink.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="RunUtil.cs" />
|
||||||
|
<Compile Include="MessageSinks\BaseTestDiscoverySink.cs" />
|
||||||
|
<Compile Include="XunitUtil.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\xunit.runner.data\xunit.runner.data.csproj">
|
||||||
|
<Project>{a1f579f4-443e-4f64-bc55-998ab86ff293}</Project>
|
||||||
|
<Name>xunit.runner.data</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
</Project>
|
</Project>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
@@ -16,16 +16,14 @@ namespace Xunit.Runner.Wpf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CommandBindingCollection GetRegistration(UIElement element)
|
public static CommandBindingCollection? GetRegistration(UIElement element)
|
||||||
=> (element != null ? (CommandBindingCollection)element.GetValue(Registration) : null);
|
=> (element != null ? (CommandBindingCollection)element.GetValue(Registration) : null);
|
||||||
|
|
||||||
private static void OnRegistrationChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
|
private static void OnRegistrationChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
UIElement element = sender as UIElement;
|
if (sender is UIElement element)
|
||||||
if (element != null)
|
|
||||||
{
|
{
|
||||||
CommandBindingCollection bindings = e.NewValue as CommandBindingCollection;
|
if (e.NewValue is CommandBindingCollection bindings)
|
||||||
if (bindings != null)
|
|
||||||
{
|
{
|
||||||
element.CommandBindings.AddRange(bindings);
|
element.CommandBindings.AddRange(bindings);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace Xunit.Runner.Wpf.Converters
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object? Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
var state = (TestState)value;
|
var state = (TestState)value;
|
||||||
if (targetType == typeof(Brush))
|
if (targetType == typeof(Brush))
|
||||||
|
|||||||
@@ -283,7 +283,13 @@ namespace Xunit.Runner.Wpf
|
|||||||
|
|
||||||
object IList.this[int index]
|
object IList.this[int index]
|
||||||
{
|
{
|
||||||
get { return this[index]; }
|
get
|
||||||
|
{
|
||||||
|
// Can't figure out how to not get a warning here.
|
||||||
|
#pragma warning disable CS8603
|
||||||
|
return this[index];
|
||||||
|
#pragma warning restore
|
||||||
|
}
|
||||||
set { throw new NotSupportedException(); }
|
set { throw new NotSupportedException(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,13 +55,13 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
private sealed class BackgroundReader<T> where T : class
|
private sealed class BackgroundReader<T> where T : class
|
||||||
{
|
{
|
||||||
private readonly ConcurrentQueue<T> _queue;
|
private readonly ConcurrentQueue<T?> _queue;
|
||||||
private readonly ClientReader _reader;
|
private readonly ClientReader _reader;
|
||||||
private readonly Func<ClientReader, T> _readValue;
|
private readonly Func<ClientReader, T> _readValue;
|
||||||
|
|
||||||
internal ClientReader Reader => _reader;
|
internal ClientReader Reader => _reader;
|
||||||
|
|
||||||
internal BackgroundReader(ConcurrentQueue<T> queue, ClientReader reader, Func<ClientReader, T> readValue)
|
internal BackgroundReader(ConcurrentQueue<T?> queue, ClientReader reader, Func<ClientReader, T> readValue)
|
||||||
{
|
{
|
||||||
_queue = queue;
|
_queue = queue;
|
||||||
_reader = reader;
|
_reader = reader;
|
||||||
@@ -111,7 +111,7 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
private const int MaxResultPerTick = 1000;
|
private const int MaxResultPerTick = 1000;
|
||||||
|
|
||||||
private readonly Connection _connection;
|
private readonly Connection _connection;
|
||||||
private readonly ConcurrentQueue<T> _queue;
|
private readonly ConcurrentQueue<T?> _queue;
|
||||||
private readonly DispatcherTimer _timer;
|
private readonly DispatcherTimer _timer;
|
||||||
private readonly Action<List<T>> _callback;
|
private readonly Action<List<T>> _callback;
|
||||||
private readonly int _maxPerTick;
|
private readonly int _maxPerTick;
|
||||||
@@ -122,7 +122,7 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
internal BackgroundProducer(
|
internal BackgroundProducer(
|
||||||
Connection connection,
|
Connection connection,
|
||||||
Dispatcher dispatcher,
|
Dispatcher dispatcher,
|
||||||
ConcurrentQueue<T> queue,
|
ConcurrentQueue<T?> queue,
|
||||||
Action<List<T>> callback,
|
Action<List<T>> callback,
|
||||||
int maxResultPerTick = MaxResultPerTick,
|
int maxResultPerTick = MaxResultPerTick,
|
||||||
TimeSpan? interval = null)
|
TimeSpan? interval = null)
|
||||||
@@ -144,8 +144,7 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
var i = 0;
|
var i = 0;
|
||||||
var list = new List<T>();
|
var list = new List<T>();
|
||||||
var isDone = false;
|
var isDone = false;
|
||||||
T value;
|
while (i < _maxPerTick && _queue.TryDequeue(out T? value))
|
||||||
while (i < _maxPerTick && _queue.TryDequeue(out value))
|
|
||||||
{
|
{
|
||||||
if (value == null)
|
if (value == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
{
|
{
|
||||||
private sealed class Connection : IDisposable
|
private sealed class Connection : IDisposable
|
||||||
{
|
{
|
||||||
private NamedPipeClientStream _stream;
|
private NamedPipeClientStream? _stream;
|
||||||
private ClientReader _reader;
|
private ClientReader _reader;
|
||||||
|
|
||||||
internal NamedPipeClientStream Stream => _stream;
|
internal NamedPipeClientStream Stream => _stream ?? throw new ObjectDisposedException(nameof(Connection));
|
||||||
|
|
||||||
internal ClientReader Reader => _reader;
|
internal ClientReader Reader => _reader;
|
||||||
|
|
||||||
|
|||||||
@@ -84,8 +84,6 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
processStartInfo.FileName = typeof(Xunit.Runner.Worker.Program).Assembly.Location;
|
processStartInfo.FileName = typeof(Xunit.Runner.Worker.Program).Assembly.Location;
|
||||||
processStartInfo.Arguments = $"{pipeName} {Process.GetCurrentProcess().Id}";
|
processStartInfo.Arguments = $"{pipeName} {Process.GetCurrentProcess().Id}";
|
||||||
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
|
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
|
||||||
processStartInfo.UseShellExecute = false;
|
|
||||||
processStartInfo.CreateNoWindow = true;
|
|
||||||
var process = Process.Start(processStartInfo);
|
var process = Process.Start(processStartInfo);
|
||||||
return new ProcessInfo(pipeName, process);
|
return new ProcessInfo(pipeName, process);
|
||||||
}
|
}
|
||||||
@@ -125,7 +123,7 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
private async Task ProcessResultsCore<T>(Connection connection, Func<ClientReader, T> readValue, Action<List<T>> callback, CancellationToken cancellationToken)
|
private async Task ProcessResultsCore<T>(Connection connection, Func<ClientReader, T> readValue, Action<List<T>> callback, CancellationToken cancellationToken)
|
||||||
where T : class
|
where T : class
|
||||||
{
|
{
|
||||||
var queue = new ConcurrentQueue<T>();
|
var queue = new ConcurrentQueue<T?>();
|
||||||
var backgroundReader = new BackgroundReader<T>(queue, new ClientReader(connection.Stream), readValue);
|
var backgroundReader = new BackgroundReader<T>(queue, new ClientReader(connection.Stream), readValue);
|
||||||
var backgroundProducer = new BackgroundProducer<T>(connection, _dispatcher, queue, callback);
|
var backgroundProducer = new BackgroundProducer<T>(connection, _dispatcher, queue, callback);
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace Xunit.Runner.Wpf.Impl
|
|||||||
private readonly IDictionary<string, FileSystemWatcher> watchedAssemblies = new Dictionary<string, FileSystemWatcher>();
|
private readonly IDictionary<string, FileSystemWatcher> watchedAssemblies = new Dictionary<string, FileSystemWatcher>();
|
||||||
private readonly Dispatcher dispatcher;
|
private readonly Dispatcher dispatcher;
|
||||||
private bool isEnabled = false;
|
private bool isEnabled = false;
|
||||||
private ReloadDebouncer debouncer;
|
private ReloadDebouncer? debouncer;
|
||||||
|
|
||||||
public TestAssemblyWatcher(Dispatcher dispatcher)
|
public TestAssemblyWatcher(Dispatcher dispatcher)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,19 +5,21 @@ using Xunit.Runner.Wpf.Persistence;
|
|||||||
|
|
||||||
namespace Xunit.Runner.Wpf
|
namespace Xunit.Runner.Wpf
|
||||||
{
|
{
|
||||||
using GalaSoft.MvvmLight.Command;
|
|
||||||
using ViewModel;
|
using ViewModel;
|
||||||
|
|
||||||
public partial class MainWindow : Window
|
public partial class MainWindow : Window
|
||||||
{
|
{
|
||||||
public static Window Instance { get; private set; }
|
public static Window Instance { get; private set; }
|
||||||
|
|
||||||
|
// WPF generates fields that are marked as non-nullable, but not definitely initialized.
|
||||||
|
#pragma warning disable CS8618
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
Instance = this;
|
Instance = this;
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
#pragma warning restore
|
||||||
|
|
||||||
protected override void OnSourceInitialized(EventArgs e)
|
protected override void OnSourceInitialized(EventArgs e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace Xunit.Runner.Wpf.Persistence
|
|||||||
|
|
||||||
private static IsolatedStorageFile GetStorageFile() => IsolatedStorageFile.GetUserStoreForDomain();
|
private static IsolatedStorageFile GetStorageFile() => IsolatedStorageFile.GetUserStoreForDomain();
|
||||||
|
|
||||||
public static XmlTextReader OpenXmlFile(string fileName)
|
public static XmlTextReader? OpenXmlFile(string fileName)
|
||||||
{
|
{
|
||||||
var storage = GetStorageFile();
|
var storage = GetStorageFile();
|
||||||
if (!storage.FileExists(fileName))
|
if (!storage.FileExists(fileName))
|
||||||
|
|||||||
@@ -1,4 +1,25 @@
|
|||||||
using System.Windows;
|
using System.Reflection;
|
||||||
|
using System.Resources;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("xunit.runner.wpf")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("xunit.runner.wpf")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
//In order to begin building localizable applications, set
|
//In order to begin building localizable applications, set
|
||||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||||
@@ -18,3 +39,17 @@
|
|||||||
//(used if a resource is not found in the page,
|
//(used if a resource is not found in the page,
|
||||||
// app, or any theme specific resource dictionaries)
|
// app, or any theme specific resource dictionaries)
|
||||||
)]
|
)]
|
||||||
|
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
public class AssemblyAndConfigFile
|
public class AssemblyAndConfigFile
|
||||||
{
|
{
|
||||||
public string AssemblyFileName { get; }
|
public string AssemblyFileName { get; }
|
||||||
public string ConfigFileName { get; }
|
public string? ConfigFileName { get; }
|
||||||
|
|
||||||
public AssemblyAndConfigFile(string assemblyFileName, string configFileName)
|
public AssemblyAndConfigFile(string assemblyFileName, string? configFileName)
|
||||||
{
|
{
|
||||||
this.AssemblyFileName = Path.GetFullPath(assemblyFileName);
|
this.AssemblyFileName = Path.GetFullPath(assemblyFileName);
|
||||||
if (configFileName != null)
|
if (configFileName != null)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ using System.Windows;
|
|||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
using GalaSoft.MvvmLight;
|
using GalaSoft.MvvmLight;
|
||||||
using GalaSoft.MvvmLight.Command;
|
using GalaSoft.MvvmLight.CommandWpf;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using Microsoft.WindowsAPICodePack.Taskbar;
|
using Microsoft.WindowsAPICodePack.Taskbar;
|
||||||
using Xunit.Runner.Data;
|
using Xunit.Runner.Data;
|
||||||
@@ -33,7 +33,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
|
|
||||||
private CancellationTokenSource filterCancellationTokenSource = new CancellationTokenSource();
|
private CancellationTokenSource filterCancellationTokenSource = new CancellationTokenSource();
|
||||||
|
|
||||||
private CancellationTokenSource cancellationTokenSource;
|
private CancellationTokenSource? cancellationTokenSource;
|
||||||
private bool isBusy;
|
private bool isBusy;
|
||||||
private SearchQuery searchQuery = new SearchQuery();
|
private SearchQuery searchQuery = new SearchQuery();
|
||||||
private bool autoReloadAssemblies;
|
private bool autoReloadAssemblies;
|
||||||
@@ -54,7 +54,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
|
|
||||||
public ObservableCollection<RecentAssemblyViewModel> RecentAssemblies { get; } = new ObservableCollection<RecentAssemblyViewModel>();
|
public ObservableCollection<RecentAssemblyViewModel> RecentAssemblies { get; } = new ObservableCollection<RecentAssemblyViewModel>();
|
||||||
|
|
||||||
private ImmutableList<TestCaseViewModel> testsToRun;
|
private ImmutableList<TestCaseViewModel>? testsToRun;
|
||||||
|
|
||||||
public ICommand ExitCommand { get; }
|
public ICommand ExitCommand { get; }
|
||||||
public ICommand WindowLoadedCommand { get; }
|
public ICommand WindowLoadedCommand { get; }
|
||||||
@@ -63,7 +63,6 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
public RelayCommand RunSelectedCommand { get; }
|
public RelayCommand RunSelectedCommand { get; }
|
||||||
public RelayCommand CancelCommand { get; }
|
public RelayCommand CancelCommand { get; }
|
||||||
public ICommand TraitCheckedChangedCommand { get; }
|
public ICommand TraitCheckedChangedCommand { get; }
|
||||||
public ICommand TraitSelectionChangedCommand { get; }
|
|
||||||
public ICommand TraitsClearCommand { get; }
|
public ICommand TraitsClearCommand { get; }
|
||||||
public ICommand AssemblyReloadCommand { get; }
|
public ICommand AssemblyReloadCommand { get; }
|
||||||
public ICommand AssemblyReloadAllCommand { get; }
|
public ICommand AssemblyReloadAllCommand { get; }
|
||||||
@@ -215,8 +214,8 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
get { return Assemblies.Where(x => x.IsSelected).ToList(); }
|
get { return Assemblies.Where(x => x.IsSelected).ToList(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private string testCasesCaption;
|
private string? testCasesCaption;
|
||||||
public string TestCasesCaption
|
public string? TestCasesCaption
|
||||||
{
|
{
|
||||||
get { return testCasesCaption; }
|
get { return testCasesCaption; }
|
||||||
private set { Set(ref testCasesCaption, value); }
|
private set { Set(ref testCasesCaption, value); }
|
||||||
@@ -234,8 +233,8 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private TestCaseViewModel selectedTest;
|
private TestCaseViewModel? selectedTest;
|
||||||
public TestCaseViewModel SelectedTestCase
|
public TestCaseViewModel? SelectedTestCase
|
||||||
{
|
{
|
||||||
get { return selectedTest; }
|
get { return selectedTest; }
|
||||||
|
|
||||||
@@ -401,7 +400,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
var taskList = new List<Task>();
|
var taskList = new List<Task>();
|
||||||
foreach (var assembly in assemblies)
|
foreach (var assembly in assemblies)
|
||||||
{
|
{
|
||||||
taskList.Add(this.testUtil.Discover(assembly.AssemblyFileName, this.OnTestsDiscovered, this.cancellationTokenSource.Token));
|
taskList.Add(this.testUtil.Discover(assembly.AssemblyFileName, this.OnTestsDiscovered, CancellationToken));
|
||||||
|
|
||||||
var assemblyViewModel = new TestAssemblyViewModel(assembly);
|
var assemblyViewModel = new TestAssemblyViewModel(assembly);
|
||||||
|
|
||||||
@@ -427,6 +426,11 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private CancellationToken CancellationToken
|
||||||
|
=> cancellationTokenSource == null
|
||||||
|
? CancellationToken.None
|
||||||
|
: cancellationTokenSource.Token;
|
||||||
|
|
||||||
public bool ReloadAssemblies(IEnumerable<string> assemblies)
|
public bool ReloadAssemblies(IEnumerable<string> assemblies)
|
||||||
{
|
{
|
||||||
if (IsBusy)
|
if (IsBusy)
|
||||||
@@ -454,7 +458,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
var assemblyFileName = assemblyViewModel.FileName;
|
var assemblyFileName = assemblyViewModel.FileName;
|
||||||
RemoveAssemblyTestCases(assemblyFileName);
|
RemoveAssemblyTestCases(assemblyFileName);
|
||||||
|
|
||||||
taskList.Add(this.testUtil.Discover(assemblyFileName, OnTestsDiscovered, cancellationTokenSource.Token));
|
taskList.Add(this.testUtil.Discover(assemblyFileName, OnTestsDiscovered, CancellationToken));
|
||||||
}
|
}
|
||||||
|
|
||||||
return taskList;
|
return taskList;
|
||||||
@@ -549,7 +553,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
var assemblyFileName = enumerable.First();
|
var assemblyFileName = enumerable.First();
|
||||||
enumerable = enumerable.Skip(1);
|
enumerable = enumerable.Skip(1);
|
||||||
|
|
||||||
var configFileName = (string)null;
|
var configFileName = (string?)null;
|
||||||
if (IsConfigFile(enumerable.FirstOrDefault()))
|
if (IsConfigFile(enumerable.FirstOrDefault()))
|
||||||
{
|
{
|
||||||
configFileName = enumerable.First();
|
configFileName = enumerable.First();
|
||||||
@@ -630,7 +634,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
Task task;
|
Task task;
|
||||||
if (runAll)
|
if (runAll)
|
||||||
{
|
{
|
||||||
task = this.testUtil.RunAll(assemblyFileName, OnTestStateChange, this.cancellationTokenSource.Token);
|
task = this.testUtil.RunAll(assemblyFileName, OnTestStateChange, CancellationToken);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -644,7 +648,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task = this.testUtil.RunSpecific(assemblyFileName, builder.ToImmutable(), OnTestStateChange, this.cancellationTokenSource.Token);
|
task = this.testUtil.RunSpecific(assemblyFileName, builder.ToImmutable(), OnTestStateChange, CancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
testSessionList.Add(task);
|
testSessionList.Add(task);
|
||||||
@@ -778,7 +782,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
private void OnExecuteCancel()
|
private void OnExecuteCancel()
|
||||||
{
|
{
|
||||||
Debug.Assert(CanExecuteCancel());
|
Debug.Assert(CanExecuteCancel());
|
||||||
this.cancellationTokenSource.Cancel();
|
cancellationTokenSource?.Cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnExecuteTraitCheckedChanged(TraitViewModel trait)
|
private void OnExecuteTraitCheckedChanged(TraitViewModel trait)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
{
|
{
|
||||||
public partial class TraitViewModel : ViewModelBase
|
public partial class TraitViewModel : ViewModelBase
|
||||||
{
|
{
|
||||||
private readonly TraitViewModel _parent;
|
private readonly TraitViewModel? _parent;
|
||||||
private bool? _isChecked;
|
private bool? _isChecked;
|
||||||
private bool _isExpanded;
|
private bool _isExpanded;
|
||||||
private string _text;
|
private string _text;
|
||||||
@@ -19,7 +19,7 @@ namespace Xunit.Runner.Wpf.ViewModel
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private TraitViewModel(TraitViewModel parent, string text)
|
private TraitViewModel(TraitViewModel? parent, string text)
|
||||||
{
|
{
|
||||||
this._parent = parent;
|
this._parent = parent;
|
||||||
this._isChecked = false;
|
this._isChecked = false;
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
See http://www.galasoft.ch/mvvm
|
See http://www.galasoft.ch/mvvm
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using CommonServiceLocator;
|
|
||||||
using GalaSoft.MvvmLight.Ioc;
|
using GalaSoft.MvvmLight.Ioc;
|
||||||
|
using Microsoft.Practices.ServiceLocation;
|
||||||
|
|
||||||
namespace Xunit.Runner.Wpf.ViewModel
|
namespace Xunit.Runner.Wpf.ViewModel
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="CommonServiceLocator" version="1.3" targetFramework="net452" />
|
||||||
|
<package id="MvvmLight" version="5.3.0.0" targetFramework="net46" />
|
||||||
|
<package id="MvvmLightLibs" version="5.3.0.0" targetFramework="net46" />
|
||||||
|
<package id="NuGet.CommandLine" version="2.8.3" targetFramework="net46" />
|
||||||
|
<package id="System.Collections" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="System.Collections.Immutable" version="1.4.0-preview1-25305-02" targetFramework="net46" />
|
||||||
|
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="System.Globalization" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="System.Linq" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="System.Runtime" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="System.Threading" version="4.3.0" targetFramework="net46" />
|
||||||
|
<package id="Tvl.NuGet.BuildTasks" version="1.0.0-alpha002" targetFramework="net46" developmentDependency="true" />
|
||||||
|
<package id="WindowsAPICodePack-Core" version="1.1.2" targetFramework="net46" />
|
||||||
|
<package id="WindowsAPICodePack-Shell" version="1.1.1" targetFramework="net46" />
|
||||||
|
<package id="xunit.abstractions" version="2.0.0" targetFramework="net452" />
|
||||||
|
<package id="xunit.runner.utility" version="2.1.0" targetFramework="net46" />
|
||||||
|
</packages>
|
||||||
@@ -1,46 +1,220 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props" Condition="Exists('..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props')" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{34FB519C-FB49-4B31-ACA2-7F7879311BCF}</ProjectGuid>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<UseWpf>true</UseWpf>
|
|
||||||
<RootNamespace>Xunit.Runner.Wpf</RootNamespace>
|
<RootNamespace>Xunit.Runner.Wpf</RootNamespace>
|
||||||
<NoWarn>NU1701;$(NoWarn)</NoWarn>
|
<AssemblyName>xunit.runner.wpf</AssemblyName>
|
||||||
<ApplicationIcon>Artwork\Application.ico</ApplicationIcon>
|
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||||
<Authors>Pilchie</Authors>
|
<FileAlignment>512</FileAlignment>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
<PackAsTool>true</PackAsTool>
|
<WarningLevel>4</WarningLevel>
|
||||||
<AssetTargetFallback>net472</AssetTargetFallback>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<Description>XUnit Gui written in WPF</Description>
|
<NuGetPackageImportStamp>
|
||||||
<PackageProjectUrl>https://github.com/Pilchie/xunit.runner.wpf</PackageProjectUrl>
|
</NuGetPackageImportStamp>
|
||||||
<RepositoryUrl>https://github.com/Pilchie/xunit.runner.wpf</RepositoryUrl>
|
<TargetFrameworkProfile />
|
||||||
<PackageTags>XUnit Gui test runner</PackageTags>
|
<NuPkgVersion Condition="'$(appveyor_build_version)' != ''">$(appveyor_build_version)</NuPkgVersion>
|
||||||
<NeutralLanguage>en-us</NeutralLanguage>
|
<NuPkgVersion Condition="'$(NuPkgVersion)' == ''">1.0.0-local</NuPkgVersion>
|
||||||
<PackageVersion Condition="'$(appveyor_build_vzersion)' != ''">$(appveyor_build_version)</PackageVersion>
|
</PropertyGroup>
|
||||||
<PackageVersion Condition="'$(NuPkgVersion)' == ''">1.0.0-local</PackageVersion>
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<AssemblyVersion Condition="'$(appveyor_build_version)' != ''">$(appveyor_build_version)</AssemblyVersion>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<FileVersion Condition="'$(appveyor_build_version)' != ''">$(appveyor_build_version)</FileVersion>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>Artwork\Application.ico</ApplicationIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CommonServiceLocator" Version="2.0.2" />
|
<Reference Include="GalaSoft.MvvmLight, Version=5.3.0.19026, Culture=neutral, PublicKeyToken=e7570ab207bcb616, processorArchitecture=MSIL">
|
||||||
<PackageReference Include="Microsoft.Windows.Compatibility" Version="2.1.0-preview.18571.3" />
|
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.dll</HintPath>
|
||||||
<PackageReference Include="MvvmLightLibs" Version="5.4.1.1" />
|
<Private>True</Private>
|
||||||
<PackageReference Include="System.Collections.Immutable" Version="1.4.0-preview1-25305-02" />
|
</Reference>
|
||||||
<PackageReference Include="System.Windows.Interactivity.WPF" Version="2.0.20525" />
|
<Reference Include="GalaSoft.MvvmLight.Extras, Version=5.3.0.19032, Culture=neutral, PublicKeyToken=669f0b5e8f868abf, processorArchitecture=MSIL">
|
||||||
<PackageReference Include="WindowsAPICodePack" Version="1.1.0" />
|
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Extras.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="GalaSoft.MvvmLight.Platform, Version=5.3.0.19032, Culture=neutral, PublicKeyToken=5f873c45e98af8a1, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Platform.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\WindowsAPICodePack-Core.1.1.2\lib\Microsoft.WindowsAPICodePack.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\WindowsAPICodePack-Shell.1.1.1\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Collections.Immutable, Version=1.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Collections.Immutable.1.4.0-preview1-25305-02\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\MvvmLightLibs.5.3.0.0\lib\net45\System.Windows.Interactivity.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xaml">
|
||||||
|
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
|
<Reference Include="xunit.runner.utility.desktop, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\xunit.runner.utility.2.1.0\lib\net35\xunit.runner.utility.desktop.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ApplicationDefinition Include="App.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</ApplicationDefinition>
|
||||||
|
<Compile Include="CommandBindings.cs" />
|
||||||
|
<Compile Include="Converters\TestStateConverter.cs" />
|
||||||
|
<Compile Include="Extensions.cs" />
|
||||||
|
<Compile Include="FilteredCollectionView.cs" />
|
||||||
|
<Compile Include="Impl\RemoteTestUtil.Connection.cs" />
|
||||||
|
<Compile Include="Impl\RemoteTestUtil.BackgroundRunner.cs" />
|
||||||
|
<Compile Include="Impl\RemoteTestUtil.cs" />
|
||||||
|
<Compile Include="Impl\TestAssemblyWatcher.cs" />
|
||||||
|
<Compile Include="ITestAssemblyWatcher.cs" />
|
||||||
|
<Compile Include="ITestUtil.cs" />
|
||||||
|
<Compile Include="Persistence\Settings.cs" />
|
||||||
|
<Compile Include="Persistence\Storage.cs" />
|
||||||
|
<Compile Include="Persistence\Storage.WindowPlacement.cs" />
|
||||||
|
<Compile Include="Extensions.FuncComparer.cs" />
|
||||||
|
<Compile Include="ViewModel\RecentAssemblyViewModel.cs" />
|
||||||
|
<Compile Include="ViewModel\TraitCollectionView.cs" />
|
||||||
|
<Compile Include="ViewModel\AssemblyAndConfigFile.cs" />
|
||||||
|
<Compile Include="ViewModel\MainViewModel.cs" />
|
||||||
|
<Compile Include="ViewModel\SearchQuery.cs" />
|
||||||
|
<Compile Include="ViewModel\TestCaseViewModel.cs" />
|
||||||
|
<Compile Include="ViewModel\TestAssemblyViewModel.cs" />
|
||||||
|
<Compile Include="ViewModel\TraitViewModel.Comparer.cs" />
|
||||||
|
<Compile Include="ViewModel\TraitViewModel.cs" />
|
||||||
|
<Compile Include="ViewModel\ViewModelLocator.cs" />
|
||||||
|
<Page Include="MainWindow.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Compile Include="App.xaml.cs">
|
||||||
|
<DependentUpon>App.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="MainWindow.xaml.cs">
|
||||||
|
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<AppDesigner Include="Properties\" />
|
||||||
|
<None Include="xunit.runner.wpf.targets">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<NuGetManifest Include="xunit.runner.wpf.nuspec">
|
||||||
|
<Version>$(NuPkgVersion)</Version>
|
||||||
|
<PackageAnalysis>False</PackageAnalysis>
|
||||||
|
</NuGetManifest>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\SampleTestAssembly\SampleTestAssembly.csproj">
|
<ProjectReference Include="..\SampleTestAssembly\SampleTestAssembly.csproj">
|
||||||
|
<Project>{bdafb5dd-ffb3-4a94-a312-dfb080010846}</Project>
|
||||||
|
<Name>SampleTestAssembly</Name>
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\xunit.runner.data\xunit.runner.data.csproj" />
|
<ProjectReference Include="..\xunit.runner.data\xunit.runner.data.csproj">
|
||||||
<ProjectReference Include="..\xunit.runner.worker\xunit.runner.worker.csproj" />
|
<Project>{a1f579f4-443e-4f64-bc55-998ab86ff293}</Project>
|
||||||
|
<Name>xunit.runner.data</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\xunit.runner.worker\xunit.runner.worker.csproj">
|
||||||
|
<Project>{9df97a2b-0eb5-4b12-9f81-69dfac979814}</Project>
|
||||||
|
<Name>xunit.runner.worker</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Passed_small.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Passed_large.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Failed_small.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Failed_large.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Skipped_small.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Skipped_large.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="Artwork\**\*.png" />
|
|
||||||
<Resource Include="Artwork\Application.ico" />
|
<Resource Include="Artwork\Application.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Running_large.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Artwork\Running_small.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.props'))" />
|
||||||
|
<Error Condition="!Exists('..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets'))" />
|
||||||
|
</Target>
|
||||||
|
<Import Project="..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets" Condition="Exists('..\packages\Tvl.NuGet.BuildTasks.1.0.0-alpha002\build\Tvl.NuGet.BuildTasks.targets')" />
|
||||||
</Project>
|
</Project>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<package >
|
||||||
|
<metadata>
|
||||||
|
<id>xunit.runner.wpf</id>
|
||||||
|
<version>$version$</version>
|
||||||
|
<title>xUnit.Runner.WPF</title>
|
||||||
|
<authors>Pilchie</authors>
|
||||||
|
<owners>Pilchie</owners>
|
||||||
|
<projectUrl>https://github.com/Pilchie/xunit.runner.wpf</projectUrl>
|
||||||
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
|
<description>XUnit Gui written in WPF</description>
|
||||||
|
<tags>XUnit Gui test runner</tags>
|
||||||
|
</metadata>
|
||||||
|
<files>
|
||||||
|
<file src="bin\$Configuration$\*.dll" target="tools\"/>
|
||||||
|
<file src="xunit.runner.wpf.targets" target="build\net45"/>
|
||||||
|
<file src="bin\$Configuration$\*.exe" target="tools\" exclude="**\*vshost*"/>
|
||||||
|
<file src="bin\$Configuration$\*.config" target="tools\" exclude="**\*vshost*"/>
|
||||||
|
</files>
|
||||||
|
</package>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartAction Condition="'$(StartActions)' == ''">Program</StartAction>
|
||||||
|
<StartProgram Condition="'$(StartProgram)' == ''">$(MSBuildThisFileDirectory)..\tools\xunit.runner.wpf.exe</StartProgram>
|
||||||
|
<StartArguments Condition="'$(StartArguments)' == ''">$(AssemblyName).dll</StartArguments>
|
||||||
|
<StartWorkingDirectory Condition="'$(StartWorkingDirectory)' == ''">$(OutputDirectory)</StartWorkingDirectory>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
Reference in New Issue
Block a user