File tree Expand file tree Collapse file tree 3 files changed +21
-4
lines changed
test/API/commands/settings Expand file tree Collapse file tree 3 files changed +21
-4
lines changed Original file line number Diff line number Diff line change @@ -103,6 +103,9 @@ insert-before or insert-after.");
103
103
case ' g' :
104
104
m_global = true ;
105
105
break ;
106
+ case ' e' :
107
+ m_exists = true ;
108
+ break ;
106
109
default :
107
110
llvm_unreachable (" Unimplemented option" );
108
111
}
@@ -113,6 +116,7 @@ insert-before or insert-after.");
113
116
void OptionParsingStarting (ExecutionContext *execution_context) override {
114
117
m_global = false ;
115
118
m_force = false ;
119
+ m_exists = false ;
116
120
}
117
121
118
122
llvm::ArrayRef<OptionDefinition> GetDefinitions () override {
@@ -121,7 +125,8 @@ insert-before or insert-after.");
121
125
122
126
// Instance variables to hold the values for command options.
123
127
bool m_global = false ;
124
- bool m_force;
128
+ bool m_force = false ;
129
+ bool m_exists = false ;
125
130
};
126
131
127
132
void
@@ -220,13 +225,12 @@ insert-before or insert-after.");
220
225
var_name, var_value);
221
226
}
222
227
223
- if (error.Fail ()) {
228
+ if (error.Fail () && !m_options. m_exists ) {
224
229
result.AppendError (error.AsCString ());
225
230
return false ;
226
- } else {
227
- result.SetStatus (eReturnStatusSuccessFinishResult);
228
231
}
229
232
233
+ result.SetStatus (eReturnStatusSuccessFinishResult);
230
234
return result.Succeeded ();
231
235
}
232
236
Original file line number Diff line number Diff line change @@ -23,6 +23,9 @@ let Command = "settings set" in {
23
23
Desc<"Apply the new value to the global default value.">;
24
24
def setset_force : Option<"force", "f">,
25
25
Desc<"Force an empty value to be accepted as the default.">;
26
+ def setset_exists : Option<"exists", "e">,
27
+ Desc<"Set the setting if it exists, but do not cause the command to raise "
28
+ "an error if it does not exist.">;
26
29
}
27
30
28
31
let Command = "settings write" in {
Original file line number Diff line number Diff line change @@ -779,3 +779,13 @@ def test_experimental_settings(self):
779
779
# finally, confirm that trying to set a setting that does not exist still fails.
780
780
# (SHOWING a setting that does not exist does not currently yield an error.)
781
781
self .expect ('settings set target.setting-which-does-not-exist true' , error = True )
782
+
783
+ def test_settings_set_exists (self ):
784
+ cmdinterp = self .dbg .GetCommandInterpreter ()
785
+
786
+ # An unknown option should succeed.
787
+ self .expect ('settings set -e foo bar' )
788
+ self .expect ('settings set --exists foo bar' )
789
+
790
+ # A known option should fail if its argument is invalid.
791
+ self .expect ("settings set auto-confirm bogus" , error = True )
You can’t perform that action at this time.
0 commit comments