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:
avremo molte, molte funzioni da fare
le funzioni verranno aggiunte e modificate da sviluppatori inesperti, quindi qualsiasi cosa complessa verrà probabilmente rotta.
do-stuff
bisogno di qualcosa comeif(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.