es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasando múltiples argumentos a través de: `run bash -c …`

Mientras intento realizar una assert_failure en una función llamada some_function, estoy experimentando algunas dificultades al pasar más de un argumento.

load 'libs/bats-support/load'
load 'libs/bats-assert/load'

https://github.com/bats-core/bats-file#Index-of-all-functions

load 'libs/bats-file/load'

https://github.com/bats-core/bats-assert#usage

load 'assert_utils'

@test "Realizar alguna prueba." {
  variableuno="uno"
  variabledos="dos"
  variabletres="tres"
  variablecuatro="cuatro"
  run bash -c 'source src/somescript.sh && somefunction 
  "$variableuno" "$variabledos" "$variabletres" "$variablecuatro"'
  assert_failure
  assert_output "$expectederror_message"
}

En donde la función consiste en:

some_function() {
local variable_uno=”$1″
local variable_dos=”$2″
local variable_tres=”$3″
local variable_cuatro=”$4″
echo “variable_uno=$variable_uno”
echo “variable_dos=$variable_dos”
echo “variable_tres=$variable_tres”
echo “variable_cuatro=$variable_cuatro”
}

La salida muestra que solo se pasa con éxito la primera variable, mientras que la segunda a la cuarta no lo hacen:

 ✗ Verificar que se arroja un error, si algo.
   (desde la función assert_failure' en el archivo test/libs/bats-assert/src/assert.bash, línea 140,
    en el archivo de prueba test/test_something.bats, línea 89)
assert_failure' fallo

-- el comando tuvo éxito, pero se esperaba que fallara --
   salida (3 líneas):
     variableuno=uno
     variabledos=
     variabletres=
     variablecuatro=
   --

¿Cómo puedo pasar cuatro variables a la función mientras aún se ejecuta assert_failure en ella?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Por lo tanto, creo que la mejor solución sería pasar los argumentos directamente a la función, de la siguiente manera:

    ejecutar bash -c ''source src/some_script.sh && some_function "$variable_one" "$variable_two" "$variable_three" "$variable_four"' 
    afirmar_falla
    afirmar_salida "$expected_error_message"
    

Comments are closed.