mirror of
https://github.com/TheLocehiliosan/yadm
synced 2024-10-27 20:34:27 +00:00
152 lines
3.8 KiB
Plaintext
152 lines
3.8 KiB
Plaintext
|
load common
|
||
|
load_fixtures
|
||
|
status=;output=; #; populated by bats run()
|
||
|
|
||
|
IN_REPO=(alt* "dir one")
|
||
|
export TEST_TREE_WITH_ALT=1
|
||
|
|
||
|
|
||
|
setup() {
|
||
|
destroy_tmp
|
||
|
build_repo "${IN_REPO[@]}"
|
||
|
}
|
||
|
|
||
|
|
||
|
function test_alt() {
|
||
|
local alt_type="$1"
|
||
|
local test_overwrite="$2"
|
||
|
local auto_alt="$3"
|
||
|
|
||
|
#; detemine test parameters
|
||
|
case $alt_type in
|
||
|
base)
|
||
|
real_name="alt-jinja"
|
||
|
file_content_match="-${T_SYS}-${T_HOST}-${T_USER}"
|
||
|
;;
|
||
|
override_all)
|
||
|
real_name="alt-jinja"
|
||
|
file_content_match="custom_class-custom_system-custom_host-custom_user"
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
if [ "$test_overwrite" = "true" ] ; then
|
||
|
#; create incorrect links (to overwrite)
|
||
|
echo "BAD_CONTENT" "$T_DIR_WORK/$real_name"
|
||
|
else
|
||
|
#; verify real file doesn't already exist
|
||
|
if [ -e "$T_DIR_WORK/$real_name" ] ; then
|
||
|
echo "ERROR: real file already exists before running yadm"
|
||
|
return 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
#; configure yadm.auto_alt=false
|
||
|
if [ "$auto_alt" = "false" ]; then
|
||
|
git config --file="$T_YADM_CONFIG" yadm.auto-alt false
|
||
|
fi
|
||
|
|
||
|
#; run yadm (alt or status)
|
||
|
if [ -z "$auto_alt" ]; then
|
||
|
run "${T_YADM_Y[@]}" alt
|
||
|
#; validate status and output
|
||
|
if [ "$status" != 0 ] || [[ ! "$output" =~ Creating.+$real_name ]]; then
|
||
|
echo "OUTPUT:$output"
|
||
|
echo "ERROR: Could not confirm status and output of alt command"
|
||
|
return 1;
|
||
|
fi
|
||
|
else
|
||
|
#; running any passed through Git command should trigger auto-alt
|
||
|
run "${T_YADM_Y[@]}" status
|
||
|
if [ -n "$auto_alt" ] && [[ "$output" =~ Creating.+$real_name ]]; then
|
||
|
echo "ERROR: Reporting of jinja processing should not happen"
|
||
|
return 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
#; validate link content
|
||
|
if [[ "$alt_type" =~ none ]] || [ "$auto_alt" = "false" ]; then
|
||
|
#; no real file should be present
|
||
|
if [ -L "$T_DIR_WORK/$real_name" ] ; then
|
||
|
echo "ERROR: Real file should not exist"
|
||
|
return 1
|
||
|
fi
|
||
|
else
|
||
|
#; correct real file should be present
|
||
|
local file_content
|
||
|
file_content=$(cat "$T_DIR_WORK/$real_name")
|
||
|
if [ "$file_content" != "$file_content_match" ]; then
|
||
|
echo "file_content: ${file_content}"
|
||
|
echo "expected_content: ${file_content_match}"
|
||
|
echo "ERROR: Link content is not correct"
|
||
|
return 1
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
@test "Command 'alt' (select jinja)" {
|
||
|
echo "
|
||
|
When the command 'alt' is provided
|
||
|
and file matches ##yadm_tmpl
|
||
|
Report jinja template processing
|
||
|
Verify that the correct content is written
|
||
|
Exit with 0
|
||
|
"
|
||
|
|
||
|
test_alt 'base' 'false' ''
|
||
|
}
|
||
|
|
||
|
@test "Command 'auto-alt' (enabled)" {
|
||
|
echo "
|
||
|
When a command possibly changes the repo
|
||
|
and auto-alt is configured true
|
||
|
and file matches ##yadm_tmpl
|
||
|
automatically process alternates
|
||
|
report no linking (not loud)
|
||
|
Verify that the correct content is written
|
||
|
"
|
||
|
|
||
|
test_alt 'base' 'false' 'true'
|
||
|
}
|
||
|
|
||
|
@test "Command 'auto-alt' (disabled)" {
|
||
|
echo "
|
||
|
When a command possibly changes the repo
|
||
|
and auto-alt is configured false
|
||
|
and file matches ##yadm_tmpl
|
||
|
Report no jinja template processing
|
||
|
Verify no content
|
||
|
"
|
||
|
|
||
|
test_alt 'base' 'false' 'false'
|
||
|
}
|
||
|
|
||
|
@test "Command 'alt' (overwrite existing content)" {
|
||
|
echo "
|
||
|
When the command 'alt' is provided
|
||
|
and file matches ##yadm_tmpl
|
||
|
and the real file exists, and is wrong
|
||
|
Report jinja template processing
|
||
|
Verify that the correct content is written
|
||
|
Exit with 0
|
||
|
"
|
||
|
|
||
|
test_alt 'base' 'true' ''
|
||
|
}
|
||
|
|
||
|
@test "Command 'alt' (overwritten settings)" {
|
||
|
echo "
|
||
|
When the command 'alt' is provided
|
||
|
and file matches ##yadm_tmpl
|
||
|
after setting local.*
|
||
|
Report jinja template processing
|
||
|
Verify that the correct content is written
|
||
|
Exit with 0
|
||
|
"
|
||
|
|
||
|
GIT_DIR="$T_DIR_REPO" git config local.os custom_system
|
||
|
GIT_DIR="$T_DIR_REPO" git config local.user custom_user
|
||
|
GIT_DIR="$T_DIR_REPO" git config local.host custom_host
|
||
|
GIT_DIR="$T_DIR_REPO" git config local.class custom_class
|
||
|
test_alt 'override_all' 'false' ''
|
||
|
}
|