diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/commands/log')
3 files changed, 159 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/commands/log/basic/Makefile b/lldb/packages/Python/lldbsuite/test/commands/log/basic/Makefile new file mode 100644 index 00000000000..d4bc9c68904 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/log/basic/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../make + +CXX_SOURCES := main.cpp + +include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/log/basic/TestLogging.py b/lldb/packages/Python/lldbsuite/test/commands/log/basic/TestLogging.py new file mode 100644 index 00000000000..526288f3deb --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/log/basic/TestLogging.py @@ -0,0 +1,93 @@ +""" +Test lldb logging. This test just makes sure logging doesn't crash, and produces some output. +""" + +from __future__ import print_function + + +import os +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class LogTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + NO_DEBUG_INFO_TESTCASE = True + + def setUp(self): + super(LogTestCase, self).setUp() + self.log_file = self.getBuildArtifact("log-file.txt") + + def test(self): + self.build() + exe = self.getBuildArtifact("a.out") + self.expect("file " + exe, + patterns=["Current executable set to .*a.out"]) + + log_file = os.path.join(self.getBuildDir(), "lldb-commands-log.txt") + + if (os.path.exists(log_file)): + os.remove(log_file) + + # By default, Debugger::EnableLog() will set log options to + # PREPEND_THREAD_NAME + OPTION_THREADSAFE. We don't want the + # threadnames here, so we enable just threadsafe (-t). + self.runCmd("log enable -t -f '%s' lldb commands" % (log_file)) + + self.runCmd("command alias bp breakpoint") + + self.runCmd("bp set -n main") + + self.runCmd("bp l") + + self.runCmd("log disable lldb") + + self.assertTrue(os.path.isfile(log_file)) + + f = open(log_file) + log_lines = f.readlines() + f.close() + os.remove(log_file) + + self.assertGreater( + len(log_lines), + 0, + "Something was written to the log file.") + + # Check that lldb truncates its log files + def test_log_truncate(self): + # put something in our log file + with open(self.log_file, "w") as f: + for i in range(1, 1000): + f.write("bacon\n") + + self.runCmd("log enable -t -f '%s' lldb commands" % self.log_file) + self.runCmd("help log") + self.runCmd("log disable lldb") + + self.assertTrue(os.path.isfile(self.log_file)) + with open(self.log_file, "r") as f: + contents = f.read() + + # check that it got removed + self.assertEquals(contents.find("bacon"), -1) + + # Check that lldb can append to a log file + def test_log_append(self): + # put something in our log file + with open(self.log_file, "w") as f: + f.write("bacon\n") + + self.runCmd( "log enable -t -a -f '%s' lldb commands" % self.log_file) + self.runCmd("help log") + self.runCmd("log disable lldb") + + self.assertTrue(os.path.isfile(self.log_file)) + with open(self.log_file, "r") as f: + contents = f.read() + + # check that it is still there + self.assertEquals(contents.find("bacon"), 0) diff --git a/lldb/packages/Python/lldbsuite/test/commands/log/basic/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/log/basic/main.cpp new file mode 100644 index 00000000000..f5f1687695b --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/log/basic/main.cpp @@ -0,0 +1,61 @@ +//===-- main.cpp ------------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include <cstdlib> +#include <string> +#include <fstream> +#include <iostream> + +int +product (int x, int y) +{ + int result = x * y; + return result; +} + +int +sum (int a, int b) +{ + int result = a + b; + return result; +} + +int +strange_max (int m, int n) +{ + if (m > n) + return m; + else if (n > m) + return n; + else + return 0; +} + +int +foo (int i, int j) +{ + if (strange_max (i, j) == i) + return product (i, j); + else if (strange_max (i, j) == j) + return sum (i, j); + else + return product (sum (i, i), sum (j, j)); +} + +int +main(int argc, char const *argv[]) +{ + + int array[3]; + + array[0] = foo (1238, 78392); + array[1] = foo (379265, 23674); + array[2] = foo (872934, 234); + + return 0; +} |