cleaned up test db path for tests.

pull/2/head
Keivan Beigi 11 years ago
parent 02c175950b
commit dde91569ac

@ -13,26 +13,23 @@ namespace NzbDrone.Common.EnvironmentInfo
public class AppDirectoryInfo : IAppDirectoryInfo public class AppDirectoryInfo : IAppDirectoryInfo
{ {
public string WorkingDirectory
{
get { return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.Create), "NzbDrone"); }
}
public string StartUpPath public AppDirectoryInfo()
{ {
get WorkingDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.Create), "NzbDrone");
{ StartUpPath = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName;
var path = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName; SystemTemp = Path.GetTempPath();
return path;
}
}
public String SystemTemp if (!Directory.Exists(WorkingDirectory))
{
get
{ {
return Path.GetTempPath(); Directory.CreateDirectory(WorkingDirectory);
} }
} }
public string WorkingDirectory { get; private set; }
public string StartUpPath { get; private set; }
public String SystemTemp { get; private set; }
} }
} }

@ -11,7 +11,6 @@ namespace NzbDrone.Common.Instrumentation
{ {
public class LogglyTarget : TargetWithLayout public class LogglyTarget : TargetWithLayout
{ {
private readonly IAppDirectoryInfo _appDirectoryInfo;
private Logger _logger; private Logger _logger;
public void Register(LogLevel minLevel) public void Register(LogLevel minLevel)
@ -26,11 +25,6 @@ namespace NzbDrone.Common.Instrumentation
LogManager.ReconfigExistingLoggers(); LogManager.ReconfigExistingLoggers();
} }
public LogglyTarget(IAppDirectoryInfo appDirectoryInfo)
{
_appDirectoryInfo = appDirectoryInfo;
}
protected override void InitializeTarget() protected override void InitializeTarget()
{ {
string apiKey = string.Empty; string apiKey = string.Empty;

@ -5,6 +5,7 @@ using System.Linq;
using Marr.Data; using Marr.Data;
using Moq; using Moq;
using NUnit.Framework; using NUnit.Framework;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Messaging; using NzbDrone.Common.Messaging;
using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore;
using NzbDrone.Core.Datastore.Migration.Framework; using NzbDrone.Core.Datastore.Migration.Framework;
@ -63,9 +64,6 @@ namespace NzbDrone.Core.Test.Framework
public abstract class DbTest : CoreTest public abstract class DbTest : CoreTest
{ {
private string _dbName;
private ITestDatabase _db; private ITestDatabase _db;
private IDatabase _database; private IDatabase _database;
@ -90,15 +88,15 @@ namespace NzbDrone.Core.Test.Framework
} }
} }
private void WithObjectDb(bool memory = true) private void WithTestDb()
{ {
WithTempAsAppPath();
_dbName = DateTime.Now.Ticks.ToString() + ".db";
MapRepository.Instance.EnableTraceLogging = true; MapRepository.Instance.EnableTraceLogging = true;
var factory = new DbFactory(new MigrationController(new MigrationLogger(TestLogger))); var factory = new DbFactory(new MigrationController(new MigrationLogger(TestLogger)), Mocker.GetMock<IAppDirectoryInfo>().Object);
_database = factory.Create(_dbName, MigrationType); _database = factory.Create(MigrationType);
_db = new TestTestDatabase(_database); _db = new TestTestDatabase(_database);
Mocker.SetConstant(_database); Mocker.SetConstant(_database);
} }
@ -106,27 +104,29 @@ namespace NzbDrone.Core.Test.Framework
[SetUp] [SetUp]
public void SetupReadDb() public void SetupReadDb()
{ {
WithObjectDb(); WithTestDb();
} }
[TearDown] [TearDown]
public void TearDown() public void TearDown()
{ {
var files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.db"); if (TestDirectoryInfo != null)
foreach (var file in files)
{ {
try var files = Directory.GetFiles(TestDirectoryInfo.WorkingDirectory);
{
File.Delete(file);
}
catch (Exception)
{
foreach (var file in files)
{
try
{
File.Delete(file);
}
catch (Exception)
{
}
} }
} }
} }
} }

@ -17,9 +17,7 @@ namespace NzbDrone.Core.Test.MediaCoverTests
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
//Mocker.SetConstant(new HttpProvider(new IAppDirectoryInfo())); Mocker.SetConstant<IAppDirectoryInfo>(new AppDirectoryInfo());
//Mocker.SetConstant(new DiskProvider());
Mocker.SetConstant(new AppDirectoryInfo());
} }
[Test] [Test]

@ -289,7 +289,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
result.Should().NotBeNull(); result.Should().NotBeNull();
result.SeriesId.Should().Be(_fakeSeries.Id); result.SeriesId.Should().Be(_fakeSeries.Id);
result.Size.Should().Be(_fileSize); result.Size.Should().Be(_fileSize);
result.DateAdded.Should().HaveDay(DateTime.Now.Day); result.DateAdded.Should().HaveDay(DateTime.UtcNow.Day);
Mocker.GetMock<IMediaFileService>().Verify(c => c.Add(result), Times.Once()); Mocker.GetMock<IMediaFileService>().Verify(c => c.Add(result), Times.Once());
} }

@ -5,7 +5,6 @@ using NUnit.Framework;
using NzbDrone.Core.Qualities; using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Tv; using NzbDrone.Core.Tv;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.TvTests.SeriesRepositoryTests namespace NzbDrone.Core.Test.TvTests.SeriesRepositoryTests
{ {

@ -2,19 +2,25 @@
using System.Data.SQLite; using System.Data.SQLite;
using Marr.Data; using Marr.Data;
using Marr.Data.Reflection; using Marr.Data.Reflection;
using NzbDrone.Common.Composition;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Messaging;
using NzbDrone.Core.Datastore.Migration.Framework; using NzbDrone.Core.Datastore.Migration.Framework;
using NzbDrone.Common;
using NzbDrone.Core.Instrumentation;
namespace NzbDrone.Core.Datastore namespace NzbDrone.Core.Datastore
{ {
public interface IDbFactory public interface IDbFactory
{ {
IDatabase Create(string dbPath, MigrationType migrationType = MigrationType.Main); IDatabase Create(MigrationType migrationType = MigrationType.Main);
} }
public class DbFactory : IDbFactory public class DbFactory : IDbFactory
{ {
private readonly IMigrationController _migrationController; private readonly IMigrationController _migrationController;
private readonly IAppDirectoryInfo _appDirectoryInfo;
static DbFactory() static DbFactory()
{ {
@ -22,13 +28,46 @@ namespace NzbDrone.Core.Datastore
TableMapping.Map(); TableMapping.Map();
} }
public DbFactory(IMigrationController migrationController) public static void RegisterDatabase(IContainer container)
{
container.Register(c => c.Resolve<IDbFactory>().Create());
container.Register<ILogRepository>(c =>
{
var db = c.Resolve<IDbFactory>().Create(MigrationType.Log);
return new LogRepository(db, c.Resolve<IMessageAggregator>());
});
}
public DbFactory(IMigrationController migrationController, IAppDirectoryInfo appDirectoryInfo)
{ {
_migrationController = migrationController; _migrationController = migrationController;
_appDirectoryInfo = appDirectoryInfo;
} }
public IDatabase Create(string dbPath, MigrationType migrationType = MigrationType.Main) public IDatabase Create(MigrationType migrationType = MigrationType.Main)
{ {
string dbPath;
switch (migrationType)
{
case MigrationType.Main:
{
dbPath = _appDirectoryInfo.GetNzbDroneDatabase();
break;
}
case MigrationType.Log:
{
dbPath = _appDirectoryInfo.GetLogDatabase();
break;
}
default:
{
throw new ArgumentException("Invalid MigrationType");
}
}
var connectionString = GetConnectionString(dbPath); var connectionString = GetConnectionString(dbPath);
_migrationController.MigrateToLatest(connectionString, migrationType); _migrationController.MigrateToLatest(connectionString, migrationType);

@ -26,6 +26,8 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
{ {
lock (MigrationCache) lock (MigrationCache)
{ {
_announcer.Heading("Migrating " + connectionString);
if (MigrationCache.Contains(connectionString.ToLower())) return; if (MigrationCache.Contains(connectionString.ToLower())) return;
var assembly = Assembly.GetExecutingAssembly(); var assembly = Assembly.GetExecutingAssembly();

@ -1,6 +1,4 @@
using System; using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using Moq; using Moq;
using NLog; using NLog;
using NLog.Config; using NLog.Config;
@ -9,7 +7,6 @@ using NUnit.Framework;
using NzbDrone.Api; using NzbDrone.Api;
using NzbDrone.Api.Commands; using NzbDrone.Api.Commands;
using NzbDrone.Api.RootFolders; using NzbDrone.Api.RootFolders;
using NzbDrone.Common;
using NzbDrone.Common.Composition; using NzbDrone.Common.Composition;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Core.Configuration; using NzbDrone.Core.Configuration;
@ -56,36 +53,14 @@ namespace NzbDrone.Integration.Test
LogManager.ReconfigExistingLoggers(); LogManager.ReconfigExistingLoggers();
} }
private void InitDatabase()
{
Logger.Info("Registering Database...");
//TODO: move this to factory
var IAppDirectoryInfo = new AppDirectoryInfo();
var appDataPath = IAppDirectoryInfo.GetAppDataPath();
if (!Directory.Exists(appDataPath))
{
Directory.CreateDirectory(appDataPath);
}
var dbPath = Path.Combine(IAppDirectoryInfo.WorkingDirectory, DateTime.Now.Ticks + ".db");
Logger.Info("Working Folder: {0}", IAppDirectoryInfo.WorkingDirectory);
Logger.Info("Data Folder: {0}", IAppDirectoryInfo.GetAppDataPath());
Logger.Info("DB Na: {0}", dbPath);
Container.Register(c => c.Resolve<IDbFactory>().Create(dbPath));
}
[SetUp] [SetUp]
public void SmokeTestSetup() public void SmokeTestSetup()
{ {
Container = MainAppContainerBuilder.BuildContainer(); Container = MainAppContainerBuilder.BuildContainer();
Container.Register(typeof(IAppDirectoryInfo), new IntegrationTestDirectoryInfo());
InitDatabase(); DbFactory.RegisterDatabase(Container);
var taskManagerMock = new Mock<ITaskManager>(); var taskManagerMock = new Mock<ITaskManager>();
taskManagerMock.Setup(c => c.GetPending()).Returns(new List<ScheduledTask>()); taskManagerMock.Setup(c => c.GetPending()).Returns(new List<ScheduledTask>());

@ -0,0 +1,26 @@
using System;
using System.IO;
using NzbDrone.Common.EnvironmentInfo;
namespace NzbDrone.Integration.Test
{
public class IntegrationTestDirectoryInfo : IAppDirectoryInfo
{
public IntegrationTestDirectoryInfo()
{
SystemTemp = Path.GetTempPath();
WorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "integ_test", DateTime.Now.Ticks.ToString());
if (!Directory.Exists(WorkingDirectory))
{
Directory.CreateDirectory(WorkingDirectory);
}
StartUpPath = Directory.GetCurrentDirectory();
}
public string WorkingDirectory { get; private set; }
public string SystemTemp { get; private set; }
public string StartUpPath { get; private set; }
}
}

@ -90,6 +90,7 @@
<Compile Include="Client\SeriesClient.cs" /> <Compile Include="Client\SeriesClient.cs" />
<Compile Include="CommandIntegerationTests.cs" /> <Compile Include="CommandIntegerationTests.cs" />
<Compile Include="IndexerIntegrationFixture.cs" /> <Compile Include="IndexerIntegrationFixture.cs" />
<Compile Include="IntegrationTestDirectoryInfo.cs" />
<Compile Include="QualityProfileIntegrationTest.cs" /> <Compile Include="QualityProfileIntegrationTest.cs" />
<Compile Include="ReleaseIntegrationTest.cs" /> <Compile Include="ReleaseIntegrationTest.cs" />
<Compile Include="IntegrationTest.cs" /> <Compile Include="IntegrationTest.cs" />

@ -105,21 +105,10 @@ namespace NzbDrone.Test.Common
catch (Exception) catch (Exception)
{ {
} }
}
/* if (TestContext.CurrentContext.Result.State == TestState.Failure || TestContext.CurrentContext.Result.State == TestState.Error)
{
var testName = TestContext.CurrentContext.Test.Name.ToLower();
if (IAppDirectoryInfo.IsLinux && testName.Contains("windows")) protected IAppDirectoryInfo TestDirectoryInfo { get; private set; }
{
throw new IgnoreException("windows specific test");
}
else if (testName.Contains("linux"))
{
throw new IgnoreException("linux specific test");
}
}*/
}
protected void WindowsOnly() protected void WindowsOnly()
{ {
@ -143,6 +132,8 @@ namespace NzbDrone.Test.Common
Mocker.GetMock<IAppDirectoryInfo>() Mocker.GetMock<IAppDirectoryInfo>()
.SetupGet(c => c.WorkingDirectory) .SetupGet(c => c.WorkingDirectory)
.Returns(VirtualPath); .Returns(VirtualPath);
TestDirectoryInfo = Mocker.GetMock<IAppDirectoryInfo>().Object;
} }
protected string GetTestFilePath(string fileName) protected string GetTestFilePath(string fileName)

@ -30,7 +30,7 @@ namespace NzbDrone.Update
Console.WriteLine("Starting NzbDrone Update Client"); Console.WriteLine("Starting NzbDrone Update Client");
GlobalExceptionHandlers.Register(); GlobalExceptionHandlers.Register();
new LogglyTarget(new AppDirectoryInfo()).Register(LogLevel.Debug); new LogglyTarget().Register(LogLevel.Debug);
_container = UpdateContainerBuilder.Build(); _container = UpdateContainerBuilder.Build();
logger.Info("Updating NzbDrone to version {0}", BuildInfo.Version); logger.Info("Updating NzbDrone to version {0}", BuildInfo.Version);

@ -2,15 +2,15 @@
using System.Diagnostics; using System.Diagnostics;
using System.Reflection; using System.Reflection;
using NLog; using NLog;
using NzbDrone.Common;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Instrumentation; using NzbDrone.Common.Instrumentation;
using NzbDrone.Core.Datastore;
namespace NzbDrone namespace NzbDrone
{ {
public static class AppMain public static class AppMain
{ {
private static readonly Logger logger = LogManager.GetLogger("AppMain"); private static readonly Logger Logger = LogManager.GetLogger("AppMain");
public static void Main(string[] args) public static void Main(string[] args)
@ -19,10 +19,10 @@ namespace NzbDrone
{ {
GlobalExceptionHandlers.Register(); GlobalExceptionHandlers.Register();
new LogglyTarget(new AppDirectoryInfo()).Register(LogLevel.Warn); new LogglyTarget().Register(LogLevel.Warn);
logger.Info("Starting NzbDrone Console. Version {0}", Assembly.GetExecutingAssembly().GetName().Version); Logger.Info("Starting NzbDrone Console. Version {0}", Assembly.GetExecutingAssembly().GetName().Version);
//Check if full version .NET is installed. //Check if full version .NET is installed.
@ -32,7 +32,7 @@ namespace NzbDrone
} }
catch (Exception) catch (Exception)
{ {
logger.Error("It looks like you don't have full version of .NET Framework installed. Press any key and you will be directed to the download page."); Logger.Error("It looks like you don't have full version of .NET Framework installed. Press any key and you will be directed to the download page.");
Console.Read(); Console.Read();
try try
@ -41,7 +41,7 @@ namespace NzbDrone
} }
catch (Exception e) catch (Exception e)
{ {
logger.Warn("Oops. can't start default browser. Please visit http://www.microsoft.com/download/en/details.aspx?id=17851 to download .NET Framework 4."); Logger.Warn("Oops. can't start default browser. Please visit http://www.microsoft.com/download/en/details.aspx?id=17851 to download .NET Framework 4.");
Console.ReadLine(); Console.ReadLine();
} }
@ -50,20 +50,12 @@ namespace NzbDrone
var container = MainAppContainerBuilder.BuildContainer(); var container = MainAppContainerBuilder.BuildContainer();
/*try DbFactory.RegisterDatabase(container);
{
container.Resolve<IUpdateService>().Execute(new ApplicationUpdateCommand());
}
catch (Exception e)
{
logger.ErrorException("Application update failed.", e);
}
*/
container.Resolve<Router>().Route(args); container.Resolve<Router>().Route(args);
} }
catch (Exception e) catch (Exception e)
{ {
logger.FatalException("Epic Fail " + e.Message, e); Logger.FatalException("Epic Fail " + e.Message, e);
} }
} }

@ -1,11 +1,8 @@
using System.IO; using NLog;
using NLog;
using Nancy.Bootstrapper; using Nancy.Bootstrapper;
using NzbDrone.Api; using NzbDrone.Api;
using NzbDrone.Api.SignalR; using NzbDrone.Api.SignalR;
using NzbDrone.Common;
using NzbDrone.Common.Composition; using NzbDrone.Common.Composition;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Messaging; using NzbDrone.Common.Messaging;
using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore;
using NzbDrone.Core.Instrumentation; using NzbDrone.Core.Instrumentation;
@ -33,30 +30,9 @@ namespace NzbDrone
Container.Register(typeof(IBasicRepository<NamingConfig>), typeof(BasicRepository<NamingConfig>)); Container.Register(typeof(IBasicRepository<NamingConfig>), typeof(BasicRepository<NamingConfig>));
Container.Register<INancyBootstrapper, NancyBootstrapper>(); Container.Register<INancyBootstrapper, NancyBootstrapper>();
InitDatabase();
} }
private void InitDatabase()
{
Logger.Info("Registering Database...");
//TODO: move this to factory
var IAppDirectoryInfo = new AppDirectoryInfo();
var appDataPath = IAppDirectoryInfo.GetAppDataPath();
if (!Directory.Exists(appDataPath))
{
Directory.CreateDirectory(appDataPath);
}
Container.Register(c => c.Resolve<IDbFactory>().Create(IAppDirectoryInfo.GetNzbDroneDatabase()));
Container.Register<ILogRepository>(c =>
{
var db = c.Resolve<IDbFactory>().Create(IAppDirectoryInfo.GetLogDatabase(), MigrationType.Log);
return new LogRepository(db, c.Resolve<IMessageAggregator>());
});
}
} }
} }
Loading…
Cancel
Save