public async Task RemoteProcedureTestWithDummyHost() { IProcessTransformationRunFactory factory = await RemotingServices.ConnectAsync <IProcessTransformationRunFactory>(new Uri($"ipc://{TransformationRunFactory.TransformationRunFactoryService}/{TransformationRunFactory.TransformationRunFactoryMethod}")); IProcessTextTemplatingEngine engine = new TemplatingEngine(); if (factory?.IsRunFactoryAlive() ?? default) { IProcessTransformationRunner runner = engine.PrepareTransformationRunner(Samples.template, new DummyHost(), factory); runner.Should().NotBeNull(); ITextTemplatingCallback result = factory.StartTransformation(runner.RunnerId); if (result.Errors.HasErrors) { foreach (TemplateError error in result.Errors) { Console.Out.WriteLine(error.Message); } } result.TemplateOutput.Should().Be(Samples.outcome); } }
public IProcessTransformationRunner PrepareTransformationRunner(string content, ITextTemplatingEngineHost host, IProcessTransformationRunFactory runFactory, bool debugging = false) { if (content == null) { throw new ArgumentNullException(nameof(content)); } if (host == null) { throw new ArgumentNullException(nameof(host)); } if (runFactory == null) { throw new ArgumentNullException(nameof(runFactory)); } if (host is ITextTemplatingSessionHost sessionHost) { if (sessionHost.Session == null) { sessionHost.Session = sessionHost.CreateSession(); } } IProcessTransformationRunner runner = null; ParsedTemplate pt = ParsedTemplate.FromText(content, host); TemplateSettings settings = GetSettings(host, pt); settings.Debug = debugging || settings.CachedTemplates; EnsureParameterValuesExist(settings, host, pt); try { if (pt.Errors.HasErrors) { return(null); } runner = CompileAndPrepareRunner(pt, content, host, runFactory, settings); } catch (Exception ex) { if (IsCriticalException(ex)) { throw; } pt.LogError(string.Format(CultureInfo.CurrentCulture, VsTemplatingErrorResources.ExceptionProcessingTemplate, ex), new Location(host.TemplateFile, -1, -1)); } finally { host.LogErrors(pt.Errors); } return(runner); }