1 /**
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "helpers_runtime.h"
17 #include "logger.h"
18 #include "ecmascript/napi/include/jsnapi.h"
19
20 #include <iostream>
21 #include <sstream>
22
23 namespace libabckit::test::helpers {
24
ExecuteDynamicAbc(const std::string & abcPath,const std::string & entry)25 std::string ExecuteDynamicAbc(const std::string &abcPath, const std::string &entry)
26 {
27 LIBABCKIT_LOG(DEBUG) << "ExecuteDynamicAbc: " << abcPath << ' ' << entry << '\n';
28
29 panda::RuntimeOption option;
30 option.SetLogLevel(panda::RuntimeOption::LOG_LEVEL::ERROR);
31 const size_t pause = 1000U;
32 option.SetLongPauseTime(pause);
33 panda::ecmascript::EcmaVM *vm = panda::JSNApi::CreateJSVM(option);
34
35 std::stringstream ss;
36 {
37 CoutRedirect coutRedirect(ss.rdbuf());
38 panda::JSNApi::Execute(vm, abcPath, entry, true);
39 }
40 panda::JSNApi::DestroyJSVM(vm);
41 LIBABCKIT_LOG(DEBUG) << "Output:\n" << ss.str() << '\n';
42 return ss.str();
43 }
44
45 } // namespace libabckit::test::helpers
46