diff --git a/test/004_unit_git_program.bats b/test/004_unit_git_program.bats new file mode 100644 index 0000000..2fe31c1 --- /dev/null +++ b/test/004_unit_git_program.bats @@ -0,0 +1,67 @@ +load common +T_YADM_CONFIG=; # populated by load_fixtures +load_fixtures +status=;output=; # populated by bats run() + +setup() { + destroy_tmp + make_parents "$T_YADM_CONFIG" +} + +teardown() { + destroy_tmp +} + +function configuration_test() { + # shellcheck source=/dev/null + YADM_TEST=1 source "$T_YADM" + # shellcheck disable=SC2034 + YADM_CONFIG="$T_YADM_CONFIG" + status=0 + { output=$( require_git ) && require_git; } || { + status=$? + true + } + + echo -e "STATUS:$status\nGIT_PROGRAM:$GIT_PROGRAM\nOUTPUT:$output" + +} + +@test "Default git program" { + echo " + Default git program should be 'git' + " + + configuration_test + + [ "$status" == 0 ] + [ "$GIT_PROGRAM" = "git" ] +} + +@test "Override git program (valid program)" { + echo " + Override git using yadm.git-program + Program should be 'cat' + " + + git config --file="$T_YADM_CONFIG" "yadm.git-program" "cat" + + configuration_test + + [ "$status" == 0 ] + [ "$GIT_PROGRAM" = "cat" ] +} + +@test "Override git program (invalid program)" { + echo " + Override git using yadm.git-program + Program should be 'badprogram' + " + + git config --file="$T_YADM_CONFIG" "yadm.git-program" "badprogram" + + configuration_test + + [ "$status" == 1 ] + [[ "$output" =~ badprogram ]] +}