Como posso passar um nome de função para um executor de teste?

0

Eu queria escrever meu próprio test runner:

do_test () {
  function_under_test=$1
  expected="$2"
  function_under_test $3  # <-- Line 32
  if [ $result -eq $expected ]; then
    printf '.'
  else
    printf 'F'
  fi
}

para que eu possa ligar com

do_test sum_squares 385 10

e então usaria

sum_squares () {
  result=0
  num_in=$1
  for each_num in 'seq $num_in'
  do
    result=$((result+(each_num*each_num)))
  done
}

mas estou recebendo function_under_test: not found na linha 32

    
por Michael Durrant 24.01.2015 / 18:30

1 resposta

2

Quando você digita function_under_test , o shell pensa que é um comando, não uma variável. Você precisa expandi-lo, então function_uneder_test será expandido para sum_squares .

Altere sua linha 32 para:

"$function_under_test" "$3"
    
por 24.01.2015 / 18:38