Capacità di esecuzione a secco: come eseguire una funzione che stampa i comandi o li esegue


1

Qualche suggerimento alternativo su come aggiungere una funzionalità di funzionamento a secco sarebbe apprezzato.

Sto cercando di creare una funzione che funziona in modalità "dry-run" o live.

ad esempio (pseudo-codice):

function do-stuff() {
   dry_run_or_real 
   brew install java
   for x in dir ; do echo $x ; done
}

function dry_run_or_real() {
   if [ ! -z "$GLOBAL_DRY_RUN" ] ; then 
      echo "We would do this:$*"
   else 
      # we are actually running the code
      $* 
   fi
}

Se è impostato GLOBAL_DRY_RUN è questo testo:

We would do this:
brew install java
for x in dir ; do echo $x ; done

MA i comandi sopra riportati non verrebbero eseguiti.

Il grande vincolo è che il corpo di Do-stuff deve avere solo minime modifiche per supportare il codice di test a secco:

  1. avremo molte, molte funzioni da fare

  2. le funzioni verranno aggiunte e modificate da sviluppatori inesperti, quindi qualsiasi cosa complessa verrà probabilmente rotta.


Non è davvero chiaro quale sia il tuo obiettivo. Il tuo esempio richiederebbe semplicemente al writer della funzione di fornire un test. Inoltre il modo in cui stai annidando renderebbe più difficile il controllo. Avresti do-stuffbisogno di qualcosa come if(dry_run_or_real()){return;}"interrompere" l'esecuzione. Non puoi davvero influenzare lo strato esterno di un annidamento. Di conseguenza, non saresti in grado di "eseguire effettivamente il codice" nella funzione di test.
Seth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.