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...");
        }
示例#2
0
        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();
            }
        }
示例#7
0
        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
        }
示例#8
0
        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
        }
示例#9
0
        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...");
        }
示例#10
0
        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
        }