feat: Add local_target variable and tests
This commit is contained in:
parent
d07ff8ca43
commit
0d355c468b
@ -37,7 +37,7 @@ validate_sources() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
validate_targets() {
|
validate_targets() {
|
||||||
# Check targets array.
|
# Check targets array and set local_target variable.
|
||||||
#
|
#
|
||||||
# Usage: validate_targets ARRAY
|
# Usage: validate_targets ARRAY
|
||||||
|
|
||||||
@ -46,24 +46,28 @@ validate_targets() {
|
|||||||
|
|
||||||
local array=("$@")
|
local array=("$@")
|
||||||
local scheme=
|
local scheme=
|
||||||
local file_scheme=0
|
local file_targets=()
|
||||||
|
|
||||||
for uri in "${array[@]}"; do
|
for uri in "${array[@]}"; do
|
||||||
scheme="${uri%%:*}"
|
scheme="${uri%%:*}"
|
||||||
case "$scheme" in
|
case "$scheme" in
|
||||||
file|ftp|sftp|rsync|s3|swift|sj|dav|davs)
|
file|ftp|sftp|rsync|s3|swift|sj|dav|davs)
|
||||||
if [[ "$scheme" == file ]]; then
|
if [[ "$scheme" == file ]]; then
|
||||||
(( file_scheme++ )) || true
|
file_targets+=("$uri")
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*) echo "Error: Unsupported URI scheme: $scheme" >&2; exit 1;;
|
*) echo "Error: Unsupported URI scheme: $scheme" >&2; exit 1;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$file_scheme" -eq 0 ]; then
|
if [ "${#file_targets[@]}" -eq 0 ]; then
|
||||||
echo "Error: 'file' scheme is not set in targets." \
|
echo "Error: 'file' scheme is not set in targets." \
|
||||||
"You must provide one or more targets with 'file' scheme." >&2
|
"You must provide one or more targets with 'file' scheme." >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
else
|
||||||
|
# Set local_target. This variable contains path to save local backups.
|
||||||
|
# Files to additional targets will be coped from this directory.
|
||||||
|
local_target="${file_targets[0]}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
tests/files/basic.plan
Normal file
2
tests/files/basic.plan
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
sources=('file:/home/user')
|
||||||
|
targets=('file:/var/backup')
|
7
tests/files/multiple_file_targets.plan
Normal file
7
tests/files/multiple_file_targets.plan
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
sources=('file:/home/user')
|
||||||
|
targets=(
|
||||||
|
'file:///home/backups'
|
||||||
|
'file:/var/backup'
|
||||||
|
'file:/backups'
|
||||||
|
's3://bucket'
|
||||||
|
)
|
@ -39,7 +39,7 @@ setup() {
|
|||||||
assert_output --partial 'Error: targets array is not set'
|
assert_output --partial 'Error: targets array is not set'
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "No targets with file URI scheme" {
|
@test "No targets with 'file' URI scheme" {
|
||||||
. script.sh
|
. script.sh
|
||||||
run source_script $DIR/files/no_file_target.plan
|
run source_script $DIR/files/no_file_target.plan
|
||||||
assert_output --partial "Error: 'file' scheme is not set in targets. You must provide one or more targets with 'file' scheme."
|
assert_output --partial "Error: 'file' scheme is not set in targets. You must provide one or more targets with 'file' scheme."
|
||||||
@ -56,3 +56,15 @@ setup() {
|
|||||||
run source_script $DIR/files/unsupported_target_scheme.plan
|
run source_script $DIR/files/unsupported_target_scheme.plan
|
||||||
assert_output --partial 'Error: Unsupported URI scheme: scp'
|
assert_output --partial 'Error: Unsupported URI scheme: scp'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "Set local target" {
|
||||||
|
. script.sh
|
||||||
|
source_script $DIR/files/basic.plan
|
||||||
|
[ "$local_target" == 'file:/var/backup' ]
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "Set local target from multiple 'file' targets" {
|
||||||
|
. script.sh
|
||||||
|
source_script $DIR/files/multiple_file_targets.plan
|
||||||
|
[ "$local_target" == 'file:///home/backups' ]
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user