a479b70d8a
With the new functionality, when the 'alt' command is called (or automatically triggered), any file with a name ending in '##yadm_tmpl' is treated as a jinja template. The template is processed by envtpl and the result is written to a file without the '##yadm_tmpl' name. The variables passed into the template processing are YADM_CLASS YADM_OS YADM_HOSTNAME YADM_USER These variables are set according to the normal rules for CLASS, OS, HOSTNAME, and USER during the alt processing.
151 lines
3.8 KiB
Bash
151 lines
3.8 KiB
Bash
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' ''
|
|
}
|