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?
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: