mirror of
https://github.com/lidarr/Lidarr
synced 2024-12-25 17:17:02 +00:00
cleaned up test db path for tests.
This commit is contained in:
parent
02c175950b
commit
dde91569ac
15 changed files with 123 additions and 133 deletions
|
@ -13,26 +13,23 @@ public interface 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;
|
||||
SystemTemp = Path.GetTempPath();
|
||||
|
||||
if (!Directory.Exists(WorkingDirectory))
|
||||
{
|
||||
var path = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName;
|
||||
return path;
|
||||
Directory.CreateDirectory(WorkingDirectory);
|
||||
}
|
||||
}
|
||||
|
||||
public String SystemTemp
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.GetTempPath();
|
||||
}
|
||||
}
|
||||
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
|
||||
{
|
||||
private readonly IAppDirectoryInfo _appDirectoryInfo;
|
||||
private Logger _logger;
|
||||
|
||||
public void Register(LogLevel minLevel)
|
||||
|
@ -26,11 +25,6 @@ public void Register(LogLevel minLevel)
|
|||
LogManager.ReconfigExistingLoggers();
|
||||
}
|
||||
|
||||
public LogglyTarget(IAppDirectoryInfo appDirectoryInfo)
|
||||
{
|
||||
_appDirectoryInfo = appDirectoryInfo;
|
||||
}
|
||||
|
||||
protected override void InitializeTarget()
|
||||
{
|
||||
string apiKey = string.Empty;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
using Marr.Data;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
|
@ -63,9 +64,6 @@ protected TSubject Subject
|
|||
|
||||
public abstract class DbTest : CoreTest
|
||||
{
|
||||
|
||||
private string _dbName;
|
||||
|
||||
private ITestDatabase _db;
|
||||
private IDatabase _database;
|
||||
|
||||
|
@ -90,15 +88,15 @@ protected ITestDatabase Db
|
|||
}
|
||||
}
|
||||
|
||||
private void WithObjectDb(bool memory = true)
|
||||
private void WithTestDb()
|
||||
{
|
||||
WithTempAsAppPath();
|
||||
|
||||
_dbName = DateTime.Now.Ticks.ToString() + ".db";
|
||||
|
||||
MapRepository.Instance.EnableTraceLogging = true;
|
||||
|
||||
var factory = new DbFactory(new MigrationController(new MigrationLogger(TestLogger)));
|
||||
_database = factory.Create(_dbName, MigrationType);
|
||||
var factory = new DbFactory(new MigrationController(new MigrationLogger(TestLogger)), Mocker.GetMock<IAppDirectoryInfo>().Object);
|
||||
_database = factory.Create(MigrationType);
|
||||
_db = new TestTestDatabase(_database);
|
||||
Mocker.SetConstant(_database);
|
||||
}
|
||||
|
@ -106,27 +104,29 @@ private void WithObjectDb(bool memory = true)
|
|||
[SetUp]
|
||||
public void SetupReadDb()
|
||||
{
|
||||
WithObjectDb();
|
||||
WithTestDb();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
var files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.db");
|
||||
|
||||
foreach (var file in files)
|
||||
if (TestDirectoryInfo != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(file);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
var files = Directory.GetFiles(TestDirectoryInfo.WorkingDirectory);
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(file);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -17,9 +17,7 @@ public class MediaCoverServiceFixture : CoreTest<MediaCoverService>
|
|||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
//Mocker.SetConstant(new HttpProvider(new IAppDirectoryInfo()));
|
||||
//Mocker.SetConstant(new DiskProvider());
|
||||
Mocker.SetConstant(new AppDirectoryInfo());
|
||||
Mocker.SetConstant<IAppDirectoryInfo>(new AppDirectoryInfo());
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -289,7 +289,7 @@ private void VerifyFileImport(EpisodeFile result)
|
|||
result.Should().NotBeNull();
|
||||
result.SeriesId.Should().Be(_fakeSeries.Id);
|
||||
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());
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
using NzbDrone.Core.Qualities;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
using NzbDrone.Test.Common;
|
||||
|
||||
namespace NzbDrone.Core.Test.TvTests.SeriesRepositoryTests
|
||||
{
|
||||
|
|
|
@ -2,19 +2,25 @@
|
|||
using System.Data.SQLite;
|
||||
using Marr.Data;
|
||||
using Marr.Data.Reflection;
|
||||
using NzbDrone.Common.Composition;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Core.Instrumentation;
|
||||
|
||||
|
||||
namespace NzbDrone.Core.Datastore
|
||||
{
|
||||
public interface IDbFactory
|
||||
{
|
||||
IDatabase Create(string dbPath, MigrationType migrationType = MigrationType.Main);
|
||||
IDatabase Create(MigrationType migrationType = MigrationType.Main);
|
||||
}
|
||||
|
||||
public class DbFactory : IDbFactory
|
||||
{
|
||||
private readonly IMigrationController _migrationController;
|
||||
private readonly IAppDirectoryInfo _appDirectoryInfo;
|
||||
|
||||
static DbFactory()
|
||||
{
|
||||
|
@ -22,13 +28,46 @@ static DbFactory()
|
|||
TableMapping.Map();
|
||||
}
|
||||
|
||||
public DbFactory(IMigrationController migrationController)
|
||||
public static void RegisterDatabase(IContainer container)
|
||||
{
|
||||
_migrationController = migrationController;
|
||||
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 IDatabase Create(string dbPath, MigrationType migrationType = MigrationType.Main)
|
||||
public DbFactory(IMigrationController migrationController, IAppDirectoryInfo appDirectoryInfo)
|
||||
{
|
||||
_migrationController = migrationController;
|
||||
_appDirectoryInfo = appDirectoryInfo;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
_migrationController.MigrateToLatest(connectionString, migrationType);
|
||||
|
|
|
@ -26,6 +26,8 @@ public void MigrateToLatest(string connectionString, MigrationType migrationType
|
|||
{
|
||||
lock (MigrationCache)
|
||||
{
|
||||
_announcer.Heading("Migrating " + connectionString);
|
||||
|
||||
if (MigrationCache.Contains(connectionString.ToLower())) return;
|
||||
|
||||
var assembly = Assembly.GetExecutingAssembly();
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using Moq;
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
|
@ -9,7 +7,6 @@
|
|||
using NzbDrone.Api;
|
||||
using NzbDrone.Api.Commands;
|
||||
using NzbDrone.Api.RootFolders;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Common.Composition;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Core.Configuration;
|
||||
|
@ -56,36 +53,14 @@ static IntegrationTest()
|
|||
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]
|
||||
public void SmokeTestSetup()
|
||||
{
|
||||
Container = MainAppContainerBuilder.BuildContainer();
|
||||
Container.Register(typeof(IAppDirectoryInfo), new IntegrationTestDirectoryInfo());
|
||||
|
||||
InitDatabase();
|
||||
DbFactory.RegisterDatabase(Container);
|
||||
|
||||
var taskManagerMock = new Mock<ITaskManager>();
|
||||
taskManagerMock.Setup(c => c.GetPending()).Returns(new List<ScheduledTask>());
|
||||
|
|
26
NzbDrone.Integration.Test/IntegrationTestDirectoryInfo.cs
Normal file
26
NzbDrone.Integration.Test/IntegrationTestDirectoryInfo.cs
Normal file
|
@ -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="CommandIntegerationTests.cs" />
|
||||
<Compile Include="IndexerIntegrationFixture.cs" />
|
||||
<Compile Include="IntegrationTestDirectoryInfo.cs" />
|
||||
<Compile Include="QualityProfileIntegrationTest.cs" />
|
||||
<Compile Include="ReleaseIntegrationTest.cs" />
|
||||
<Compile Include="IntegrationTest.cs" />
|
||||
|
|
|
@ -105,22 +105,11 @@ public void TestBaseTearDown()
|
|||
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"))
|
||||
{
|
||||
throw new IgnoreException("windows specific test");
|
||||
}
|
||||
else if (testName.Contains("linux"))
|
||||
{
|
||||
throw new IgnoreException("linux specific test");
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
protected IAppDirectoryInfo TestDirectoryInfo { get; private set; }
|
||||
|
||||
protected void WindowsOnly()
|
||||
{
|
||||
if (OsInfo.IsLinux)
|
||||
|
@ -143,6 +132,8 @@ protected void WithTempAsAppPath()
|
|||
Mocker.GetMock<IAppDirectoryInfo>()
|
||||
.SetupGet(c => c.WorkingDirectory)
|
||||
.Returns(VirtualPath);
|
||||
|
||||
TestDirectoryInfo = Mocker.GetMock<IAppDirectoryInfo>().Object;
|
||||
}
|
||||
|
||||
protected string GetTestFilePath(string fileName)
|
||||
|
|
|
@ -30,7 +30,7 @@ public static void Main(string[] args)
|
|||
Console.WriteLine("Starting NzbDrone Update Client");
|
||||
GlobalExceptionHandlers.Register();
|
||||
|
||||
new LogglyTarget(new AppDirectoryInfo()).Register(LogLevel.Debug);
|
||||
new LogglyTarget().Register(LogLevel.Debug);
|
||||
_container = UpdateContainerBuilder.Build();
|
||||
|
||||
logger.Info("Updating NzbDrone to version {0}", BuildInfo.Version);
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using NLog;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Instrumentation;
|
||||
using NzbDrone.Core.Datastore;
|
||||
|
||||
namespace NzbDrone
|
||||
{
|
||||
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)
|
||||
|
@ -19,10 +19,10 @@ public static void Main(string[] args)
|
|||
{
|
||||
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.
|
||||
|
@ -32,7 +32,7 @@ public static void Main(string[] args)
|
|||
}
|
||||
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();
|
||||
|
||||
try
|
||||
|
@ -41,7 +41,7 @@ public static void Main(string[] args)
|
|||
}
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -50,20 +50,12 @@ public static void Main(string[] args)
|
|||
|
||||
var container = MainAppContainerBuilder.BuildContainer();
|
||||
|
||||
/*try
|
||||
{
|
||||
container.Resolve<IUpdateService>().Execute(new ApplicationUpdateCommand());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.ErrorException("Application update failed.", e);
|
||||
}
|
||||
*/
|
||||
DbFactory.RegisterDatabase(container);
|
||||
container.Resolve<Router>().Route(args);
|
||||
}
|
||||
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 NzbDrone.Api;
|
||||
using NzbDrone.Api.SignalR;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Common.Composition;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.Instrumentation;
|
||||
|
@ -33,30 +30,9 @@ private MainAppContainerBuilder()
|
|||
Container.Register(typeof(IBasicRepository<NamingConfig>), typeof(BasicRepository<NamingConfig>));
|
||||
|
||||
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…
Reference in a new issue