aboutsummaryrefslogtreecommitdiff
path: root/tests/400-successful_backup_restore.sh
diff options
context:
space:
mode:
authorJan Sucan <jan@jansucan.com>2022-03-06 05:59:49 +0100
committerJan Sucan <jan@jansucan.com>2022-03-06 05:59:49 +0100
commite1d10bea5d9fc94ba800ade1de430c7f3c0ccacd (patch)
tree8e8a7bcd2a3b5f95463b3cc1480f4c4afa8b6bc3 /tests/400-successful_backup_restore.sh
parent647880b532b5b4fce42f7a723bf4c01bbe10d44e (diff)
tests: Unify naming of the test files
Diffstat (limited to 'tests/400-successful_backup_restore.sh')
-rw-r--r--tests/400-successful_backup_restore.sh56
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