Skip SqlServer related unit tests if SqlServer is not installed

--HG--
branch : dev
extra : transplant_source : g%B6%FFf%9DD%B0UD%97%E8%2B%94%2B%3A%CF%A8B%17%A0
This commit is contained in:
Renaud Paquay
2010-12-07 13:11:44 -08:00
parent c793c322bd
commit 259b465fd3

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Diagnostics;
using System.IO;
using Autofac.Features.Metadata;
using NHibernate;
@@ -19,29 +20,16 @@ namespace Orchard.Tests.Data {
var databasePath = Path.Combine(temporaryPath, "Orchard.mdf");
var databaseName = Path.GetFileNameWithoutExtension(databasePath);
try {
// create database
using ( var connection = new SqlConnection(
"Data Source=.\\SQLEXPRESS;Initial Catalog=tempdb;Integrated Security=true;User Instance=True;") ) {
connection.Open();
using ( var command = connection.CreateCommand() ) {
command.CommandText =
"CREATE DATABASE " + databaseName +
" ON PRIMARY (NAME=" + databaseName +
", FILENAME='" + databasePath.Replace("'", "''") + "')";
command.ExecuteNonQuery();
if (!TryCreateSqlServerDatabase(databasePath, databaseName))
return;
command.CommandText =
"EXEC sp_detach_db '" + databaseName + "', 'true'";
command.ExecuteNonQuery();
}
}
var meta = new Meta<CreateDataServicesProvider>((dataFolder, connectionString) =>
new SqlServerDataServicesProvider(dataFolder, connectionString),
new Dictionary<string, object> { { "ProviderName", "SqlServer" } });
var manager = (IDataServicesProviderFactory)new DataServicesProviderFactory(new[] { meta });
var manager = (IDataServicesProviderFactory)new DataServicesProviderFactory(new[] {
new Meta<CreateDataServicesProvider>(
(dataFolder, connectionString) => new SqlServerDataServicesProvider(dataFolder, connectionString),
new Dictionary<string, object> {{"ProviderName", "SqlServer"}})
});
var parameters = new SessionFactoryParameters {
Provider = "SqlServer",
DataFolder = temporaryPath,
@@ -67,6 +55,39 @@ namespace Orchard.Tests.Data {
}
}
private static bool TryCreateSqlServerDatabase(string databasePath, string databaseName) {
var connection = TryOpenSqlServerConnection();
if (connection == null)
return false;
using (connection) {
using (var command = connection.CreateCommand()) {
command.CommandText =
"CREATE DATABASE " + databaseName +
" ON PRIMARY (NAME=" + databaseName +
", FILENAME='" + databasePath.Replace("'", "''") + "')";
command.ExecuteNonQuery();
command.CommandText =
"EXEC sp_detach_db '" + databaseName + "', 'true'";
command.ExecuteNonQuery();
}
}
return true;
}
private static SqlConnection TryOpenSqlServerConnection() {
try {
var connection = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=tempdb;Integrated Security=true;User Instance=True;");
connection.Open();
return connection;
}
catch (SqlException e) {
Trace.WriteLine(string.Format("Error opening connection to Sql Server ('{0}'). Skipping test.", e.Message));
return null;
}
}
public static void RunWithSqlCe(IEnumerable<RecordBlueprint> recordDescriptors, Action<ISessionFactory> action) {
var temporaryPath = Path.GetTempFileName();
if (File.Exists(temporaryPath))