test: improve test unit
This commit is contained in:
+62
-2
@@ -4,6 +4,7 @@
|
||||
DOCKER_IMAGE="ttionya/vaultwarden-backup:test"
|
||||
ERROR_NUM=0
|
||||
|
||||
DATA_DIR="/bitwarden/data"
|
||||
OUTPUT_DIR="output"
|
||||
EXTRACT_DIR="extract"
|
||||
REMOTE_DIR="/${OUTPUT_DIR}"
|
||||
@@ -26,11 +27,70 @@ function color() {
|
||||
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 -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() {
|
||||
if [[ "$2" == "0" ]]; then
|
||||
color green "Test case \"$1\" passed"
|
||||
return
|
||||
fi
|
||||
|
||||
((ERROR_NUM++))
|
||||
|
||||
color red "Test case \"$1\" failed"
|
||||
}
|
||||
|
||||
. tests/units/backup-zip-file/test.sh
|
||||
|
||||
if [[ "${ERROR_NUM}" == "0" ]]; then
|
||||
color green "All tests passed."
|
||||
color green "All tests passed"
|
||||
else
|
||||
color red "Some tests failed."
|
||||
color red "Some tests failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -6,7 +6,9 @@ TEST_OUTPUT_DIR="$(pwd)/${OUTPUT_DIR}/${TEST_NAME}"
|
||||
PASSWORD="71ad8764-2f69-4c0c-8452-61e08b9f489d"
|
||||
BACKUP_FILE="${TEST_OUTPUT_DIR}/backup.test.zip"
|
||||
|
||||
color blue "Testing the ${TEST_NAME} unit..."
|
||||
FAILED_NUM=0
|
||||
|
||||
color yellow "Starting test case \"${TEST_NAME}\""
|
||||
|
||||
function prepare() {
|
||||
mkdir -p "${TEST_OUTPUT_DIR}"
|
||||
@@ -23,7 +25,7 @@ function start() {
|
||||
}
|
||||
|
||||
function test() {
|
||||
color blue "Starting the test..."
|
||||
color blue "Testing..."
|
||||
|
||||
ls -l "${BACKUP_FILE}"
|
||||
|
||||
@@ -31,9 +33,14 @@ function test() {
|
||||
|
||||
7z e -aoa -p"${PASSWORD}" -o"${EXTRACT_DIR}" "${BACKUP_FILE}"
|
||||
|
||||
# TODO test the extracted files
|
||||
check_files_same_in_folders "${DATA_DIR}" "${EXTRACT_DIR}"
|
||||
if [[ $? != 0 ]]; then
|
||||
((FAILED_NUM++))
|
||||
fi
|
||||
}
|
||||
|
||||
prepare
|
||||
start
|
||||
test
|
||||
|
||||
test_result "${TEST_NAME}" "${FAILED_NUM}"
|
||||
|
||||
Reference in New Issue
Block a user