@@ -365,32 +365,7 @@ pub fn run_in_tmpdir<F: FnOnce()>(callback: F) {
365
365
fs:: remove_dir_all ( tmpdir) . unwrap ( ) ;
366
366
}
367
367
368
- /// Implement common helpers for command wrappers. This assumes that the command wrapper is a struct
369
- /// containing a `cmd: Command` field. The provided helpers are:
370
- ///
371
- /// 1. Generic argument acceptors: `arg` and `args` (delegated to [`Command`]). These are intended
372
- /// to be *fallback* argument acceptors, when specific helpers don't make sense. Prefer to add
373
- /// new specific helper methods over relying on these generic argument providers.
374
- /// 2. Environment manipulation methods: `env`, `env_remove` and `env_clear`: these delegate to
375
- /// methods of the same name on [`Command`].
376
- /// 3. Output and execution: `run` and `run_fail` are provided. These are
377
- /// higher-level convenience methods which wait for the command to finish running and assert
378
- /// that the command successfully ran or failed as expected. They return
379
- /// [`CompletedProcess`], which can be used to assert the stdout/stderr/exit code of the executed
380
- /// process.
381
- ///
382
- /// Example usage:
383
- ///
384
- /// ```ignore (illustrative)
385
- /// struct CommandWrapper { cmd: Command } // <- required `cmd` field
386
- ///
387
- /// crate::impl_common_helpers!(CommandWrapper);
388
- ///
389
- /// impl CommandWrapper {
390
- /// // ... additional specific helper methods
391
- /// }
392
- /// ```
393
- macro_rules! impl_common_helpers {
368
+ macro_rules! impl_common_helpers_without_run {
394
369
( $wrapper: ident) => {
395
370
impl $wrapper {
396
371
/// Specify an environment variable.
@@ -434,13 +409,50 @@ macro_rules! impl_common_helpers {
434
409
self
435
410
}
436
411
437
- /// Inspect what the underlying [`Command`] is up to the
438
- /// current construction.
439
412
pub fn inspect<I >( & mut self , inspector: I ) -> & mut Self
440
413
where
441
414
I : FnOnce ( & :: std:: process:: Command ) ,
442
415
{
443
- self . cmd. inspect( inspector) ;
416
+ inspector( & self . cmd) ;
417
+ self
418
+ }
419
+ }
420
+ } ;
421
+ }
422
+
423
+ /// Implement common helpers for command wrappers. This assumes that the command wrapper is a struct
424
+ /// containing a `cmd: Command` field. The provided helpers are:
425
+ ///
426
+ /// 1. Generic argument acceptors: `arg` and `args` (delegated to [`Command`]). These are intended
427
+ /// to be *fallback* argument acceptors, when specific helpers don't make sense. Prefer to add
428
+ /// new specific helper methods over relying on these generic argument providers.
429
+ /// 2. Environment manipulation methods: `env`, `env_remove` and `env_clear`: these delegate to
430
+ /// methods of the same name on [`Command`].
431
+ /// 3. Output and execution: `run` and `run_fail` are provided. These are
432
+ /// higher-level convenience methods which wait for the command to finish running and assert
433
+ /// that the command successfully ran or failed as expected. They return
434
+ /// [`CompletedProcess`], which can be used to assert the stdout/stderr/exit code of the executed
435
+ /// process.
436
+ ///
437
+ /// Example usage:
438
+ ///
439
+ /// ```ignore (illustrative)
440
+ /// struct CommandWrapper { cmd: Command } // <- required `cmd` field
441
+ ///
442
+ /// crate::impl_common_helpers!(CommandWrapper);
443
+ ///
444
+ /// impl CommandWrapper {
445
+ /// // ... additional specific helper methods
446
+ /// }
447
+ /// ```
448
+ macro_rules! impl_common_helpers {
449
+ ( $wrapper: ident) => {
450
+ crate :: impl_common_helpers_without_run!( $wrapper) ;
451
+
452
+ impl $wrapper {
453
+ /// Set the path where the command will be run.
454
+ pub fn current_dir<P : AsRef <Path >>( & mut self , path: P ) -> & mut Self {
455
+ self . cmd. current_dir( path) ;
444
456
self
445
457
}
446
458
@@ -455,15 +467,10 @@ macro_rules! impl_common_helpers {
455
467
pub fn run_fail( & mut self ) -> crate :: command:: CompletedProcess {
456
468
self . cmd. run_fail( )
457
469
}
458
-
459
- /// Set the path where the command will be run.
460
- pub fn current_dir<P : AsRef <:: std:: path:: Path >>( & mut self , path: P ) -> & mut Self {
461
- self . cmd. current_dir( path) ;
462
- self
463
- }
464
470
}
465
471
} ;
466
472
}
467
473
468
474
use crate :: command:: { Command , CompletedProcess } ;
469
475
pub ( crate ) use impl_common_helpers;
476
+ pub ( crate ) use impl_common_helpers_without_run;
0 commit comments