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();