From d60af14ac6f50deaf317b12bb2469e38ce16702e Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Fri, 18 May 2012 12:21:14 -0700 Subject: [PATCH] Using StackTrace to discover content files in SpecFlow tests --HG-- branch : 1.4.x --- src/Orchard.Specs/Hosting/WebHost.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Specs/Hosting/WebHost.cs b/src/Orchard.Specs/Hosting/WebHost.cs index d259126e1..2193c7560 100644 --- a/src/Orchard.Specs/Hosting/WebHost.cs +++ b/src/Orchard.Specs/Hosting/WebHost.cs @@ -215,7 +215,26 @@ namespace Orchard.Specs.Hosting { } public void CopyFile(string source, string destination) { - var origin = Path.Get(typeof(IOrchardServices).Assembly.Location).Parent.Parent.Combine(source); + + StackTrace st = new StackTrace(true); + Path origin = null; + foreach(var sf in st.GetFrames()) { + var sourceFile = sf.GetFileName(); + if(String.IsNullOrEmpty(sourceFile)) { + continue; + } + + var testOrigin = Path.Get(sourceFile).Parent.Combine(source); + if(testOrigin.Exists) { + origin = testOrigin; + break; + } + } + + if(origin == null) { + throw new FileNotFoundException("File not found: " + source); + } + var target = _tempSite.Combine(destination); Directory.CreateDirectory(target.DirectoryName);