110 lines
2.8 KiB
Bash
110 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
DOCKER_IMAGE="ttionya/vaultwarden-backup:test"
|
|
ERROR_NUM=0
|
|
|
|
DATA_DIR="$(pwd)/tests/fixtures/source/bitwarden/data"
|
|
CONFIG_DIR="config"
|
|
OUTPUT_DIR="output"
|
|
EXTRACT_DIR="extract"
|
|
TEMP_DIR="tmp"
|
|
REMOTE_DIR="/${OUTPUT_DIR}"
|
|
|
|
########################################
|
|
# Print colorful message.
|
|
# Arguments:
|
|
# color
|
|
# message
|
|
# Outputs:
|
|
# colorful message
|
|
########################################
|
|
function color() {
|
|
case $1 in
|
|
red) echo -e "\033[31m$2\033[0m" ;;
|
|
green) echo -e "\033[32m$2\033[0m" ;;
|
|
yellow) echo -e "\033[33m$2\033[0m" ;;
|
|
blue) echo -e "\033[34m$2\033[0m" ;;
|
|
none) echo "$2" ;;
|
|
esac
|
|
}
|
|
|
|
########################################
|
|
# Check if the files in two folders are the same.
|
|
# Arguments:
|
|
# folder1
|
|
# folder2
|
|
# Outputs:
|
|
# progress
|
|
# Returns:
|
|
# same or not
|
|
########################################
|
|
function check_files_same_in_folders() {
|
|
function generate_hash_list() {
|
|
find "$1" -type f -not -name "db.*" -exec sha1sum {} \; | sort | sed "s|$1||g" > "$2"
|
|
}
|
|
|
|
color blue "Calculating file hash in folder \"$1\" and \"$2\""
|
|
|
|
local FOLDER1="$1"
|
|
local FOLDER2="$2"
|
|
local FOLDER1_HASH_LIST="/tmp/folder1_hash_list"
|
|
local FOLDER2_HASH_LIST="/tmp/folder2_hash_list"
|
|
generate_hash_list "${FOLDER1}" "${FOLDER1_HASH_LIST}"
|
|
generate_hash_list "${FOLDER2}" "${FOLDER2_HASH_LIST}"
|
|
|
|
color blue "Calculating differences"
|
|
|
|
local RETURN_CODE
|
|
local FOLDER_HASH_DIFF="/tmp/folder_hash_diff"
|
|
if diff "${FOLDER1_HASH_LIST}" "${FOLDER2_HASH_LIST}" > "${FOLDER_HASH_DIFF}"; then
|
|
RETURN_CODE=0
|
|
else
|
|
RETURN_CODE=1
|
|
cat "${FOLDER_HASH_DIFF}"
|
|
fi
|
|
|
|
rm -rf "${FOLDER1_HASH_LIST}" "${FOLDER2_HASH_LIST}" "${FOLDER_HASH_DIFF}"
|
|
|
|
return "${RETURN_CODE}"
|
|
}
|
|
|
|
########################################
|
|
# Show test result.
|
|
# Arguments:
|
|
# test name
|
|
# failed number
|
|
# Outputs:
|
|
# test result
|
|
########################################
|
|
function test_result() {
|
|
local SEP="================================================================================"
|
|
|
|
if [[ "$2" == "0" ]]; then
|
|
color green "Test case \"$1\" passed"
|
|
color none "${SEP}${SEP}"
|
|
return
|
|
fi
|
|
|
|
((ERROR_NUM++))
|
|
|
|
color red "Test case \"$1\" failed"
|
|
color none "${SEP}${SEP}"
|
|
}
|
|
|
|
. tests/units/env-priority/test.sh
|
|
. tests/units/check-rclone-config-exists/test.sh
|
|
. tests/units/check-rclone-flags-valid/test.sh
|
|
. tests/units/check-rclone-connection-initializing/test.sh
|
|
. tests/units/backup-zip-file/test.sh
|
|
. tests/units/backup-7z-file/test.sh
|
|
. tests/units/backup-unpackage/test.sh
|
|
. tests/units/backup-cron/test.sh
|
|
|
|
if [[ "${ERROR_NUM}" == "0" ]]; then
|
|
color green "All tests passed"
|
|
else
|
|
color red "Some tests failed"
|
|
exit 1
|
|
fi
|