@@ -157,6 +157,31 @@ export default {
157
157
};
158
158
` ;
159
159
160
+ const USER_CONFIG_COMMAND_ARG_REQUIRED = `;
161
+ module.exports = {
162
+ commands: [
163
+ {
164
+ name: 'test-command-arg-required',
165
+ description: 'test command',
166
+ func: () => {
167
+ console.log('ok');
168
+ },
169
+ options: [
170
+ {
171
+ name: '--required-arg <string>',
172
+ description: 'test command arg',
173
+ required: true,
174
+ },
175
+ {
176
+ name: '--optional-arg <string>',
177
+ description: 'test command arg',
178
+ },
179
+ ],
180
+ },
181
+ ],
182
+ };
183
+ ` ;
184
+
160
185
test ( 'should read user config from react-native.config.js' , ( ) => {
161
186
writeFiles ( path . join ( DIR , 'TestProject' ) , {
162
187
'react-native.config.js' : USER_CONFIG ,
@@ -275,3 +300,33 @@ test('should read config if using import/export in react-native.config.mjs with
275
300
const { stdout} = runCLI ( path . join ( DIR , 'TestProject' ) , [ 'test-command-esm' ] ) ;
276
301
expect ( stdout ) . toMatch ( 'test-command-esm' ) ;
277
302
} ) ;
303
+
304
+ test ( 'should fail if a required arg is missing' , ( ) => {
305
+ writeFiles ( path . join ( DIR , 'TestProject' ) , {
306
+ 'react-native.config.cjs' : USER_CONFIG_COMMAND_ARG_REQUIRED ,
307
+ } ) ;
308
+
309
+ const { stderr} = runCLI (
310
+ path . join ( DIR , 'TestProject' ) ,
311
+ [ 'test-command-arg-required' , '--optional-arg' , 'foo' ] ,
312
+ {
313
+ expectedFailure : true ,
314
+ } ,
315
+ ) ;
316
+ expect ( stderr ) . toContain (
317
+ "required option '--required-arg <string>' not specified" ,
318
+ ) ;
319
+ } ) ;
320
+
321
+ test ( 'should not fail if an optional arg is missing' , ( ) => {
322
+ writeFiles ( path . join ( DIR , 'TestProject' ) , {
323
+ 'react-native.config.js' : USER_CONFIG_COMMAND_ARG_REQUIRED ,
324
+ } ) ;
325
+
326
+ const { stdout} = runCLI ( path . join ( DIR , 'TestProject' ) , [
327
+ 'test-command-arg-required' ,
328
+ '--required-arg' ,
329
+ 'bar' ,
330
+ ] ) ;
331
+ expect ( stdout ) . toMatch ( 'ok' ) ;
332
+ } ) ;
0 commit comments