Commit ec6faf54 authored by Marc Gravell's avatar Marc Gravell

Fixes for CoreCLR and DNX

parent a161cb5a
...@@ -7,16 +7,16 @@ ...@@ -7,16 +7,16 @@
*/ */
#if DNXCORE50 #if DNXCORE50
using IDbDataParameter = System.Data.Common.DbParameter; using IDbDataParameter = global::System.Data.Common.DbParameter;
using IDataParameter = System.Data.Common.DbParameter; using IDataParameter = global::System.Data.Common.DbParameter;
using IDbTransaction = System.Data.Common.DbTransaction; using IDbTransaction = global::System.Data.Common.DbTransaction;
using IDbConnection = System.Data.Common.DbConnection; using IDbConnection = global::System.Data.Common.DbConnection;
using IDbCommand = System.Data.Common.DbCommand; using IDbCommand = global::System.Data.Common.DbCommand;
using IDataReader = System.Data.Common.DbDataReader; using IDataReader = global::System.Data.Common.DbDataReader;
using IDataRecord = System.Data.Common.DbDataReader; using IDataRecord = global::System.Data.Common.DbDataReader;
using IDataParameterCollection = System.Data.Common.DbParameterCollection; using IDataParameterCollection = global::System.Data.Common.DbParameterCollection;
using DataException = System.InvalidOperationException; using DataException = global::System.InvalidOperationException;
using ApplicationException = System.InvalidOperationException; using ApplicationException = global::System.InvalidOperationException;
#endif #endif
using System; using System;
...@@ -4907,10 +4907,10 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4907,10 +4907,10 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
#if DNXCORE50 #if DNXCORE50
lock (cache) lock (cache)
{ {
#endif if(!cache.TryGetValue(lookup, out setter)) setter = null;
setter = (Action<object, DynamicParameters>)cache[lookup];
#if DNXCORE50
} }
#else
setter = (Action<object, DynamicParameters>)cache[lookup];
#endif #endif
if (setter != null) goto MAKECALLBACK; if (setter != null) goto MAKECALLBACK;
......
using System;
using System.Linq;
using System.Data.SqlClient;
using System.Threading.Tasks;
using System.Reflection;
namespace Dapper.DNX.Tests
{
public class Program
{
public void Main()
{
#if DNXCORE50
Console.WriteLine("From: {0}", typeof(int).AssemblyQualifiedName);
#else
Console.WriteLine("Version: {0}", Environment.Version);
#endif
const string connectionString = "Data Source=.;Initial Catalog=tempdb;Integrated Security=True";
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
var row = conn.Query<Foo>("select @a as X", new { a = 123 }).Single();
Console.WriteLine(row.X);
var methods = typeof(Dapper.SqlMapper).GetMethods().Where(x => x.Name == "QueryAsync").ToList();
#if ASYNC
row = conn.QueryAsync<Foo>("select @a as X", new { a = 123 }).Result.Single();
#endif
Console.WriteLine(row.X);
}
}
class Foo
{
public int X { get; set; }
}
}
}
...@@ -6,26 +6,32 @@ ...@@ -6,26 +6,32 @@
"commands": { "commands": {
"Dapper.DNX.Tests": "Dapper.DNX.Tests" "Dapper.DNX.Tests": "Dapper.DNX.Tests"
}, },
"compile": [ "../Tests/Tests.cs", "../Tests/Program.cs", "../Tests/Assert.cs" ],
"compilationOptions": { "define": [ "NOEXTERNALS" ] },
"frameworks": { "frameworks": {
"net45": { "net45": {
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true }, "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"dependencies": { "dependencies": {
"System.Threading.Thread": "4.0.0-beta-22816"
}, },
"frameworkAssemblies": { "frameworkAssemblies": {
"System.Data": "4.0.0.0" "System.Data": "4.0.0.0",
"System.Xml": "4.0.0.0"
} }
}, },
"net40": { "net40": {
"dependencies": { "dependencies": {
}, },
"frameworkAssemblies": { "frameworkAssemblies": {
"System.Data": "4.0.0.0" "System.Data": "4.0.0.0",
"System.Xml": "4.0.0.0"
} }
}, },
"dnx451": { "dnx451": {
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true }, "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"frameworkAssemblies": { "frameworkAssemblies": {
"System.Data": "4.0.0.0" "System.Data": "4.0.0.0",
"System.Xml": "4.0.0.0"
} }
}, },
...@@ -33,7 +39,14 @@ ...@@ -33,7 +39,14 @@
"compilationOptions": { "define": [ ], "warningsAsErrors": true }, "compilationOptions": { "define": [ ], "warningsAsErrors": true },
"dependencies": { "dependencies": {
"System.Console": "4.0.0-beta-*", "System.Console": "4.0.0-beta-*",
"System.Reflection": "4.0.10-beta-*" "System.Reflection": "4.0.10-beta-*",
"System.Linq": "4.0.0-beta-*",
"System.Data.Common": "4.0.0-beta-*",
"System.Data.SqlClient": "4.0.0-beta-*",
"System.Threading": "4.0.10-beta-*",
"System.Threading.Thread": "4.0.0-beta-*",
"System.Reflection.TypeExtensions": "4.0.0-beta-*"
//"System.Xml": "4.0.10-beta-*"
} }
} }
} }
......
...@@ -16,6 +16,20 @@ ...@@ -16,6 +16,20 @@
"runtime": [ "runtime": [
"lib/net45/System.Runtime.dll" "lib/net45/System.Runtime.dll"
] ]
},
"System.Threading.Thread/4.0.0-beta-22816": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"compile": [
"lib/net45/System.Threading.Thread.dll"
],
"runtime": [
"lib/net45/System.Threading.Thread.dll"
]
} }
}, },
".NETFramework,Version=v4.0": {}, ".NETFramework,Version=v4.0": {},
...@@ -325,6 +339,17 @@ ...@@ -325,6 +339,17 @@
"lib/aspnetcore50/System.Threading.Tasks.dll" "lib/aspnetcore50/System.Threading.Tasks.dll"
] ]
}, },
"System.Threading.Thread/4.0.0-beta-22816": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"compile": [
"lib/contract/System.Threading.Thread.dll"
],
"runtime": [
"lib/aspnetcore50/System.Threading.Thread.dll"
]
},
"System.Xml.ReaderWriter/4.0.10-beta-22816": { "System.Xml.ReaderWriter/4.0.10-beta-22816": {
"dependencies": { "dependencies": {
"System.IO": "4.0.10-beta-22816", "System.IO": "4.0.10-beta-22816",
...@@ -669,6 +694,19 @@ ...@@ -669,6 +694,19 @@
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.Tasks.dll" "lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.Tasks.dll"
] ]
}, },
"System.Threading.Thread/4.0.0-beta-22816": {
"sha512": "hq1pNoES0jEKslftDhBeJnRUBSjEepiya+39oH/7yCvOp4xMnXHlWe9G7ZS/dg2n4k+3VY21AUifisybcFjcCQ==",
"files": [
"License.rtf",
"System.Threading.Thread.4.0.0-beta-22816.nupkg",
"System.Threading.Thread.4.0.0-beta-22816.nupkg.sha512",
"System.Threading.Thread.nuspec",
"lib/aspnetcore50/System.Threading.Thread.dll",
"lib/contract/System.Threading.Thread.dll",
"lib/net45/System.Threading.Thread.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.Thread.dll"
]
},
"System.Xml.ReaderWriter/4.0.10-beta-22816": { "System.Xml.ReaderWriter/4.0.10-beta-22816": {
"sha512": "G0aLPtC/phTfiJPwe0VA3tB3x8YFQ1dHFuE1xaHNr9eQm/AfBp4Pk+fn3s7ABJDus/T89EtIHQ9C+O6VmqXIQQ==", "sha512": "G0aLPtC/phTfiJPwe0VA3tB3x8YFQ1dHFuE1xaHNr9eQm/AfBp4Pk+fn3s7ABJDus/T89EtIHQ9C+O6VmqXIQQ==",
"files": [ "files": [
...@@ -688,17 +726,27 @@ ...@@ -688,17 +726,27 @@
"Dapper >= 1.41-*" "Dapper >= 1.41-*"
], ],
".NETFramework,Version=v4.5": [ ".NETFramework,Version=v4.5": [
"framework/System.Data >= 4.0.0.0" "System.Threading.Thread >= 4.0.0-beta-22816",
"framework/System.Data >= 4.0.0.0",
"framework/System.Xml >= 4.0.0.0"
], ],
".NETFramework,Version=v4.0": [ ".NETFramework,Version=v4.0": [
"framework/System.Data >= 4.0.0.0" "framework/System.Data >= 4.0.0.0",
"framework/System.Xml >= 4.0.0.0"
], ],
"DNX,Version=v4.5.1": [ "DNX,Version=v4.5.1": [
"framework/System.Data >= 4.0.0.0" "framework/System.Data >= 4.0.0.0",
"framework/System.Xml >= 4.0.0.0"
], ],
"DNXCore,Version=v5.0": [ "DNXCore,Version=v5.0": [
"System.Console >= 4.0.0-beta-*", "System.Console >= 4.0.0-beta-*",
"System.Reflection >= 4.0.10-beta-*" "System.Reflection >= 4.0.10-beta-*",
"System.Linq >= 4.0.0-beta-*",
"System.Data.Common >= 4.0.0-beta-*",
"System.Data.SqlClient >= 4.0.0-beta-*",
"System.Threading >= 4.0.10-beta-*",
"System.Threading.Thread >= 4.0.0-beta-*",
"System.Reflection.TypeExtensions >= 4.0.0-beta-*"
] ]
} }
} }
\ No newline at end of file
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14 # Visual Studio 14
VisualStudioVersion = 14.0.22728.1 VisualStudioVersion = 14.0.22823.1
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper", "Dapper\Dapper.xproj", "{088D8CC4-E71E-44B6-9B87-4060B043983D}" Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper", "Dapper\Dapper.xproj", "{088D8CC4-E71E-44B6-9B87-4060B043983D}"
EndProject EndProject
...@@ -9,8 +9,11 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper.DNX.Tests", "Dapper. ...@@ -9,8 +9,11 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper.DNX.Tests", "Dapper.
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{03340C6E-4176-4C42-9C76-D5DFC79D1A22}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{03340C6E-4176-4C42-9C76-D5DFC79D1A22}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
Tests\Assert.cs = Tests\Assert.cs
Tests\Program.cs = Tests\Program.cs
Dapper NET40\SqlMapper.cs = Dapper NET40\SqlMapper.cs Dapper NET40\SqlMapper.cs = Dapper NET40\SqlMapper.cs
Dapper NET45\SqlMapperAsync.cs = Dapper NET45\SqlMapperAsync.cs Dapper NET45\SqlMapperAsync.cs = Dapper NET45\SqlMapperAsync.cs
Tests\Tests.cs = Tests\Tests.cs
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
......
{ {
"authors": [ "Sam Saffron", "Marc Gravell" ], "authors": [ "Sam Saffron", "Marc Gravell" ],
"owners": [ "Sam Saffron", "Marc Gravell" ],
"projectUrl": "https://github.com/StackExchange/dapper-dot-net",
"licenseUrl": "http://www.apache.org/licenses/LICENSE-2.0",
"summary": "A high performance Micro-ORM",
"description": "A high performance Micro-ORM supporting Sql Server, MySQL, Sqlite, SqlCE, Firebird etc..", "description": "A high performance Micro-ORM supporting Sql Server, MySQL, Sqlite, SqlCE, Firebird etc..",
"version": "1.41-beta", "version": "1.41-beta2",
"compile": [ "../Dapper NET40/*.cs", "../Dapper NET45/*.cs" ], "compile": [ "../Dapper NET40/*.cs", "../Dapper NET45/*.cs" ],
"title": "Dapper dot net",
"tags": [ "orm", "sql", "micro-orm" ],
"frameworks": { "frameworks": {
"net45": { "net45": {
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true }, "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
...@@ -21,6 +27,14 @@ ...@@ -21,6 +27,14 @@
"System.Data": "4.0.0.0" "System.Data": "4.0.0.0"
} }
}, },
//"net35": {
// "compilationOptions": { "warningsAsErrors": true, "languageVersion": "csharp3", "define": ["CSHARP30"] },
// "dependencies": {
// },
// "frameworkAssemblies": {
// "System.Data": "4.0.0.0"
// }
//},
"dnx451": { "dnx451": {
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true }, "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"dependencies": { "dependencies": {
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET35</DefineConstants> <DefineConstants>TRACE;DEBUG;NET35 EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
...@@ -30,9 +30,10 @@ ...@@ -30,9 +30,10 @@
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NET35</DefineConstants> <DefineConstants>TRACE;NET35 EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>TRACE;DEBUG;EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE;EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
......
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
using System.Linq; using System.Linq;
using System.Text; using System.Text;
#if DNXCORE50
using ApplicationException = global::System.InvalidOperationException;
#endif
namespace SqlMapper namespace SqlMapper
{ {
static class Assert static class Assert
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>TRACE;DEBUG;EXTERNALS PERF</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
...@@ -32,10 +32,11 @@ ...@@ -32,10 +32,11 @@
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE;EXTERNALS PERF</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="BLToolkit.4"> <Reference Include="BLToolkit.4">
......
...@@ -6,11 +6,15 @@ ...@@ -6,11 +6,15 @@
namespace SqlMapper namespace SqlMapper
{ {
#if EXTERNALS
[ServiceStack.DataAnnotations.Alias("Posts")] [ServiceStack.DataAnnotations.Alias("Posts")]
[Soma.Core.Table(Name = "Posts")] [Soma.Core.Table(Name = "Posts")]
#endif
public class Post public class Post
{ {
#if EXTERNALS
[Soma.Core.Id(Soma.Core.IdKind.Identity)] [Soma.Core.Id(Soma.Core.IdKind.Identity)]
#endif
public int Id { get; set; } public int Id { get; set; }
public string Text { get; set; } public string Text { get; set; }
public DateTime CreationDate { get; set; } public DateTime CreationDate { get; set; }
...@@ -42,10 +46,14 @@ public static SqlConnection GetOpenConnection() ...@@ -42,10 +46,14 @@ public static SqlConnection GetOpenConnection()
static void RunPerformanceTests() static void RunPerformanceTests()
{ {
#if PERF
var test = new PerformanceTests(); var test = new PerformanceTests();
const int iterations = 500; const int iterations = 500;
Console.WriteLine("Running {0} iterations that load up a post entity", iterations); Console.WriteLine("Running {0} iterations that load up a post entity", iterations);
test.Run(iterations); test.Run(iterations);
#else
Console.WriteLine("Performance tests have not been built; add the PERF symbol");
#endif
} }
static void Main() static void Main()
...@@ -57,9 +65,14 @@ static void Main() ...@@ -57,9 +65,14 @@ static void Main()
EnsureDBSetup(); EnsureDBSetup();
RunPerformanceTests(); RunPerformanceTests();
#endif #endif
Console.WriteLine("(end of tests; press any key)");
#if DNXCORE50
Console.WriteLine("(end of tests; press return)");
Console.ReadLine();
#else
Console.WriteLine("(end of tests; press any key)");
Console.ReadKey(); Console.ReadKey();
#endif
} }
private static void EnsureDBSetup() private static void EnsureDBSetup()
...@@ -110,27 +123,46 @@ insert Posts ([Text],CreationDate, LastChangeDate) values (replicate('x', 2000), ...@@ -110,27 +123,46 @@ insert Posts ([Text],CreationDate, LastChangeDate) values (replicate('x', 2000),
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
} }
private static bool HasAttribute<T>(MemberInfo member) where T : Attribute
{
#if DNXCORE50
return member.CustomAttributes.Any(x => x.AttributeType == typeof(T));
#else
return Attribute.IsDefined(member, typeof(T), true);
#endif
}
private static void RunTests() private static void RunTests()
{ {
var tester = new Tests(); var tester = new Tests();
int fail = 0; int fail = 0, skip = 0, pass = 0;
MethodInfo[] methods = typeof(Tests).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); MethodInfo[] methods = typeof(Tests).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
var activeTests = methods.Where(m => Attribute.IsDefined(m, typeof(ActiveTestAttribute))).ToArray(); var activeTests = methods.Where(m => HasAttribute<ActiveTestAttribute>(m)).ToArray();
if (activeTests.Length != 0) methods = activeTests; if (activeTests.Length != 0) methods = activeTests;
List<string> failNames = new List<string>(); List<string> failNames = new List<string>();
foreach (var method in methods) foreach (var method in methods)
{ {
if (HasAttribute<SkipTestAttribute>(method))
{
Console.Write("Skipping " + method.Name);
skip++;
continue;
}
Console.Write("Running " + method.Name); Console.Write("Running " + method.Name);
try try
{ {
method.Invoke(tester, null); method.Invoke(tester, null);
Console.WriteLine(" - OK!"); Console.WriteLine(" - OK!");
pass++;
} catch(TargetInvocationException tie) } catch(TargetInvocationException tie)
{ {
fail++; fail++;
Console.WriteLine(" - " + tie.InnerException.Message); Console.WriteLine(" - " + tie.InnerException.Message);
failNames.Add(method.Name); failNames.Add(method.Name);
if(tie.InnerException is TypeInitializationException)
{
Console.WriteLine("> " + tie.InnerException.InnerException.Message);
}
}catch (Exception ex) }catch (Exception ex)
{ {
...@@ -139,13 +171,15 @@ private static void RunTests() ...@@ -139,13 +171,15 @@ private static void RunTests()
} }
} }
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("Passed: {0}, Failed: {1}, Skipped: {2}", pass, fail, skip);
if(fail == 0) if(fail == 0)
{ {
Console.WriteLine("(all tests successful)"); Console.WriteLine("(all tests successful)");
} }
else else
{ {
Console.WriteLine("#### FAILED: {0}", fail); Console.WriteLine("Failures:");
foreach(var failName in failNames) foreach(var failName in failNames)
{ {
Console.WriteLine(failName); Console.WriteLine(failName);
...@@ -156,5 +190,7 @@ private static void RunTests() ...@@ -156,5 +190,7 @@ private static void RunTests()
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class ActiveTestAttribute : Attribute {} public sealed class ActiveTestAttribute : Attribute {}
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class SkipTestAttribute : Attribute { }
} }
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment