Context
While running some bats tests after an installation, I noticed that the tests throw an error when I run bats test files from a different function in the same file main.sh. The tests work works when executed directly with:
./test/libs/bats/bin/bats test/test_install_git_postsetup.bats
from the first function run_prompt_user_choice() that is executed in main.sh. However when I copy that command and put it in:
function run_some_test() {
./test/libs/bats/bin/bats test/test_install_git_postsetup.bats
}
and call that function from inside run_prompt_user_choice() with command: ($run_some_tests), it throws error: ./main.sh: line 21: 1..3: command not found.
Code
The code of the main.sh consists of:
#!/bin/bash
. src/ask_user_choice.sh
function run_some_test() {
./test/libs/bats/bin/bats test/test_install_git_postsetup.bats
}
function run_prompt_user_choice() {
# install selected packages.
$(install_user_choices)
# test selected packages using a function.
$(run_some_test)
# Run the github test file directly
./test/libs/bats/bin/bats test/test_install_git_postsetup.bats
}
run_prompt_user_choice "$@"
Output
The output of running sudo ./main.sh is:
./main.sh: line 21: 1..3: command not found
✓ running the apt update function in some file and verifying log output.
✓ running the apt upgrade function in some file and verifying log output.
✓ running the apt install git function in some file and verifying log output.
3 tests, 0 failures
Question
How could I run those tests from an arbitrary function that is called by the run_prompt_user_choice() function?