public void Scripting_DebugWithVisualStudioCode() { Assert.Inconclusive(); return; Console.WriteLine("BEWARE: scripting projects and classes used by them CANNOT be obfuscated!!!"); Console.WriteLine(); (string scriptsPath, ScriptingContext jsScriptingContext) = InitWithRealFs(); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext( JsScriptRunnerType.ClearScriptDebugMode, jsScriptingContext, Scripting_TestSettings.ScriptingContextName); // notes from https://github.com/microsoft/ClearScript/issues/159 + https://github.com/microsoft/ClearScript/issues/24 // 0) setup Visual Studio Code(see "VII. Debugging with ClearScript and V8" https://microsoft.github.io/ClearScript/Details/Build.html ) // 1) start the V8 engine with V8ScriptEngineFlags.EnableDebugging + V8ScriptEngineFlags.AwaitDebuggerAndPauseOnStart option. // it's already done by JsScriptRunner with 'type' parameter set to JsScriptRunnerType.ClearScriptDebugMode // 2) run the code from Visual Studio (in debug or not-debug mode, the code will always wait for Visual Studio Code) // 3) start VSCode Debug (menu | Debug | Start Debugging) // At this point VSCode connects and stops at "debugger;" command. All scripts are loaded and accessible. jsScriptRunner.Run("debugger;"); // PUT A STOP HERE AND START VSCODE NOW! jsScriptRunner.Run("var exports = {};"); // used for exports of 'main.js' jsScriptRunner.RunScriptFile(System.IO.Path.Combine(scriptsPath, "./lib/myrequire.js")); // execute myrequire+fs.js script from real FS jsScriptRunner.RunScriptFile(System.IO.Path.Combine(scriptsPath, "main.js")); // execute main.js script from real FS //jsScriptRunner.Run(JsScriptingContext.ReadFile("./main.js")); // execute main.js script from virtual FS jsScriptRunner.Run("debugger;"); // execute main.js script from virtual FS Console.WriteLine("end of debug..."); }
public ObjectCloning(JsScriptRunner runner) { if (runner is null) { throw new ArgumentNullException(nameof(runner)); } Runner = runner; Runner.Run(new Dictionary <string, string>(Settings.MyRequireEs5.GetScript())["myrequire"]); // execute myrequire }
public void ClearScript_ObjectCloning_with_Stringify() { Init(); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext(JsScriptRunnerType.ClearScript, jsScriptingContext, Settings.ScriptingContextName); var testObj = new ObjectCloning(jsScriptRunner); for (int i = 0; i < loopCycle; i++) { testObj.ObjectCloning_with_Stringify(); } }
public void Scripting_Main_Test_With_Nodejs() { (string scriptsPath, ScriptingContext jsScriptingContext) = InitWithRealFs(); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext( JsScriptRunnerType.ClearScript, jsScriptingContext, Scripting_TestSettings.ScriptingContextName); CallNodeJs("main.js", scriptsPath); // execute main.js script from real FS with node.js Assert.AreEqual("flag value", jsScriptingContext.ReadFile("zzz flagfile")); // test output of Js scripts
public void ClearScript_ObjectCloning_with_Lodash() { Init(); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext(JsScriptRunnerType.ClearScript, jsScriptingContext, Settings.ScriptingContextName); var testObj = new ObjectCloning(jsScriptRunner); testObj.DONT_WORK_WITH_JINT_ObjectCloning_with_Lodash__Init(); for (int i = 0; i < loopCycle; i++) { testObj.DONT_WORK_WITH_JINT_ObjectCloning_with_Lodash__Run(); } }
public void Jint_ObjectCloning_with_rfdc() { Init(); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext(JsScriptRunnerType.Jint, jsScriptingContext, Settings.ScriptingContextName); var testObj = new ObjectCloning(jsScriptRunner); testObj.ObjectCloning_with_rfdc__Init(); for (int i = 0; i < loopCycle; i++) { testObj.ObjectCloning_with_rfdc__Run(); } }
public void Scripting_Main_Test_With_ClearScript() { (string scriptsPath, ScriptingContext jsScriptingContext) = InitWithRealFs(); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext( JsScriptRunnerType.ClearScript, jsScriptingContext, Scripting_TestSettings.ScriptingContextName); jsScriptRunner.Run("var exports = {};"); // required by the row of 'main.js' ```Object.defineProperty(exports, "__esModule", { value: true });``` generated by TypeScript jsScriptRunner.RunScriptFile(System.IO.Path.Combine(scriptsPath, "./lib/myrequire.js")); // execute myrequire.js script from real FS jsScriptRunner.RunScriptFile(System.IO.Path.Combine(scriptsPath, "main.js")); // execute main.js script from real FS Assert.AreEqual("flag value", jsScriptingContext.ReadFile("zzz flagfile")); // test output of Js scripts }
public void Jint_Scripting_InMemoryFiles_Test() { //Assert.Inconclusive(); return; ScriptingContext jsScriptingContext = ScriptingContext.ScriptingContextWithInMemoryFs(ES5_scripts_to_zip_plus_to_encode_in_Base64.GetScripts()); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext( JsScriptRunnerType.Jint, jsScriptingContext, Scripting_TestSettings.ScriptingContextName); jsScriptRunner.Run("var exports = {};"); // required by the row of 'main.js' ```Object.defineProperty(exports, "__esModule", { value: true });``` generated by TypeScript jsScriptRunner.Run(jsScriptingContext.ReadFile("./lib/myrequire.js")); // load a custom version of 'require' jsScriptRunner.Run(jsScriptingContext.ReadFile("main.js")); // execute script from virtual FS (would have been the same executing "./main.js") Assert.AreEqual("Hello World", jsScriptingContext.ReadFile("filename")); // test output of Js scripts }
public void Scripting_TestCodeWithoutDebug() { Assert.Inconclusive(); return; Console.WriteLine("BEWARE: scripting projects and classes used by them CANNOT be obfuscated!!!"); Console.WriteLine(); (string scriptsPath, ScriptingContext jsScriptingContext) = InitWithRealFs(); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext( JsScriptRunnerType.ClearScript, jsScriptingContext, Scripting_TestSettings.ScriptingContextName); jsScriptRunner.Run("var exports = {};"); // used for exports of 'main.js' jsScriptRunner.RunScriptFile(System.IO.Path.Combine(scriptsPath, "./lib/myrequire.js")); // execute myrequire.js script from real FS jsScriptRunner.RunScriptFile(System.IO.Path.Combine(scriptsPath, "main.js")); // execute main.js script from real FS //jsScriptRunner.Run(jsScriptingContext.ReadFile("./main.js")); // execute main.js script from virtual FS Console.WriteLine("end of execution..."); }
public void ClearScript_Scripting_RealFs_Test() { //Assert.Inconclusive(); return; Result <string> scriptsPath = FileIO.SearchAFolderAboveTheCurrentDirectoryOfTheApplication(Scripting_TestSettings.ScriptsPath_Tests); // find the folder with the scripts if (scriptsPath.IsFailure) { throw new InvalidOperationException("scripts folder not found"); } ScriptingContext jsScriptingContext = ScriptingContext.ScriptingContextWithRealFs(Path.Combine(scriptsPath.Value, Scripting_TestSettings.ScriptsPath_Tests_ES6)); JsScriptRunner jsScriptRunner = JsScriptRunner.RunnerWithContext( JsScriptRunnerType.ClearScript, jsScriptingContext, Scripting_TestSettings.ScriptingContextName); jsScriptRunner.Run("var exports = {};"); // required by the row of 'main.js' ```Object.defineProperty(exports, "__esModule", { value: true });``` generated by TypeScript jsScriptRunner.Run(jsScriptingContext.ReadFile("./lib/myrequire.js")); // load a custom version of 'require' jsScriptRunner.Run(jsScriptingContext.ReadFile("main.js")); // execute script from virtual FS (would have been the same executing "./main.js") Assert.AreEqual("Hello World", jsScriptingContext.ReadFile("filename")); // test output of Js scripts }