public ReactRunner(string file, bool enableFileWatcher, bool enableCompilation, bool disableGlobalMembers, JsonSerializerSettings serializationSettings) { //setup assembly resolver so it can find the v8 dlls AssemblyResolver.Initialize(); JsFile = file; EnableFileWatcher = enableFileWatcher; EnableCompilation = enableCompilation; DisableGlobalMembers = disableGlobalMembers; SerializationSettings = serializationSettings; //Initialize the v8 runtime Runtime = new V8Runtime(); //Read the scripts text content ScriptRaw = File.ReadAllText(JsFile); if (EnableCompilation) { //If compilation is enabled, we compile the scripts Compiled = Runtime.Compile(ScriptRaw); CompiledShimms = Runtime.Compile(JavascriptShimms.ConsoleShim); } if (EnableFileWatcher) { fileWatcher = new FileSystemWatcher(); fileWatcher.Path = Path.GetDirectoryName(JsFile); fileWatcher.Filter = Path.GetFileName(JsFile); fileWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Attributes | NotifyFilters.Size; fileWatcher.Changed += fileWatcher_Changed; fileWatcher.EnableRaisingEvents = true; } }
public void V8ScriptEngine_General_Precompiled_Dual() { engine.Dispose(); using (var runtime = new V8Runtime()) { using (var script = runtime.Compile(generalScript)) { engine = runtime.CreateScriptEngine(); using (var console = new StringWriter()) { var clr = new HostTypeCollection(type => type != typeof(Console), "mscorlib", "System", "System.Core"); clr.GetNamespaceNode("System").SetPropertyNoCheck("Console", console); engine.AddHostObject("host", new ExtendedHostFunctions()); engine.AddHostObject("clr", clr); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); console.GetStringBuilder().Clear(); Assert.AreEqual(string.Empty, console.ToString()); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); } engine.Dispose(); engine = runtime.CreateScriptEngine(); using (var console = new StringWriter()) { var clr = new HostTypeCollection(type => type != typeof(Console), "mscorlib", "System", "System.Core"); clr.GetNamespaceNode("System").SetPropertyNoCheck("Console", console); engine.AddHostObject("host", new ExtendedHostFunctions()); engine.AddHostObject("clr", clr); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); console.GetStringBuilder().Clear(); Assert.AreEqual(string.Empty, console.ToString()); engine.Evaluate(script); Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n")); } } } }