From a137d84732ad51d4040e96f101b511a1511bb76b Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Sat, 17 Apr 2010 19:22:26 -0700 Subject: [PATCH] Working towards re-enabling setup context --HG-- branch : dev --- src/Orchard.Specs/Bindings/WebAppHosting.cs | 17 +++++ .../Hosting/HostingTraceListener.cs | 24 +++++++ .../Orchard.Web/Config/Diagnostics.config | 13 ++++ .../Hosting/Orchard.Web/Web.config | 2 +- src/Orchard.Specs/Hosting/WebHost.cs | 1 + src/Orchard.Specs/Orchard.Specs.csproj | 4 ++ .../DefaultShellContextFactoryTests.cs | 29 ++++++-- .../Modules/Orchard.Setup/Module.txt | 5 +- .../Environment/DefaultCompositionStrategy.cs | 13 ++-- src/Orchard/Environment/DefaultOrchardHost.cs | 43 +++++++---- src/Orchard/Environment/HostContext.cs | 9 --- src/Orchard/Environment/OrchardStarter.cs | 69 +++++++++++------- .../DefaultShellContextFactory.cs | 72 +++++++++++++++---- .../Models/ShellTopologyDescriptor.cs | 6 ++ src/Orchard/Orchard.Framework.csproj | 1 - 15 files changed, 235 insertions(+), 73 deletions(-) create mode 100644 src/Orchard.Specs/Hosting/HostingTraceListener.cs create mode 100644 src/Orchard.Specs/Hosting/Orchard.Web/Config/Diagnostics.config delete mode 100644 src/Orchard/Environment/HostContext.cs diff --git a/src/Orchard.Specs/Bindings/WebAppHosting.cs b/src/Orchard.Specs/Bindings/WebAppHosting.cs index 4e443c058..c13091bf8 100644 --- a/src/Orchard.Specs/Bindings/WebAppHosting.cs +++ b/src/Orchard.Specs/Bindings/WebAppHosting.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; @@ -15,13 +16,29 @@ namespace Orchard.Specs.Bindings { public class WebAppHosting { private WebHost _webHost; private RequestDetails _details; + private MessageSink _messages; [Given(@"I have a clean site")] public void GivenIHaveACleanSite() { _webHost = new WebHost(); _webHost.Initialize("Orchard.Web", "/"); + + var sink = new MessageSink(); + _webHost.Execute(() => { + HostingTraceListener.SetHook(msg => sink.Receive(msg)); + }); + _messages = sink; } + public class MessageSink : MarshalByRefObject { + readonly IList _messages = new List(); + + public void Receive(string message) { + _messages.Add(message); + } + } + + [Given(@"I have module ""(.*)""")] public void GivenIHaveModule(string moduleName) { _webHost.CopyExtension("Modules", moduleName); diff --git a/src/Orchard.Specs/Hosting/HostingTraceListener.cs b/src/Orchard.Specs/Hosting/HostingTraceListener.cs new file mode 100644 index 000000000..f7f925d09 --- /dev/null +++ b/src/Orchard.Specs/Hosting/HostingTraceListener.cs @@ -0,0 +1,24 @@ +using System; +using System.Diagnostics; + +namespace Orchard.Specs.Hosting { + public class HostingTraceListener : TraceListener { + private static Action _hook = ignored => { }; + private string _message; + + public static void SetHook(Action hook) { + _hook = hook; + } + + public override void Write(string message) { + var cumulative = _message + message; + _message = cumulative; + } + + public override void WriteLine(string message) { + var cumulative = _message + message; + _message = null; + _hook(cumulative); + } + } +} diff --git a/src/Orchard.Specs/Hosting/Orchard.Web/Config/Diagnostics.config b/src/Orchard.Specs/Hosting/Orchard.Web/Config/Diagnostics.config new file mode 100644 index 000000000..6e6223cdc --- /dev/null +++ b/src/Orchard.Specs/Hosting/Orchard.Web/Config/Diagnostics.config @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/Orchard.Specs/Hosting/Orchard.Web/Web.config b/src/Orchard.Specs/Hosting/Orchard.Web/Web.config index b9ed3c6de..91245e254 100644 --- a/src/Orchard.Specs/Hosting/Orchard.Web/Web.config +++ b/src/Orchard.Specs/Hosting/Orchard.Web/Web.config @@ -25,7 +25,7 @@ - +