Cleans up POC code (still more to do)

This commit is contained in:
Shannon
2020-03-09 13:14:16 +11:00
parent 41c2d01078
commit 0c8426f308
23 changed files with 112 additions and 345 deletions
+87 -320
View File
@@ -103,7 +103,8 @@ namespace Umbraco.Core.Composing
/// NOTE the comma vs period... comma delimits the name in an Assembly FullName property so if it ends with comma then its an exact name match
/// NOTE this means that "foo." will NOT exclude "foo.dll" but only "foo.*.dll"
/// </remarks>
private static readonly string[] KnownAssemblyExclusionFilter = {
internal static readonly string[] KnownAssemblyExclusionFilter = {
"mscorlib",
"Antlr3.",
"AutoMapper,",
"AutoMapper.",
@@ -539,7 +540,7 @@ namespace Umbraco.Core.Composing
}
/// <summary>
/// Provides a list of loaded assemblies that can be scanned
/// Provides a list of assemblies that can be scanned
/// </summary>
public interface IAssemblyProvider
{
@@ -547,238 +548,77 @@ namespace Umbraco.Core.Composing
}
/// <summary>
/// Discovers assemblies that are part of the Umbraco application using the DependencyContext.
/// Returns a list of scannable assemblies based on an entry point assembly and it's references
/// </summary>
/// <remarks>
/// Happily "borrowed" from aspnet: https://github.com/aspnet/Mvc/blob/230a13d0e13e4c7e192bc6623762bfd4cde726ef/src/Microsoft.AspNetCore.Mvc.Core/Internal/DefaultAssemblyPartDiscoveryProvider.cs
///
/// TODO: Happily borrow their unit tests too
/// This will recursively search through the entry point's assemblies and Umbraco's core assemblies (Core/Web) and their references
/// to create a list of scannable assemblies based on whether they themselves or their transitive dependencies reference Umbraco core assemblies.
/// </remarks>
public class DefaultUmbracoAssemblyProvider : IAssemblyProvider
{
private readonly string _entryPointAssemblyName;
private readonly Assembly _entryPointAssembly;
private static readonly string[] UmbracoCoreAssemblyNames = new[] { "Umbraco.Core", "Umbraco.Web" };
public DefaultUmbracoAssemblyProvider(string entryPointAssemblyName)
public DefaultUmbracoAssemblyProvider(Assembly entryPointAssembly)
{
if (string.IsNullOrWhiteSpace(entryPointAssemblyName))
throw new ArgumentException($"{entryPointAssemblyName} cannot be null or empty", nameof(entryPointAssemblyName));
_entryPointAssemblyName = entryPointAssemblyName;
_entryPointAssembly = entryPointAssembly ?? throw new ArgumentNullException(nameof(entryPointAssembly));
}
public IEnumerable<Assembly> Assemblies
{
get
{
var finder = new FindAssembliesWithReferencesTo(new[] { _entryPointAssemblyName }, new[] { "Umbraco.Core" });
var finder = new FindAssembliesWithReferencesTo(new[] { _entryPointAssembly }, UmbracoCoreAssemblyNames, true);
foreach(var found in finder.Find())
{
yield return Assembly.Load(found);
yield return found;
}
}
}
//public IEnumerable<Assembly> Assemblies => DiscoverAssemblyParts(_entryPointAssemblyName);
//internal static HashSet<string> ReferenceAssemblies { get; } = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
//{
// "Umbraco.Core",
// "Umbraco.Web"
//};
//internal static IEnumerable<Assembly> DiscoverAssemblyParts(string entryPointAssemblyName)
//{
// var entryAssembly = Assembly.Load(new AssemblyName(entryPointAssemblyName));
// var context = DependencyContext.Load(entryAssembly);
// var candidates = GetCandidateAssemblies(entryAssembly, context);
// return candidates;
//}
//internal static IEnumerable<Assembly> GetCandidateAssemblies(Assembly entryAssembly, DependencyContext dependencyContext)
//{
// if (dependencyContext == null)
// {
// // Use the entry assembly as the sole candidate.
// return new[] { entryAssembly };
// }
// //includeRefLibs == true - so that Umbraco.Core is also returned!
// return GetCandidateLibraries(dependencyContext, includeRefLibs: true)
// .SelectMany(library => library.GetDefaultAssemblyNames(dependencyContext))
// .Select(Assembly.Load);
//}
///// <summary>
///// Returns a list of libraries that references the assemblies in <see cref="ReferenceAssemblies"/>.
///// </summary>
///// <param name="dependencyContext"></param>
///// <param name="includeRefLibs">
///// True to also include libs in the ReferenceAssemblies list
///// </param>
///// <returns></returns>
//internal static IEnumerable<RuntimeLibrary> GetCandidateLibraries(DependencyContext dependencyContext, bool includeRefLibs)
//{
// if (ReferenceAssemblies == null)
// {
// return Enumerable.Empty<RuntimeLibrary>();
// }
// var candidatesResolver = new CandidateResolver(dependencyContext.RuntimeLibraries, ReferenceAssemblies, includeRefLibs);
// return candidatesResolver.GetCandidates();
//}
//private class CandidateResolver
//{
// private readonly bool _includeRefLibs;
// private readonly IDictionary<string, Dependency> _dependencies;
// /// <summary>
// /// Constructor
// /// </summary>
// /// <param name="dependencies"></param>
// /// <param name="referenceAssemblies"></param>
// /// <param name="includeRefLibs">
// /// True to also include libs in the ReferenceAssemblies list
// /// </param>
// public CandidateResolver(IEnumerable<RuntimeLibrary> dependencies, ISet<string> referenceAssemblies, bool includeRefLibs)
// {
// _includeRefLibs = includeRefLibs;
// _dependencies = dependencies
// .ToDictionary(d => d.Name, d => CreateDependency(d, referenceAssemblies), StringComparer.OrdinalIgnoreCase);
// }
// /// <summary>
// /// Create a Dependency
// /// </summary>
// /// <param name="library"></param>
// /// <param name="referenceAssemblies"></param>
// /// <returns></returns>
// private static Dependency CreateDependency(RuntimeLibrary library, ISet<string> referenceAssemblies)
// {
// var classification = DependencyClassification.Unknown;
// if (referenceAssemblies.Contains(library.Name))
// {
// classification = DependencyClassification.UmbracoReference;
// }
// return new Dependency(library, classification);
// }
// private DependencyClassification ComputeClassification(string dependency)
// {
// Debug.Assert(_dependencies.ContainsKey(dependency));
// var candidateEntry = _dependencies[dependency];
// if (candidateEntry.Classification != DependencyClassification.Unknown)
// {
// return candidateEntry.Classification;
// }
// else
// {
// var classification = DependencyClassification.NotCandidate;
// foreach (var candidateDependency in candidateEntry.Library.Dependencies)
// {
// var dependencyClassification = ComputeClassification(candidateDependency.Name);
// if (dependencyClassification == DependencyClassification.Candidate ||
// dependencyClassification == DependencyClassification.UmbracoReference)
// {
// classification = DependencyClassification.Candidate;
// break;
// }
// }
// candidateEntry.Classification = classification;
// return classification;
// }
// }
// public IEnumerable<RuntimeLibrary> GetCandidates()
// {
// foreach (var dependency in _dependencies)
// {
// var classification = ComputeClassification(dependency.Key);
// if (classification == DependencyClassification.Candidate ||
// //if the flag is set, also ensure to include any UmbracoReference classifications
// (_includeRefLibs && classification == DependencyClassification.UmbracoReference))
// {
// yield return dependency.Value.Library;
// }
// }
// }
// private class Dependency
// {
// public Dependency(RuntimeLibrary library, DependencyClassification classification)
// {
// Library = library;
// Classification = classification;
// }
// public RuntimeLibrary Library { get; }
// public DependencyClassification Classification { get; set; }
// public override string ToString()
// {
// return $"Library: {Library.Name}, Classification: {Classification}";
// }
// }
// private enum DependencyClassification
// {
// Unknown = 0,
// Candidate = 1,
// NotCandidate = 2,
// UmbracoReference = 3
// }
//}
}
/// <summary>
/// Resolves assemblies that reference one of the specified "targetAssemblies" either directly or transitively.
/// </summary>
public class ReferenceResolver
/// <remarks>
/// Borrowed and modified from https://github.com/dotnet/aspnetcore-tooling/blob/master/src/Razor/src/Microsoft.NET.Sdk.Razor/ReferenceResolver.cs
/// </remarks>
internal class ReferenceResolver
{
private readonly HashSet<string> _mvcAssemblies;
private readonly IReadOnlyList<AssemblyItem> _assemblyItems;
private readonly Dictionary<AssemblyItem, Classification> _classifications;
private readonly HashSet<string> _umbracoAssemblies;
private readonly IReadOnlyList<Assembly> _assemblyItems;
private readonly Dictionary<Assembly, Classification> _classifications;
private readonly List<Assembly> _lookup = new List<Assembly>();
public ReferenceResolver(IReadOnlyList<string> targetAssemblies, IReadOnlyList<AssemblyItem> assemblyItems)
public ReferenceResolver(IReadOnlyList<string> targetAssemblies, IReadOnlyList<Assembly> assemblyItems)
{
_mvcAssemblies = new HashSet<string>(targetAssemblies, StringComparer.Ordinal);
_umbracoAssemblies = new HashSet<string>(targetAssemblies, StringComparer.Ordinal);
_assemblyItems = assemblyItems;
_classifications = new Dictionary<AssemblyItem, Classification>();
_classifications = new Dictionary<Assembly, Classification>();
Lookup = new Dictionary<string, AssemblyItem>(StringComparer.Ordinal);
foreach (var item in assemblyItems)
{
Lookup[item.AssemblyName] = item;
_lookup.Add(item);
}
}
protected Dictionary<string, AssemblyItem> Lookup { get; }
public IReadOnlyList<string> ResolveAssemblies()
public IEnumerable<Assembly> ResolveAssemblies()
{
var applicationParts = new List<string>();
var applicationParts = new List<Assembly>();
foreach (var item in _assemblyItems)
{
var classification = Resolve(item);
if (classification == Classification.ReferencesMvc)
if (classification == Classification.ReferencesUmbraco || classification == Classification.IsUmbraco)
{
applicationParts.Add(item.AssemblyName);
applicationParts.Add(item);
}
}
return applicationParts;
}
private Classification Resolve(AssemblyItem assemblyItem)
private Classification Resolve(Assembly assemblyItem)
{
if (_classifications.TryGetValue(assemblyItem, out var classification))
{
@@ -789,37 +629,21 @@ namespace Umbraco.Core.Composing
classification = Classification.Unknown;
_classifications[assemblyItem] = classification;
if (assemblyItem.Path == null)
if (_umbracoAssemblies.Contains(assemblyItem.GetName().Name))
{
// We encountered a dependency that isn't part of this assembly's dependency set. We'll see if it happens to be an MVC assembly
// since that's the only useful determination we can make given the assembly name.
classification = _mvcAssemblies.Contains(assemblyItem.AssemblyName) ?
Classification.IsMvc :
Classification.DoesNotReferenceMvc;
}
else if (assemblyItem.IsFrameworkReference)
{
// We do not allow transitive references to MVC via a framework reference to count.
// e.g. depending on Microsoft.AspNetCore.SomeThingNewThatDependsOnMvc would not result in an assembly being treated as
// referencing MVC.
classification = _mvcAssemblies.Contains(assemblyItem.AssemblyName) ?
Classification.IsMvc :
Classification.DoesNotReferenceMvc;
}
else if (_mvcAssemblies.Contains(assemblyItem.AssemblyName))
{
classification = Classification.IsMvc;
classification = Classification.IsUmbraco;
}
else
{
classification = Classification.DoesNotReferenceMvc;
foreach (var reference in GetReferences(assemblyItem.Path))
classification = Classification.DoesNotReferenceUmbraco;
foreach (var reference in GetReferences(assemblyItem))
{
// recurse
var referenceClassification = Resolve(reference);
if (referenceClassification == Classification.IsMvc || referenceClassification == Classification.ReferencesMvc)
if (referenceClassification == Classification.IsUmbraco || referenceClassification == Classification.ReferencesUmbraco)
{
classification = Classification.ReferencesMvc;
classification = Classification.ReferencesUmbraco;
break;
}
}
@@ -830,139 +654,82 @@ namespace Umbraco.Core.Composing
return classification;
}
protected virtual IReadOnlyList<AssemblyItem> GetReferences(string file)
{
try
protected virtual IEnumerable<Assembly> GetReferences(Assembly assembly)
{
foreach (var referenceName in assembly.GetReferencedAssemblies())
{
if (!File.Exists(file))
// don't include if this is excluded
if (TypeFinder.KnownAssemblyExclusionFilter.Any(f => referenceName.FullName.StartsWith(f)))
continue;
var reference = Assembly.Load(referenceName);
if (!_lookup.Contains(reference))
{
throw new ReferenceAssemblyNotFoundException(file);
}
// A dependency references an item that isn't referenced by this project.
// We'll construct an item for so that we can calculate the classification based on it's name.
using var peReader = new PEReader(File.OpenRead(file));
if (!peReader.HasMetadata)
{
return Array.Empty<AssemblyItem>(); // not a managed assembly
}
_lookup.Add(reference);
var metadataReader = peReader.GetMetadataReader();
var references = new List<AssemblyItem>();
foreach (var handle in metadataReader.AssemblyReferences)
{
var reference = metadataReader.GetAssemblyReference(handle);
var referenceName = metadataReader.GetString(reference.Name);
if (!Lookup.TryGetValue(referenceName, out var assemblyItem))
{
// A dependency references an item that isn't referenced by this project.
// We'll construct an item for so that we can calculate the classification based on it's name.
assemblyItem = new AssemblyItem
{
AssemblyName = referenceName,
};
Lookup[referenceName] = assemblyItem;
}
references.Add(assemblyItem);
}
return references;
yield return reference;
}
}
catch (BadImageFormatException)
{
// not a PE file, or invalid metadata
}
return Array.Empty<AssemblyItem>(); // not a managed assembly
}
protected enum Classification
{
Unknown,
DoesNotReferenceMvc,
ReferencesMvc,
IsMvc,
DoesNotReferenceUmbraco,
ReferencesUmbraco,
IsUmbraco,
}
}
public class AssemblyItem
/// <summary>
/// Finds Assemblies from the entry point assemblies, it's dependencies and it's transitive dependencies that reference that targetAssemblyNames
/// </summary>
/// <remarkes>
/// borrowed and modified from here https://github.com/dotnet/aspnetcore-tooling/blob/master/src/Razor/src/Microsoft.NET.Sdk.Razor/FindAssembliesWithReferencesTo.cs
/// </remarkes>
internal class FindAssembliesWithReferencesTo
{
public string Path { get; set; }
private readonly Assembly[] _referenceAssemblies;
private readonly string[] _targetAssemblies;
private readonly bool _includeTargets;
public bool IsFrameworkReference { get; set; }
public string AssemblyName { get; set; }
}
internal class ReferenceAssemblyNotFoundException : Exception
{
public ReferenceAssemblyNotFoundException(string fileName)
{
FileName = fileName;
}
public string FileName { get; }
}
// borrowed from here https://github.com/dotnet/aspnetcore-tooling/blob/master/src/Razor/src/Microsoft.NET.Sdk.Razor/FindAssembliesWithReferencesTo.cs
public class FindAssembliesWithReferencesTo
{
private readonly string[] _referenceAssemblies;
private readonly string[] _targetAssemblyNames;
public FindAssembliesWithReferencesTo(string[] referenceAssemblies, string[] targetAssemblyNames)
/// <summary>
/// Constructor
/// </summary>
/// <param name="referenceAssemblies">Entry point assemblies</param>
/// <param name="targetAssemblyNames">Used to check if the entry point or it's transitive assemblies reference these assembly names</param>
/// <param name="includeTargets">If true will also use the target assembly names as entry point assemblies</param>
public FindAssembliesWithReferencesTo(Assembly[] referenceAssemblies, string[] targetAssemblyNames, bool includeTargets)
{
_referenceAssemblies = referenceAssemblies;
_targetAssemblyNames = targetAssemblyNames;
_targetAssemblies = targetAssemblyNames;
_includeTargets = includeTargets;
}
public IEnumerable<string> Find()
public IEnumerable<Assembly> Find()
{
var referenceItems = new List<AssemblyItem>();
foreach (var item in _referenceAssemblies)
var referenceItems = new List<Assembly>();
foreach (var assembly in _referenceAssemblies)
{
//var assemblyName = new AssemblyName(item).Name;
var assembly = Assembly.Load(item);
referenceItems.Add(new AssemblyItem
referenceItems.Add(assembly);
}
if (_includeTargets)
{
foreach(var target in _targetAssemblies)
{
AssemblyName = assembly.GetName().Name, //assemblyName,
IsFrameworkReference = false,
Path = GetAssemblyLocation(assembly)
});
referenceItems.Add(Assembly.Load(target));
}
}
var provider = new ReferenceResolver(_targetAssemblyNames, referenceItems);
try
{
var assemblyNames = provider.ResolveAssemblies();
return assemblyNames.ToArray();
}
catch (ReferenceAssemblyNotFoundException ex)
{
throw;
//// Print a warning and return. We cannot produce a correct document at this point.
//var warning = "Reference assembly {0} could not be found. This is typically caused by build errors in referenced projects.";
//Log.LogWarning(null, "RAZORSDK1007", null, null, 0, 0, 0, 0, warning, ex.FileName);
//return true;
}
catch (Exception ex)
{
throw;
//Log.LogErrorFromException(ex);
}
var provider = new ReferenceResolver(_targetAssemblies, referenceItems);
var assemblyNames = provider.ResolveAssemblies();
return assemblyNames.ToList();
}
internal static string GetAssemblyLocation(Assembly assembly)
{
if (Uri.TryCreate(assembly.CodeBase, UriKind.Absolute, out var result) &&
result.IsFile && string.IsNullOrWhiteSpace(result.Fragment))
{
return result.LocalPath;
}
return assembly.Location;
}
}
}
@@ -370,7 +370,7 @@ namespace Umbraco.Core.Runtime
/// </summary>
/// <returns></returns>
protected virtual ITypeFinder GetTypeFinder()
=> new TypeFinder(Logger, new DefaultUmbracoAssemblyProvider(Assembly.GetEntryAssembly()?.GetName()?.Name));
=> new TypeFinder(Logger, new DefaultUmbracoAssemblyProvider(Assembly.GetEntryAssembly()));
/// <summary>
@@ -28,7 +28,7 @@ namespace Umbraco.Tests.Cache
public override void Setup()
{
base.Setup();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
_memberCache = new ObjectCacheAppCache(typeFinder);
_provider = new DeepCloneAppCache(_memberCache);
@@ -16,7 +16,7 @@ namespace Umbraco.Tests.Cache
public override void Setup()
{
base.Setup();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
_ctx = new FakeHttpContextFactory("http://localhost/test");
_appCache = new HttpRequestAppCache(() => _ctx.HttpContext.Items, typeFinder);
}
@@ -21,7 +21,7 @@ namespace Umbraco.Tests.Cache
public override void Setup()
{
base.Setup();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
_provider = new ObjectCacheAppCache(typeFinder);
}
@@ -32,7 +32,7 @@ namespace Umbraco.Tests.Components
var mock = new Mock<IFactory>();
var logger = Mock.Of<ILogger>();
var typeFinder = new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(typeof(ComponentTests).Assembly.GetName().Name));
var typeFinder = new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(typeof(ComponentTests).Assembly));
var f = new UmbracoDatabaseFactory(logger, new Lazy<IMapperCollection>(() => new MapperCollection(Enumerable.Empty<BaseMapper>())), TestHelper.GetConfigs(), TestHelper.DbProviderFactoryCreator);
var fs = new FileSystems(mock.Object, logger, TestHelper.IOHelper, SettingsForTests.GenerateMockGlobalSettings());
var coreDebug = Mock.Of<ICoreDebug>();
@@ -371,7 +371,7 @@ namespace Umbraco.Tests.Components
public void AllComposers()
{
var ioHelper = TestHelper.IOHelper;
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var typeLoader = new TypeLoader(ioHelper, typeFinder, AppCaches.Disabled.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of<IProfilingLogger>());
var register = MockRegister();
@@ -22,7 +22,7 @@ namespace Umbraco.Tests.Composing
{
ProfilingLogger = new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>());
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var ioHelper = TestHelper.IOHelper;
TypeLoader = new TypeLoader(ioHelper, typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), ProfilingLogger, false, AssembliesToScan);
}
@@ -38,7 +38,7 @@ namespace Umbraco.Tests.Composing
.Returns(() => factoryFactory?.Invoke(mockedFactory));
var logger = new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>());
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var ioHelper = TestHelper.IOHelper;
var typeLoader = new TypeLoader(ioHelper, typeFinder, Mock.Of<IAppPolicyCache>(), new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), logger);
var composition = new Composition(mockedRegister, typeLoader, logger, Mock.Of<IRuntimeState>(), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache);
@@ -57,7 +57,7 @@ namespace Umbraco.Tests.Composing
[Test]
public void Find_Class_Of_Type_With_Attribute()
{
var typeFinder = new TypeFinder(GetTestProfilingLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(GetTestProfilingLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var typesFound = typeFinder.FindClassesOfTypeWithAttribute<TestEditor, MyTestAttribute>(_assemblies);
Assert.AreEqual(2, typesFound.Count());
}
@@ -65,7 +65,7 @@ namespace Umbraco.Tests.Composing
[Test]
public void Find_Classes_With_Attribute()
{
var typeFinder = new TypeFinder(GetTestProfilingLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(GetTestProfilingLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var typesFound = typeFinder.FindClassesWithAttribute<TreeAttribute>(_assemblies);
Assert.AreEqual(0, typesFound.Count()); // 0 classes in _assemblies are marked with [Tree]
@@ -27,7 +27,7 @@ namespace Umbraco.Tests.Composing
public void Initialize()
{
// this ensures it's reset
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
_typeLoader = new TypeLoader(TestHelper.IOHelper, typeFinder, NoAppCache.Instance,
new DirectoryInfo(TestHelper.IOHelper.MapPath("~/App_Data/TEMP")),
new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>()), false,
+1 -1
View File
@@ -17,7 +17,7 @@ namespace Umbraco.Tests.Macros
[SetUp]
public void Setup()
{
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
//we DO want cache enabled for these tests
var cacheHelper = new AppCaches(
new ObjectCacheAppCache(typeFinder),
+1 -1
View File
@@ -269,7 +269,7 @@ namespace Umbraco.Tests.Models
content.UpdateDate = DateTime.Now;
content.WriterId = 23;
var runtimeCache = new ObjectCacheAppCache(new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name)));
var runtimeCache = new ObjectCacheAppCache(new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly)));
runtimeCache.Insert(content.Id.ToString(CultureInfo.InvariantCulture), () => content);
var proflog = GetTestProfilingLogger();
@@ -127,7 +127,7 @@ namespace Umbraco.Tests.Published
var setType1 = publishedContentTypeFactory.CreateContentType(1000, "set1", CreatePropertyTypes);
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var elementsCache = new FastDictionaryAppCache(typeFinder);
var snapshotCache = new FastDictionaryAppCache(typeFinder);
@@ -143,7 +143,7 @@ namespace Umbraco.Tests.PublishedContent
// create a data source for NuCache
_source = new TestDataSource(kits);
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var settings = Mock.Of<INuCacheSettings>();
@@ -184,7 +184,7 @@ namespace Umbraco.Tests.PublishedContent
// create a variation accessor
_variationAccesor = new TestVariationContextAccessor();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var settings = Mock.Of<INuCacheSettings>();
// at last, create the complete NuCache snapshot service!
@@ -63,7 +63,7 @@ namespace Umbraco.Tests.Runtimes
var profilingLogger = new ProfilingLogger(logger, profiler);
var appCaches = AppCaches.Disabled;
var databaseFactory = new UmbracoDatabaseFactory(logger, new Lazy<IMapperCollection>(() => factory.GetInstance<IMapperCollection>()), TestHelper.GetConfigs(), TestHelper.DbProviderFactoryCreator);
var typeFinder = new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var ioHelper = TestHelper.IOHelper;
var hostingEnvironment = Mock.Of<IHostingEnvironment>();
var typeLoader = new TypeLoader(ioHelper, typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), profilingLogger);
@@ -256,7 +256,7 @@ namespace Umbraco.Tests.Runtimes
var profilingLogger = new ProfilingLogger(logger, profiler);
var appCaches = AppCaches.Disabled;
var databaseFactory = Mock.Of<IUmbracoDatabaseFactory>();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var ioHelper = TestHelper.IOHelper;
var typeLoader = new TypeLoader(ioHelper, typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), profilingLogger);
var runtimeState = Mock.Of<IRuntimeState>();
@@ -85,7 +85,7 @@ namespace Umbraco.Tests.Scoping
var memberRepository = Mock.Of<IMemberRepository>();
var hostingEnvironment = TestHelper.GetHostingEnvironment();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var settings = Mock.Of<INuCacheSettings>();
return new PublishedSnapshotService(
@@ -58,7 +58,7 @@ namespace Umbraco.Tests.Services
var memberRepository = Mock.Of<IMemberRepository>();
var hostingEnvironment = Mock.Of<IHostingEnvironment>();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var settings = Mock.Of<INuCacheSettings>();
return new PublishedSnapshotService(
@@ -38,7 +38,7 @@ namespace Umbraco.Tests.TestHelpers
var ioHelper = TestHelper.IOHelper;
var logger = new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>());
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var typeLoader = new TypeLoader(ioHelper, typeFinder, NoAppCache.Instance,
new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")),
logger,
@@ -40,7 +40,7 @@ namespace Umbraco.Tests.TestHelpers.Stubs
{
if (_factory != null) return _factory(requestContext);
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var types = typeFinder.FindClassesOfType<ControllerBase>(new[] { Assembly.GetExecutingAssembly() });
var controllerTypes = types.Where(x => x.Name.Equals(controllerName + "Controller", StringComparison.InvariantCultureIgnoreCase));
+1 -1
View File
@@ -247,7 +247,7 @@ namespace Umbraco.Tests.TestHelpers
databaseFactory = new UmbracoDatabaseFactory(Constants.System.UmbracoConnectionName, logger, new Lazy<IMapperCollection>(() => mappers), TestHelper.GetConfigs(), TestHelper.DbProviderFactoryCreator);
}
typeFinder = typeFinder ?? new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
typeFinder = typeFinder ?? new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly));
fileSystems = fileSystems ?? new FileSystems(Current.Factory, logger, TestHelper.IOHelper, SettingsForTests.GenerateMockGlobalSettings());
var coreDebug = Current.Configs.CoreDebug();
var mediaFileSystem = Mock.Of<IMediaFileSystem>();
+1 -1
View File
@@ -171,7 +171,7 @@ namespace Umbraco.Tests.Testing
var proflogger = new ProfilingLogger(logger, profiler);
IOHelper = TestHelper.IOHelper;
TypeFinder = new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
TypeFinder = new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var appCaches = GetAppCaches();
var globalSettings = SettingsForTests.GetDefaultGlobalSettings();
var settings = SettingsForTests.GetDefaultUmbracoSettings();
+1 -1
View File
@@ -28,7 +28,7 @@ namespace Umbraco.Tests.Web
{
// FIXME: bad in a unit test - but Udi has a static ctor that wants it?!
var container = new Mock<IFactory>();
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly.GetName().Name));
var typeFinder = new TypeFinder(Mock.Of<ILogger>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly));
var ioHelper = TestHelper.IOHelper;
container
.Setup(x => x.GetInstance(typeof(TypeLoader)))