[lldb][TerminalTest] Fix assertion failure
authorKazuki Sakamoto <sakamoto@splhack.org>
Fri, 16 Jun 2023 00:33:36 +0000 (17:33 -0700)
committerKazuki Sakamoto <kaz@meta.com>
Fri, 16 Jun 2023 04:24:40 +0000 (21:24 -0700)
D152712 replaced `llvm::sys::RetryAfterSignal(-1, ::open)` with
`FileSystem::Instance().Open` for bionic in PseudoTerminal::OpenSecondary, and
FileSystem::Instance() is failing with assertion on arm Linux.

The assertion should be FileSystem re-initialization check, therefore the
hypothesis is that TerminalTest tests are initializing FileSystem instance
repeatedly.

Use SubsystemRAII<FileSystem> to ensure tearing down the FileSystem instance.

Differential Revision: https://reviews.llvm.org/D153091

lldb/unittests/Host/posix/TerminalTest.cpp

index 1cf7b9bc8f3b04765a8072483c69dd74d95b4b67..5187a0c20a68b2e90451adf649641bd7c8711526 100644 (file)
@@ -6,9 +6,11 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "lldb/Host/FileSystem.h"
 #include "lldb/Host/PseudoTerminal.h"
 #include "lldb/Host/Terminal.h"
 #include "llvm/Testing/Support/Error.h"
+#include "TestingSupport/SubsystemRAII.h"
 
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
@@ -20,6 +22,7 @@ using namespace lldb_private;
 
 class TerminalTest : public ::testing::Test {
 protected:
+  SubsystemRAII<FileSystem> subsystems;
   PseudoTerminal m_pty;
   int m_fd;
   Terminal m_term;