diff options
| author | Jan Sucan <jan@jansucan.com> | 2022-03-05 12:36:31 +0100 |
|---|---|---|
| committer | Jan Sucan <jan@jansucan.com> | 2022-03-05 12:37:19 +0100 |
| commit | 647880b532b5b4fce42f7a723bf4c01bbe10d44e (patch) | |
| tree | f824aafbe63b61bbafe2947588c304bc95fc5ed7 /tests/400-successful-backup-restore.sh | |
| parent | d545a693143431313f6a534c6aa095e1a7cd6700 (diff) | |
tests: Add a successful backup-restore test
Diffstat (limited to 'tests/400-successful-backup-restore.sh')
| -rw-r--r-- | tests/400-successful-backup-restore.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/400-successful-backup-restore.sh b/tests/400-successful-backup-restore.sh new file mode 100644 index 0000000..ce5949a --- /dev/null +++ b/tests/400-successful-backup-restore.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +source ./assert.sh + +PROGRAM_EXEC="$1" + +function files_are_the_same() +{ + [ -z "$(diff "$1" "$2")" ] +} + +rm -f input backedup_input ref out + +# Create a four-sector reference file (the original file) +dd if=/dev/zero of=ref bs=512 count=4 1>/dev/null 2>&1 + +# Change the orignal file to make it an input file for differential backup +# There will be four different sectors in the input file +cp ref input + +# The first sector will have the 0th byte chaged +printf '\xFF' | dd of=input bs=1 count=1 seek=0 conv=notrunc 1>/dev/null 2>&1 + +# The second sector will have no changes + +# The third sector will have the last byte changed +printf '\xFF' | dd of=input bs=1 count=1 seek=$(( (512 * 3) - 1 )) conv=notrunc 1>/dev/null 2>&1 + +# The fourth sector will have the middle byte changed +printf '\xFF' | dd of=input bs=1 count=1 seek=$(( (512 * 4) - (512 / 2) )) conv=notrunc 1>/dev/null 2>&1 + +assert_success $PROGRAM_EXEC -s 512 input ref out + +if ! files_are_the_same out 400-expected_backup_output.bin; then + echo "assert: Backup output file differs from the expected one" + exit 1 +fi + +# Modify the file to backup (the input file used in the backup phase) +cp input backedup_input +cp ref input +if ! files_are_the_same ref input; then + echo "assert: The input file must be the same as the reference one before restoring it" + exit 1 +fi + +assert_success $PROGRAM_EXEC -s 512 out input + +if ! files_are_the_same input backedup_input; then + echo "assert: Cannot restore the backup" + exit 1 +fi + +rm -f input backedup_input ref out + +exit 0 |
