From 4603c26c423cc0a392a5c77a14231364555adfe4 Mon Sep 17 00:00:00 2001 From: Marc Gravell Date: Tue, 5 May 2015 14:09:00 +0100 Subject: [PATCH] Merge async+sync tests for DNX; allow async for CoreCLR; 1.41-beta4 --- Dapper NET45/SqlMapperAsync.cs | 13 ++ Dapper.DNX.Tests/project.json | 4 +- Dapper.DNX.sln | 1 + Dapper/project.json | 4 +- DapperTests NET45/DapperTests NET45.csproj | 5 +- DapperTests NET45/Tests.cs | 17 ++- Tests/Program.cs | 137 ++++++++++++--------- 7 files changed, 114 insertions(+), 67 deletions(-) diff --git a/Dapper NET45/SqlMapperAsync.cs b/Dapper NET45/SqlMapperAsync.cs index 98a1819..6b85e3b 100644 --- a/Dapper NET45/SqlMapperAsync.cs +++ b/Dapper NET45/SqlMapperAsync.cs @@ -8,6 +8,19 @@ using System.Threading; using System.Threading.Tasks; +#if DNXCORE50 +using IDbDataParameter = global::System.Data.Common.DbParameter; +using IDataParameter = global::System.Data.Common.DbParameter; +using IDbTransaction = global::System.Data.Common.DbTransaction; +using IDbConnection = global::System.Data.Common.DbConnection; +using IDbCommand = global::System.Data.Common.DbCommand; +using IDataReader = global::System.Data.Common.DbDataReader; +using IDataRecord = global::System.Data.Common.DbDataReader; +using IDataParameterCollection = global::System.Data.Common.DbParameterCollection; +using DataException = global::System.InvalidOperationException; +using ApplicationException = global::System.InvalidOperationException; +#endif + namespace Dapper { diff --git a/Dapper.DNX.Tests/project.json b/Dapper.DNX.Tests/project.json index 15303f3..ad1ddd1 100644 --- a/Dapper.DNX.Tests/project.json +++ b/Dapper.DNX.Tests/project.json @@ -6,7 +6,7 @@ "commands": { "Dapper.DNX.Tests": "Dapper.DNX.Tests" }, - "compile": [ "../Tests/Tests.cs", "../Tests/Program.cs", "../Tests/Assert.cs" ], + "compile": [ "../Tests/Tests.cs", "../Tests/Program.cs", "../Tests/Assert.cs", "../DapperTests NET45/Tests.cs" ], "compilationOptions": { "define": [ "NOEXTERNALS" ] }, "frameworks": { "net45": { @@ -36,7 +36,7 @@ }, "dnxcore50": { - "compilationOptions": { "define": [ ], "warningsAsErrors": true }, + "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true }, "dependencies": { "System.Console": "4.0.0-beta-*", "System.Reflection": "4.0.10-beta-*", diff --git a/Dapper.DNX.sln b/Dapper.DNX.sln index 4c105e3..10871b5 100644 --- a/Dapper.DNX.sln +++ b/Dapper.DNX.sln @@ -14,6 +14,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Dapper NET40\SqlMapper.cs = Dapper NET40\SqlMapper.cs Dapper NET45\SqlMapperAsync.cs = Dapper NET45\SqlMapperAsync.cs Tests\Tests.cs = Tests\Tests.cs + DapperTests NET45\Tests.cs = DapperTests NET45\Tests.cs EndProjectSection EndProject Global diff --git a/Dapper/project.json b/Dapper/project.json index 84f3350..b9b449f 100644 --- a/Dapper/project.json +++ b/Dapper/project.json @@ -5,7 +5,7 @@ "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..", - "version": "1.41-beta3", + "version": "1.41-beta4", "compile": [ "../Dapper NET40/*.cs", "../Dapper NET45/*.cs" ], "title": "Dapper dot net", "tags": [ "orm", "sql", "micro-orm" ], @@ -44,7 +44,7 @@ } }, "dnxcore50": { - "compilationOptions": { "define": [ ], "warningsAsErrors": true }, + "compilationOptions": { "define": [ "ASYNC"], "warningsAsErrors": true }, "dependencies": { "System.Text.RegularExpressions": "4.0.10-beta-*", "System.Collections": "4.0.10-beta-*", diff --git a/DapperTests NET45/DapperTests NET45.csproj b/DapperTests NET45/DapperTests NET45.csproj index 60e8940..fe5a927 100644 --- a/DapperTests NET45/DapperTests NET45.csproj +++ b/DapperTests NET45/DapperTests NET45.csproj @@ -19,7 +19,7 @@ full false bin\Debug\ - TRACE;DEBUG;EXTERNALS + TRACE;DEBUG;EXTERNALS ASYNC prompt 4 @@ -28,9 +28,10 @@ pdbonly true bin\Release\ - TRACE;EXTERNALS + TRACE;EXTERNALS ASYNC prompt 4 + false diff --git a/DapperTests NET45/Tests.cs b/DapperTests NET45/Tests.cs index 58cc48d..2902aa8 100644 --- a/DapperTests NET45/Tests.cs +++ b/DapperTests NET45/Tests.cs @@ -1,4 +1,5 @@ -using System.Linq; +#if ASYNC +using System.Linq; using Dapper; using SqlMapper; using System.Data; @@ -8,6 +9,14 @@ using System.Threading; using System.Data.SqlClient; +#if DNXCORE50 +using IDbCommand = global::System.Data.Common.DbCommand; +using IDbDataParameter = global::System.Data.Common.DbParameter; +using IDbConnection = global::System.Data.Common.DbConnection; +using IDbTransaction = global::System.Data.Common.DbTransaction; +using IDataReader = global::System.Data.Common.DbDataReader; +#endif + namespace DapperTests_NET45 { public class Tests @@ -180,7 +189,7 @@ public void TestMultiClosedConnAsync() } } } - +#if EXTERNALS public void ExecuteReaderOpenAsync() { using (var conn = Program.GetOpenConnection()) @@ -209,6 +218,7 @@ public void ExecuteReaderClosedAsync() ((int)dt.Rows[0][1]).IsEqualTo(4); } } +#endif public void LiteralReplacementOpen() { @@ -765,4 +775,5 @@ select @@Name } } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/Tests/Program.cs b/Tests/Program.cs index 7945eeb..3627b09 100644 --- a/Tests/Program.cs +++ b/Tests/Program.cs @@ -37,12 +37,23 @@ class Program public const string ConnectionString = "Data Source=.;Initial Catalog=tempdb;Integrated Security=True", OleDbConnectionString = "Provider=SQLOLEDB;Data Source=.;Initial Catalog=tempdb;Integrated Security=SSPI"; - public static SqlConnection GetOpenConnection() + public static SqlConnection GetOpenConnection(bool mars = false) { - var connection = new SqlConnection(ConnectionString); + var cs = ConnectionString; + if (mars) + { + SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(cs); + scsb.MultipleActiveResultSets = true; + cs = scsb.ConnectionString; + } + var connection = new SqlConnection(cs); connection.Open(); return connection; } + public static SqlConnection GetClosedConnection() + { + return new SqlConnection(ConnectionString); + } static void RunPerformanceTests() { @@ -63,8 +74,28 @@ static void Main() #else Console.WriteLine(Environment.Version); #endif + + int fail = 0, skip = 0, pass = 0, frameworkFail = 0; + var failNames = new List(); #if DEBUG - RunTests(); + RunTests(ref fail, ref skip, ref pass, ref frameworkFail, failNames); +#if ASYNC + RunTests(ref fail, ref skip, ref pass, ref frameworkFail, failNames); +#endif + + if (fail == 0) + { + Console.WriteLine("(all tests successful)"); + } + else + { + Console.WriteLine("Failures:"); + foreach (var failName in failNames) + { + Console.WriteLine(failName); + } + } + Console.WriteLine("Passed: {0}, Failed: {1}, Skipped: {2}, Framework-fail: {3}", pass, fail, skip, frameworkFail); #else EnsureDBSetup(); RunPerformanceTests(); @@ -136,76 +167,66 @@ insert Posts ([Text],CreationDate, LastChangeDate) values (replicate('x', 2000), #endif } - private static void RunTests() + private static void RunTests(ref int fail, ref int skip, ref int pass, ref int frameworkFail, List failNames) where T : class, new() { - var tester = new Tests(); - int fail = 0, skip = 0, pass = 0, frameworkFail = 0; - MethodInfo[] methods = typeof(Tests).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); - var activeTests = methods.Where(m => HasAttribute(m)).ToArray(); - if (activeTests.Length != 0) methods = activeTests; - List failNames = new List(); - foreach (var method in methods) + var tester = new T(); + using (tester as IDisposable) { - if (HasAttribute(method)) - { - Console.Write("Skipping " + method.Name); - skip++; - continue; - } - bool expectFrameworkFail = HasAttribute(method); - Console.Write("Running " + method.Name); - try + MethodInfo[] methods = typeof(T).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); + var activeTests = methods.Where(m => HasAttribute(m)).ToArray(); + if (activeTests.Length != 0) methods = activeTests; + foreach (var method in methods) { - method.Invoke(tester, null); - if (expectFrameworkFail) + if (HasAttribute(method)) { - Console.WriteLine(" - was expected to framework-fail, but didn't"); - fail++; - failNames.Add(method.Name); + Console.Write("Skipping " + method.Name); + skip++; + continue; } - else + bool expectFrameworkFail = HasAttribute(method); + + Console.Write("Running " + method.Name); + try { - Console.WriteLine(" - OK!"); - pass++; + method.Invoke(tester, null); + if (expectFrameworkFail) + { + Console.WriteLine(" - was expected to framework-fail, but didn't"); + fail++; + failNames.Add(method.Name); + } + else + { + Console.WriteLine(" - OK!"); + pass++; + } } - } catch(TargetInvocationException tie) - { - Console.WriteLine(" - " + tie.InnerException.Message); - if (expectFrameworkFail) + catch (TargetInvocationException tie) { - frameworkFail++; + Console.WriteLine(" - " + tie.InnerException.Message); + if (expectFrameworkFail) + { + frameworkFail++; + } + else + { + fail++; + failNames.Add(method.Name); + if (tie.InnerException is TypeInitializationException) + { + Console.WriteLine("> " + tie.InnerException.InnerException.Message); + } + } } - else + catch (Exception ex) { fail++; + Console.WriteLine(" - " + ex.Message); failNames.Add(method.Name); - if (tie.InnerException is TypeInitializationException) - { - Console.WriteLine("> " + tie.InnerException.InnerException.Message); - } } - }catch (Exception ex) - { - fail++; - Console.WriteLine(" - " + ex.Message); - failNames.Add(method.Name); - } - } - Console.WriteLine(); - - Console.WriteLine("Passed: {0}, Failed: {1}, Skipped: {2}, Framework-fail: {3}", pass, fail, skip, frameworkFail); - if(fail == 0) - { - Console.WriteLine("(all tests successful)"); - } - else - { - Console.WriteLine("Failures:"); - foreach(var failName in failNames) - { - Console.WriteLine(failName); } + Console.WriteLine(); } } } -- GitLab