File indexing completed on 2024-05-12 05:50:54
0001 /* This file is part of the KDE project 0002 * 0003 * SPDX-FileCopyrightText: 2014 Dominik Haumann <dhaumann@kde.org> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "btbrowsertest.h" 0009 #include "btparser.h" 0010 0011 #include <QtTestWidgets> 0012 0013 QTEST_MAIN(KateBtBrowserTest) 0014 0015 void KateBtBrowserTest::initTestCase() 0016 { 0017 } 0018 0019 void KateBtBrowserTest::cleanupTestCase() 0020 { 0021 } 0022 0023 void KateBtBrowserTest::testParser() 0024 { 0025 // make sure the different types of gdb backtraces are parsed correctly 0026 0027 // 1) #24 0xb688ff8e in QApplication::notify (this=0xbf997e8c, receiver=0x82607e8, e=0xbf997074) at kernel/qapplication.cpp:3115 0028 // 2) #39 0xb634211c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 0029 // 3) #41 0x0805e690 in ?? () 0030 // 4) #5 0xffffe410 in __kernel_vsyscall () 0031 0032 QString bt = QStringLiteral("#24 0xb688ff8e in QApplication::notify (this=0xbf997e8c, receiver=0x82607e8, e=0xbf997074) at kernel/qapplication.cpp:3115"); 0033 QList<BtInfo> info = KateBtParser::parseBacktrace(bt); 0034 0035 QVERIFY(info.size() == 1); 0036 QCOMPARE(info[0].type, BtInfo::Source); 0037 QCOMPARE(info[0].original, bt); 0038 QCOMPARE(info[0].filename, QLatin1String("kernel/qapplication.cpp")); 0039 QCOMPARE(info[0].function, QLatin1String("QApplication::notify (this=0xbf997e8c, receiver=0x82607e8, e=0xbf997074)")); 0040 QCOMPARE(info[0].address, QLatin1String("0xb688ff8e")); 0041 QCOMPARE(info[0].line, 3115); 0042 QCOMPARE(info[0].step, 24); 0043 0044 bt = QStringLiteral("#39 0xb634211c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0"); 0045 info = KateBtParser::parseBacktrace(bt); 0046 QVERIFY(info.size() == 1); 0047 QCOMPARE(info[0].type, BtInfo::Lib); 0048 QCOMPARE(info[0].original, bt); 0049 QCOMPARE(info[0].filename, QLatin1String("/usr/lib/libglib-2.0.so.0")); 0050 QCOMPARE(info[0].function, QLatin1String("g_main_context_dispatch ()")); 0051 QCOMPARE(info[0].address, QLatin1String("0xb634211c")); 0052 QCOMPARE(info[0].line, -1); 0053 QCOMPARE(info[0].step, 39); 0054 0055 bt = QStringLiteral("#41 0x0805e690 in ?? ()"); 0056 info = KateBtParser::parseBacktrace(bt); 0057 QVERIFY(info.size() == 1); 0058 QCOMPARE(info[0].type, BtInfo::Unknown); 0059 QCOMPARE(info[0].original, bt); 0060 QCOMPARE(info[0].filename, QString()); 0061 QCOMPARE(info[0].function, QString()); 0062 QCOMPARE(info[0].address, QLatin1String("0x0805e690")); 0063 QCOMPARE(info[0].line, -1); 0064 QCOMPARE(info[0].step, 41); 0065 0066 bt = QStringLiteral("#5 0xffffe410 in __kernel_vsyscall ()"); 0067 info = KateBtParser::parseBacktrace(bt); 0068 QVERIFY(info.size() == 1); 0069 QCOMPARE(info[0].type, BtInfo::Unknown); 0070 QCOMPARE(info[0].original, bt); 0071 QCOMPARE(info[0].filename, QString()); 0072 QCOMPARE(info[0].function, QLatin1String("__kernel_vsyscall ()")); 0073 QCOMPARE(info[0].address, QLatin1String("0xffffe410")); 0074 QCOMPARE(info[0].line, -1); 0075 QCOMPARE(info[0].step, 5); 0076 0077 bt = QStringLiteral(" Thread 1 (Thread 0x7fb6ba260780 (LWP 16447)):\n[KCrash Handler]"); 0078 info = KateBtParser::parseBacktrace(bt); 0079 QVERIFY(info.empty()); 0080 } 0081 0082 #include "moc_btbrowsertest.cpp" 0083 0084 // kate: space-indent on; indent-width 4; replace-tabs on;