JsErrorCode ChakraHost::RunScript(const wchar_t* szFileName, const wchar_t* szSourceUri, JsValueRef* result) { wchar_t* contents = nullptr; IfFailRet(LoadFileContents(szFileName, &contents)); JsErrorCode status = JsRunScript(contents, currentSourceContext++, szSourceUri, result); free(contents); return status; }
CJsValueRef JsRun(LPCWSTR script) { JsValueRef result; JsSetCurrentContext(jscontext); JsErrorCode errorCode = JsRunScript(script, currentSourceContext++, L"", &result); if ( JsNoError != errorCode ) { throw errorCode; } return CJsValueRef(result); }
void BasicTest(JsRuntimeAttributes attributes, LPCSTR fileName) { LPCWSTR script = nullptr; REQUIRE(FileLoadHelpers::LoadScriptFromFile(fileName, script) == S_OK); REQUIRE(script != nullptr); // Create the runtime JsRuntimeHandle runtime = JS_INVALID_RUNTIME_HANDLE; REQUIRE(JsCreateRuntime(attributes, nullptr, &runtime) == JsNoError); // Set memory limit REQUIRE(JsSetRuntimeMemoryLimit(runtime, MemoryLimit) == JsNoError); size_t memoryLimit; size_t memoryUsage; REQUIRE(JsGetRuntimeMemoryLimit(runtime, &memoryLimit) == JsNoError); CHECK(memoryLimit == MemoryLimit); REQUIRE(JsGetRuntimeMemoryUsage(runtime, &memoryUsage) == JsNoError); CHECK(memoryUsage < MemoryLimit); // Create and initialize the script context JsContextRef context = JS_INVALID_RUNTIME_HANDLE; REQUIRE(JsCreateContext(runtime, &context) == JsNoError); REQUIRE(JsSetCurrentContext(context) == JsNoError); // Invoke the script REQUIRE(JsRunScript(script, JS_SOURCE_CONTEXT_NONE, _u(""), nullptr) == JsErrorScriptException); ValidateOOMException(); REQUIRE(JsGetRuntimeMemoryLimit(runtime, &memoryLimit) == JsNoError); CHECK(memoryLimit == MemoryLimit); REQUIRE(JsGetRuntimeMemoryUsage(runtime, &memoryUsage) == JsNoError); CHECK(memoryUsage <= MemoryLimit); // Destroy the runtime REQUIRE(JsSetCurrentContext(JS_INVALID_REFERENCE) == JsNoError); REQUIRE(JsCollectGarbage(runtime) == JsNoError); REQUIRE(JsDisposeRuntime(runtime) == JsNoError); }