diff --git a/src/Umbraco.Core/ObjectResolution/ResolverBase.cs b/src/Umbraco.Core/ObjectResolution/ResolverBase.cs
index 93fb6c4c0c..1e542eae59 100644
--- a/src/Umbraco.Core/ObjectResolution/ResolverBase.cs
+++ b/src/Umbraco.Core/ObjectResolution/ResolverBase.cs
@@ -77,8 +77,17 @@ namespace Umbraco.Core.ObjectResolution
/// Resets the resolver singleton instance to null.
///
/// To be used in unit tests.
- internal static void Reset()
+ /// By default this is true because we always need to reset resolution before we reset a resolver, however in some insanely rare cases like unit testing you might not want to do this.
+ internal static void Reset(bool resetResolution = true)
{
+
+ //In order to reset a resolver, we always must reset the resolution
+ if (resetResolution)
+ {
+ Resolution.Reset();
+ }
+
+
using (Resolution.Configuration)
using (new WriteLock(ResolversLock))
{
diff --git a/src/Umbraco.Tests/BootManagers/CoreBootManagerTests.cs b/src/Umbraco.Tests/BootManagers/CoreBootManagerTests.cs
index d7fb7792a3..a11c7c4b17 100644
--- a/src/Umbraco.Tests/BootManagers/CoreBootManagerTests.cs
+++ b/src/Umbraco.Tests/BootManagers/CoreBootManagerTests.cs
@@ -25,7 +25,7 @@ namespace Umbraco.Tests.BootManagers
public void TearDown()
{
_testApp = null;
- Resolution.Reset();
+
ApplicationEventsResolver.Reset();
}
diff --git a/src/Umbraco.Tests/CacheRefresherFactoryTests.cs b/src/Umbraco.Tests/CacheRefresherFactoryTests.cs
index 4583c90270..6a73631945 100644
--- a/src/Umbraco.Tests/CacheRefresherFactoryTests.cs
+++ b/src/Umbraco.Tests/CacheRefresherFactoryTests.cs
@@ -35,7 +35,6 @@ namespace Umbraco.Tests
public void TearDown()
{
CacheRefreshersResolver.Reset();
- Resolution.Reset();
}
[Test]
diff --git a/src/Umbraco.Tests/CodeFirst/CodeFirstTests.cs b/src/Umbraco.Tests/CodeFirst/CodeFirstTests.cs
index a6547be834..a89bd1c495 100644
--- a/src/Umbraco.Tests/CodeFirst/CodeFirstTests.cs
+++ b/src/Umbraco.Tests/CodeFirst/CodeFirstTests.cs
@@ -233,7 +233,6 @@ namespace Umbraco.Tests.CodeFirst
//reset the app context
DataTypesResolver.Reset();
ApplicationContext.Current = null;
- Resolution.Reset();
PluginManager.Current = null;
string path = TestHelper.CurrentAssemblyDirectory;
diff --git a/src/Umbraco.Tests/DataTypeFactoryTests.cs b/src/Umbraco.Tests/DataTypeFactoryTests.cs
index 1026ce6a80..792f047ca0 100644
--- a/src/Umbraco.Tests/DataTypeFactoryTests.cs
+++ b/src/Umbraco.Tests/DataTypeFactoryTests.cs
@@ -37,7 +37,6 @@ namespace Umbraco.Tests
public void TearDown()
{
DataTypesResolver.Reset();
- Resolution.Reset();
}
[Test]
diff --git a/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs b/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs
index b8ae95974e..ed2e3fca60 100644
--- a/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs
+++ b/src/Umbraco.Tests/Migrations/FindingMigrationsTest.cs
@@ -75,7 +75,6 @@ namespace Umbraco.Tests.Migrations
public void TearDown()
{
MigrationResolver.Reset();
- Resolution.Reset();
}
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs b/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs
index 20bb537c51..ae05d65f5f 100644
--- a/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs
+++ b/src/Umbraco.Tests/Migrations/TargetVersionSixthMigrationsTest.cs
@@ -70,7 +70,6 @@ namespace Umbraco.Tests.Migrations
public void TearDown()
{
MigrationResolver.Reset();
- Resolution.Reset();
}
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs
index e348b2dcf1..61358afd3d 100644
--- a/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs
+++ b/src/Umbraco.Tests/Migrations/Upgrades/BaseUpgradeTest.cs
@@ -95,7 +95,6 @@ namespace Umbraco.Tests.Migrations.Upgrades
PluginManager.Current = null;
SyntaxConfig.SqlSyntaxProvider = null;
MigrationResolver.Reset();
- Resolution.Reset();
TestHelper.CleanContentDirectories();
diff --git a/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs b/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs
index 8c14d19285..02b88438a3 100644
--- a/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs
+++ b/src/Umbraco.Tests/Migrations/Upgrades/ValidateOlderSchemaTest.cs
@@ -58,8 +58,6 @@ namespace Umbraco.Tests.Migrations.Upgrades
UmbracoSettings.UseLegacyXmlSchema = false;
- Resolution.Freeze();
-
//Delete database file before continueing
string filePath = string.Concat(Path, "\\UmbracoPetaPocoTests.sdf");
if (File.Exists(filePath))
@@ -70,6 +68,8 @@ namespace Umbraco.Tests.Migrations.Upgrades
//Get the connectionstring settings from config
var settings = ConfigurationManager.ConnectionStrings[Core.Configuration.GlobalSettings.UmbracoConnectionName];
+ Resolution.Freeze();
+
//Create the Sql CE database
var engine = new SqlCeEngine(settings.ConnectionString);
engine.CreateDatabase();
diff --git a/src/Umbraco.Tests/Persistence/MySqlTableByTableTest.cs b/src/Umbraco.Tests/Persistence/MySqlTableByTableTest.cs
index 98b12940b6..e990013d6c 100644
--- a/src/Umbraco.Tests/Persistence/MySqlTableByTableTest.cs
+++ b/src/Umbraco.Tests/Persistence/MySqlTableByTableTest.cs
@@ -53,7 +53,6 @@ namespace Umbraco.Tests.Persistence
//reset the app context
ApplicationContext.Current = null;
- Resolution.Reset();
RepositoryResolver.Reset();
}
diff --git a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs
index 9f3b094ace..24ecf4426e 100644
--- a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs
+++ b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs
@@ -68,8 +68,7 @@ namespace Umbraco.Tests.Persistence
//reset the app context
ApplicationContext.Current = null;
- Resolution.Reset();
-
+
RepositoryResolver.Reset();
}
diff --git a/src/Umbraco.Tests/Persistence/SqlTableByTableTest.cs b/src/Umbraco.Tests/Persistence/SqlTableByTableTest.cs
index 0bd5bcf291..8271c386d0 100644
--- a/src/Umbraco.Tests/Persistence/SqlTableByTableTest.cs
+++ b/src/Umbraco.Tests/Persistence/SqlTableByTableTest.cs
@@ -55,8 +55,7 @@ namespace Umbraco.Tests.Persistence
//reset the app context
ApplicationContext.Current = null;
- Resolution.Reset();
-
+
RepositoryResolver.Reset();
}
diff --git a/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs b/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs
index 91a1a50e00..0c601a227b 100644
--- a/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs
+++ b/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs
@@ -49,11 +49,9 @@ namespace Umbraco.Tests.Publishing
//reset the app context
DataTypesResolver.Reset();
- ApplicationContext.Current = null;
- Resolution.Reset();
-
RepositoryResolver.Reset();
-
+ ApplicationContext.Current = null;
+
string path = TestHelper.CurrentAssemblyDirectory;
AppDomain.CurrentDomain.SetData("DataDirectory", null);
diff --git a/src/Umbraco.Tests/Resolvers/ActionsResolverTests.cs b/src/Umbraco.Tests/Resolvers/ActionsResolverTests.cs
index 2e3a3a05eb..ebf68007a2 100644
--- a/src/Umbraco.Tests/Resolvers/ActionsResolverTests.cs
+++ b/src/Umbraco.Tests/Resolvers/ActionsResolverTests.cs
@@ -16,7 +16,6 @@ namespace Umbraco.Tests.Resolvers
{
TestHelper.SetupLog4NetForTests();
- Resolution.Reset();
ActionsResolver.Reset();
// this ensures it's reset
@@ -32,7 +31,6 @@ namespace Umbraco.Tests.Resolvers
[TearDown]
public void TearDown()
{
- Resolution.Reset();
ActionsResolver.Reset();
PluginManager.Current.AssembliesToScan = null;
}
diff --git a/src/Umbraco.Tests/Resolvers/LazyManyObjectResolverTests.cs b/src/Umbraco.Tests/Resolvers/LazyManyObjectResolverTests.cs
index 666a7abebf..39f4397099 100644
--- a/src/Umbraco.Tests/Resolvers/LazyManyObjectResolverTests.cs
+++ b/src/Umbraco.Tests/Resolvers/LazyManyObjectResolverTests.cs
@@ -18,14 +18,12 @@ namespace Umbraco.Tests.Resolvers
{
TestHelper.SetupLog4NetForTests();
- Resolution.Reset();
LazyResolver.Reset();
}
[TearDown]
public void TearDown()
{
- Resolution.Reset();
LazyResolver.Reset();
}
diff --git a/src/Umbraco.Tests/Resolvers/MacroFieldEditorsResolverTests.cs b/src/Umbraco.Tests/Resolvers/MacroFieldEditorsResolverTests.cs
index 6def8c0fc1..3f71ac8152 100644
--- a/src/Umbraco.Tests/Resolvers/MacroFieldEditorsResolverTests.cs
+++ b/src/Umbraco.Tests/Resolvers/MacroFieldEditorsResolverTests.cs
@@ -18,7 +18,6 @@ namespace Umbraco.Tests.Resolvers
{
TestHelper.SetupLog4NetForTests();
- Resolution.Reset();
MacroFieldEditorsResolver.Reset();
@@ -35,7 +34,6 @@ namespace Umbraco.Tests.Resolvers
[TearDown]
public void TearDown()
{
- Resolution.Reset();
MacroFieldEditorsResolver.Reset();
PluginManager.Current.AssembliesToScan = null;
}
diff --git a/src/Umbraco.Tests/Resolvers/ManyResolverTests.cs b/src/Umbraco.Tests/Resolvers/ManyResolverTests.cs
index c72b4cd3d1..28a025df85 100644
--- a/src/Umbraco.Tests/Resolvers/ManyResolverTests.cs
+++ b/src/Umbraco.Tests/Resolvers/ManyResolverTests.cs
@@ -20,14 +20,12 @@ namespace Umbraco.Tests.Resolvers
{
TestHelper.SetupLog4NetForTests();
- Resolution.Reset();
ManyResolver.Reset();
}
[TearDown]
public void TearDown()
{
- Resolution.Reset();
ManyResolver.Reset();
}
diff --git a/src/Umbraco.Tests/Resolvers/PackageActionsResolverTests.cs b/src/Umbraco.Tests/Resolvers/PackageActionsResolverTests.cs
index fd3c6937fd..132fc1f7ae 100644
--- a/src/Umbraco.Tests/Resolvers/PackageActionsResolverTests.cs
+++ b/src/Umbraco.Tests/Resolvers/PackageActionsResolverTests.cs
@@ -17,7 +17,6 @@ namespace Umbraco.Tests.Resolvers
{
TestHelper.SetupLog4NetForTests();
- Resolution.Reset();
PackageActionsResolver.Reset();
// ensures it's reset
@@ -33,7 +32,6 @@ namespace Umbraco.Tests.Resolvers
[TearDown]
public void TearDown()
{
- Resolution.Reset();
PackageActionsResolver.Reset();
PluginManager.Current.AssembliesToScan = null;
}
diff --git a/src/Umbraco.Tests/Resolvers/ResolutionTests.cs b/src/Umbraco.Tests/Resolvers/ResolutionTests.cs
index bb517adff1..2debaa1bd4 100644
--- a/src/Umbraco.Tests/Resolvers/ResolutionTests.cs
+++ b/src/Umbraco.Tests/Resolvers/ResolutionTests.cs
@@ -19,14 +19,12 @@ namespace Umbraco.Tests.Resolvers
{
TestHelper.SetupLog4NetForTests();
- Resolution.Reset();
BaseResolver.Reset();
}
[TearDown]
public void TearDown()
{
- Resolution.Reset();
BaseResolver.Reset();
}
diff --git a/src/Umbraco.Tests/Resolvers/SingleResolverTests.cs b/src/Umbraco.Tests/Resolvers/SingleResolverTests.cs
index b6282cd208..581fa98f1c 100644
--- a/src/Umbraco.Tests/Resolvers/SingleResolverTests.cs
+++ b/src/Umbraco.Tests/Resolvers/SingleResolverTests.cs
@@ -19,14 +19,12 @@ namespace Umbraco.Tests.Resolvers
{
TestHelper.SetupLog4NetForTests();
- Resolution.Reset();
SingleResolver.Reset();
}
[TearDown]
public void TearDown()
{
- Resolution.Reset();
SingleResolver.Reset();
}
diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
index 13d1df56bd..d3c272204f 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
@@ -63,13 +63,14 @@ namespace Umbraco.Tests.TestHelpers
var engine = new SqlCeEngine(settings.ConnectionString);
engine.CreateDatabase();
- Resolution.Freeze();
ApplicationContext.Current = new ApplicationContext(
//assign the db context
new DatabaseContext(new DefaultDatabaseFactory()),
//assign the service context
new ServiceContext(new PetaPocoUnitOfWorkProvider(), new FileUnitOfWorkProvider(), new PublishingStrategy())) { IsReady = true };
-
+
+ Resolution.Freeze();
+
//Configure the Database and Sql Syntax based on connection string set in config
DatabaseContext.Initialize();
//Create the umbraco database and its base data
@@ -90,7 +91,6 @@ namespace Umbraco.Tests.TestHelpers
SqlCeContextGuardian.CloseBackgroundConnection();
ApplicationContext.Current = null;
- Resolution.Reset();
RepositoryResolver.Reset();
TestHelper.CleanContentDirectories();
diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs
index 79b75f9696..16bc5eeeaf 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs
@@ -83,7 +83,6 @@ namespace Umbraco.Tests.TestHelpers
//reset the app context
ApplicationContext.Current = null;
- Resolution.Reset();
RepositoryResolver.Reset();
}
diff --git a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
index 9994399ce6..2ba6c98f23 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs
@@ -111,7 +111,6 @@ namespace Umbraco.Tests.TestHelpers
ApplicationContext.Current = null;
- Resolution.Reset();
RepositoryResolver.Reset();
TestHelper.CleanContentDirectories();