Fix SettingsCommandTestCase.test_set_error_output_path
target.error-path (and output-path) were getting resolved on the
local file system, which doesn't make any sense for remote targets
So this patch prevents file paths from being resolved on the host
system.
llvm-svn: 229763
diff --git a/lldb/include/lldb/Interpreter/OptionValueFileSpec.h b/lldb/include/lldb/Interpreter/OptionValueFileSpec.h
index 7e74b60..9d2da68 100644
--- a/lldb/include/lldb/Interpreter/OptionValueFileSpec.h
+++ b/lldb/include/lldb/Interpreter/OptionValueFileSpec.h
@@ -22,12 +22,14 @@
class OptionValueFileSpec : public OptionValue
{
public:
- OptionValueFileSpec ();
+ OptionValueFileSpec (bool resolve = true);
- OptionValueFileSpec (const FileSpec &value);
+ OptionValueFileSpec (const FileSpec &value,
+ bool resolve = true);
OptionValueFileSpec (const FileSpec ¤t_value,
- const FileSpec &default_value);
+ const FileSpec &default_value,
+ bool resolve = true);
virtual
~OptionValueFileSpec()
@@ -122,6 +124,7 @@
FileSpec m_default_value;
lldb::DataBufferSP m_data_sp;
uint32_t m_completion_mask;
+ bool m_resolve;
};
} // namespace lldb_private
diff --git a/lldb/source/Interpreter/OptionValueFileSpec.cpp b/lldb/source/Interpreter/OptionValueFileSpec.cpp
index 3f46698..6538a64 100644
--- a/lldb/source/Interpreter/OptionValueFileSpec.cpp
+++ b/lldb/source/Interpreter/OptionValueFileSpec.cpp
@@ -24,31 +24,36 @@
using namespace lldb_private;
-OptionValueFileSpec::OptionValueFileSpec () :
+OptionValueFileSpec::OptionValueFileSpec (bool resolve) :
OptionValue(),
m_current_value (),
m_default_value (),
m_data_sp(),
- m_completion_mask (CommandCompletions::eDiskFileCompletion)
+ m_completion_mask (CommandCompletions::eDiskFileCompletion),
+ m_resolve (resolve)
{
}
-OptionValueFileSpec::OptionValueFileSpec (const FileSpec &value) :
+OptionValueFileSpec::OptionValueFileSpec (const FileSpec &value,
+ bool resolve) :
OptionValue(),
m_current_value (value),
m_default_value (value),
m_data_sp(),
- m_completion_mask (CommandCompletions::eDiskFileCompletion)
+ m_completion_mask (CommandCompletions::eDiskFileCompletion),
+ m_resolve (resolve)
{
}
OptionValueFileSpec::OptionValueFileSpec (const FileSpec ¤t_value,
- const FileSpec &default_value) :
+ const FileSpec &default_value,
+ bool resolve) :
OptionValue(),
m_current_value (current_value),
m_default_value (default_value),
m_data_sp(),
- m_completion_mask (CommandCompletions::eDiskFileCompletion)
+ m_completion_mask (CommandCompletions::eDiskFileCompletion),
+ m_resolve (resolve)
{
}
@@ -99,7 +104,7 @@
filepath.erase (suffix_chars_to_trim + 1);
m_value_was_set = true;
- m_current_value.SetFile(filepath.c_str(), true);
+ m_current_value.SetFile(filepath.c_str(), m_resolve);
m_data_sp.reset();
NotifyValueChanged();
}
diff --git a/lldb/source/Interpreter/Property.cpp b/lldb/source/Interpreter/Property.cpp
index 5679ef8..ebc18bc 100644
--- a/lldb/source/Interpreter/Property.cpp
+++ b/lldb/source/Interpreter/Property.cpp
@@ -94,10 +94,13 @@
break;
case OptionValue::eTypeFileSpec:
+ {
// "definition.default_uint_value" represents if the "definition.default_cstr_value" should
// be resolved or not
- m_value_sp.reset (new OptionValueFileSpec(FileSpec(definition.default_cstr_value, definition.default_uint_value != 0)));
+ const bool resolve = definition.default_uint_value != 0;
+ m_value_sp.reset (new OptionValueFileSpec(FileSpec(definition.default_cstr_value, resolve), resolve));
break;
+ }
case OptionValue::eTypeFileSpecList:
// "definition.default_uint_value" is not used for a OptionValue::eTypeFileSpecList
diff --git a/lldb/test/settings/TestSettings.py b/lldb/test/settings/TestSettings.py
index 2cb57da..5043fa8 100644
--- a/lldb/test/settings/TestSettings.py
+++ b/lldb/test/settings/TestSettings.py
@@ -290,14 +290,19 @@
self.expect("settings show target.error-path",
SETTING_MSG("target.error-path"),
- substrs = ['target.error-path (file) = ', 'stderr.txt"'])
+ substrs = ['target.error-path (file) = "stderr.txt"'])
self.expect("settings show target.output-path",
SETTING_MSG("target.output-path"),
- substrs = ['target.output-path (file) = ', 'stdout.txt"'])
+ substrs = ['target.output-path (file) = "stdout.txt"'])
self.runCmd("run", RUN_SUCCEEDED)
+ if lldb.remote_platform:
+ self.runCmd('platform get-file "stderr.txt" "stderr.txt"')
+ self.runCmd('platform get-file "stdout.txt" "stdout.txt"')
+
+
# The 'stderr.txt' file should now exist.
self.assertTrue(os.path.isfile("stderr.txt"),
"'stderr.txt' exists due to target.error-path.")