test: improve test unit

This commit is contained in:
ttionya
2024-07-18 22:50:36 +08:00
parent a72fa5fc0b
commit fca770fffa
2 changed files with 72 additions and 5 deletions
+62 -2
View File
@@ -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
+10 -3
View File
@@ -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}"