128613242SJonas Devlieghere //===-- LuaTests.cpp ------------------------------------------------------===// 228613242SJonas Devlieghere // 328613242SJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 428613242SJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information. 528613242SJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 628613242SJonas Devlieghere // 728613242SJonas Devlieghere //===----------------------------------------------------------------------===// 828613242SJonas Devlieghere 928613242SJonas Devlieghere #include "Plugins/Platform/Linux/PlatformLinux.h" 1028613242SJonas Devlieghere #include "Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.h" 1128613242SJonas Devlieghere #include "lldb/Core/Debugger.h" 1228613242SJonas Devlieghere #include "lldb/Host/FileSystem.h" 1328613242SJonas Devlieghere #include "lldb/Host/HostInfo.h" 1428613242SJonas Devlieghere #include "lldb/Interpreter/CommandReturnObject.h" 1528613242SJonas Devlieghere #include "lldb/Target/Platform.h" 1628613242SJonas Devlieghere #include "gtest/gtest.h" 1728613242SJonas Devlieghere 1828613242SJonas Devlieghere using namespace lldb_private; 1928613242SJonas Devlieghere using namespace lldb_private::repro; 2028613242SJonas Devlieghere using namespace lldb; 2128613242SJonas Devlieghere 2228613242SJonas Devlieghere namespace { 2328613242SJonas Devlieghere class ScriptInterpreterTest : public ::testing::Test { 2428613242SJonas Devlieghere public: 2528613242SJonas Devlieghere void SetUp() override { 2628613242SJonas Devlieghere FileSystem::Initialize(); 2728613242SJonas Devlieghere HostInfo::Initialize(); 2828613242SJonas Devlieghere 2928613242SJonas Devlieghere // Pretend Linux is the host platform. 3028613242SJonas Devlieghere platform_linux::PlatformLinux::Initialize(); 3128613242SJonas Devlieghere ArchSpec arch("powerpc64-pc-linux"); 3228613242SJonas Devlieghere Platform::SetHostPlatform( 3328613242SJonas Devlieghere platform_linux::PlatformLinux::CreateInstance(true, &arch)); 3428613242SJonas Devlieghere } 3528613242SJonas Devlieghere void TearDown() override { 3628613242SJonas Devlieghere platform_linux::PlatformLinux::Terminate(); 3728613242SJonas Devlieghere HostInfo::Terminate(); 3828613242SJonas Devlieghere FileSystem::Terminate(); 3928613242SJonas Devlieghere } 4028613242SJonas Devlieghere }; 4128613242SJonas Devlieghere } // namespace 4228613242SJonas Devlieghere 4328613242SJonas Devlieghere TEST_F(ScriptInterpreterTest, ExecuteOneLine) { 4428613242SJonas Devlieghere DebuggerSP debugger_sp = Debugger::CreateInstance(); 4528613242SJonas Devlieghere ASSERT_TRUE(debugger_sp); 4628613242SJonas Devlieghere 4728613242SJonas Devlieghere ScriptInterpreterLua script_interpreter(*debugger_sp); 48de019b88SJonas Devlieghere CommandReturnObject result(/*colors*/ false); 4928613242SJonas Devlieghere EXPECT_TRUE(script_interpreter.ExecuteOneLine("foo = 1", &result)); 5028613242SJonas Devlieghere EXPECT_FALSE(script_interpreter.ExecuteOneLine("nil = foo", &result)); 5140ea92c8SJonas Devlieghere EXPECT_EQ(result.GetErrorString().find( 52*16a6c10bSJonas Devlieghere "error: lua failed attempting to evaluate 'nil = foo'"), 53*16a6c10bSJonas Devlieghere 0U); 5428613242SJonas Devlieghere } 55