1*28613242SJonas Devlieghere //===-- LuaTests.cpp ------------------------------------------------------===// 2*28613242SJonas Devlieghere // 3*28613242SJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*28613242SJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information. 5*28613242SJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*28613242SJonas Devlieghere // 7*28613242SJonas Devlieghere //===----------------------------------------------------------------------===// 8*28613242SJonas Devlieghere 9*28613242SJonas Devlieghere #include "Plugins/Platform/Linux/PlatformLinux.h" 10*28613242SJonas Devlieghere #include "Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.h" 11*28613242SJonas Devlieghere #include "lldb/Core/Debugger.h" 12*28613242SJonas Devlieghere #include "lldb/Host/FileSystem.h" 13*28613242SJonas Devlieghere #include "lldb/Host/HostInfo.h" 14*28613242SJonas Devlieghere #include "lldb/Interpreter/CommandReturnObject.h" 15*28613242SJonas Devlieghere #include "lldb/Target/Platform.h" 16*28613242SJonas Devlieghere #include "lldb/Utility/Reproducer.h" 17*28613242SJonas Devlieghere #include "gtest/gtest.h" 18*28613242SJonas Devlieghere 19*28613242SJonas Devlieghere using namespace lldb_private; 20*28613242SJonas Devlieghere using namespace lldb_private::repro; 21*28613242SJonas Devlieghere using namespace lldb; 22*28613242SJonas Devlieghere 23*28613242SJonas Devlieghere namespace { 24*28613242SJonas Devlieghere class ScriptInterpreterTest : public ::testing::Test { 25*28613242SJonas Devlieghere public: 26*28613242SJonas Devlieghere void SetUp() override { 27*28613242SJonas Devlieghere llvm::cantFail(Reproducer::Initialize(ReproducerMode::Off, llvm::None)); 28*28613242SJonas Devlieghere FileSystem::Initialize(); 29*28613242SJonas Devlieghere HostInfo::Initialize(); 30*28613242SJonas Devlieghere 31*28613242SJonas Devlieghere // Pretend Linux is the host platform. 32*28613242SJonas Devlieghere platform_linux::PlatformLinux::Initialize(); 33*28613242SJonas Devlieghere ArchSpec arch("powerpc64-pc-linux"); 34*28613242SJonas Devlieghere Platform::SetHostPlatform( 35*28613242SJonas Devlieghere platform_linux::PlatformLinux::CreateInstance(true, &arch)); 36*28613242SJonas Devlieghere } 37*28613242SJonas Devlieghere void TearDown() override { 38*28613242SJonas Devlieghere platform_linux::PlatformLinux::Terminate(); 39*28613242SJonas Devlieghere HostInfo::Terminate(); 40*28613242SJonas Devlieghere FileSystem::Terminate(); 41*28613242SJonas Devlieghere Reproducer::Terminate(); 42*28613242SJonas Devlieghere } 43*28613242SJonas Devlieghere }; 44*28613242SJonas Devlieghere } // namespace 45*28613242SJonas Devlieghere 46*28613242SJonas Devlieghere TEST_F(ScriptInterpreterTest, Plugin) { 47*28613242SJonas Devlieghere EXPECT_EQ(ScriptInterpreterLua::GetPluginNameStatic(), "script-lua"); 48*28613242SJonas Devlieghere EXPECT_EQ(ScriptInterpreterLua::GetPluginDescriptionStatic(), 49*28613242SJonas Devlieghere "Lua script interpreter"); 50*28613242SJonas Devlieghere } 51*28613242SJonas Devlieghere 52*28613242SJonas Devlieghere TEST_F(ScriptInterpreterTest, ExecuteOneLine) { 53*28613242SJonas Devlieghere DebuggerSP debugger_sp = Debugger::CreateInstance(); 54*28613242SJonas Devlieghere ASSERT_TRUE(debugger_sp); 55*28613242SJonas Devlieghere 56*28613242SJonas Devlieghere ScriptInterpreterLua script_interpreter(*debugger_sp); 57*28613242SJonas Devlieghere CommandReturnObject result; 58*28613242SJonas Devlieghere EXPECT_TRUE(script_interpreter.ExecuteOneLine("foo = 1", &result)); 59*28613242SJonas Devlieghere EXPECT_FALSE(script_interpreter.ExecuteOneLine("nil = foo", &result)); 60*28613242SJonas Devlieghere EXPECT_TRUE(result.GetErrorData().startswith( 61*28613242SJonas Devlieghere "error: lua failed attempting to evaluate 'nil = foo'")); 62*28613242SJonas Devlieghere } 63