xref: /llvm-project/lldb/unittests/ScriptInterpreter/Lua/ScriptInterpreterTests.cpp (revision 16a6c10bd485979ba2edf4b487d633230a9df01f)
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