Summary: Make sure we propagate environment when starting debugserver with a pre-loaded inferior. AFAIK, RNBRunLoopLaunchInferior is only called in pre-loaded inferior scenario, so we can just pick up the debugserver environment instead of trying to construct an envp from the (empty) context. This makes debugserver pass an test added for an equivalent lldb-server fix. Reviewers: jasonmolenda, clayborg Subscribers: JDevlieghere, lldb-commits Differential Revision: https://reviews.llvm.org/D41352 llvm-svn: 321355
49 lines
1.8 KiB
C++
49 lines
1.8 KiB
C++
//===-- LLGSTest.cpp --------------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "TestBase.h"
|
|
#include "lldb/Host/Host.h"
|
|
#include "llvm/Testing/Support/Error.h"
|
|
|
|
using namespace llgs_tests;
|
|
using namespace lldb_private;
|
|
using namespace llvm;
|
|
|
|
TEST_F(TestBase, LaunchModePreservesEnvironment) {
|
|
putenv(const_cast<char *>("LLDB_TEST_MAGIC_VARIABLE=LLDB_TEST_MAGIC_VALUE"));
|
|
|
|
auto ClientOr = TestClient::launch(getLogFileName(),
|
|
{getInferiorPath("environment_check")});
|
|
ASSERT_THAT_EXPECTED(ClientOr, Succeeded());
|
|
auto &Client = **ClientOr;
|
|
|
|
ASSERT_THAT_ERROR(Client.ContinueAll(), Succeeded());
|
|
ASSERT_THAT_EXPECTED(
|
|
Client.GetLatestStopReplyAs<StopReplyExit>(),
|
|
HasValue(testing::Property(&StopReply::getKind,
|
|
WaitStatus{WaitStatus::Exit, 0})));
|
|
}
|
|
|
|
TEST_F(TestBase, DS_TEST(DebugserverEnv)) {
|
|
// Test that --env takes precedence over inherited environment variables.
|
|
putenv(const_cast<char *>("LLDB_TEST_MAGIC_VARIABLE=foobar"));
|
|
|
|
auto ClientOr = TestClient::launchCustom(getLogFileName(),
|
|
{ "--env", "LLDB_TEST_MAGIC_VARIABLE=LLDB_TEST_MAGIC_VALUE" },
|
|
{getInferiorPath("environment_check")});
|
|
ASSERT_THAT_EXPECTED(ClientOr, Succeeded());
|
|
auto &Client = **ClientOr;
|
|
|
|
ASSERT_THAT_ERROR(Client.ContinueAll(), Succeeded());
|
|
ASSERT_THAT_EXPECTED(
|
|
Client.GetLatestStopReplyAs<StopReplyExit>(),
|
|
HasValue(testing::Property(&StopReply::getKind,
|
|
WaitStatus{WaitStatus::Exit, 0})));
|
|
}
|