unset RSYNC_LOG
}
+# bats test_tags=backup:start
@test "success start message" {
run main
assert_line --index 0 "⭐ START: backup"
}
+# bats test_tags=backup:start,backup:cmd
@test "failure yq command not found" {
command() {
return 1
assert_line --index 1 "❌ ERROR: command yq not found"
}
+# bats test_tags=backup:start,backup:cmd
@test "failure jq command not found" {
command() {
[ "$2" != "jq" ] || return 1
assert_line --index 1 "❌ ERROR: command jq not found"
}
+# bats test_tags=backup:start,backup:cmd
@test "failure rsync command not found" {
command() {
[ "$2" != "rsync" ] || return 1
assert_line --index 1 "❌ ERROR: command rsync not found"
}
+# bats test_tags=backup:start,backup:cmd
@test "failure ssh command not found" {
command() {
[ "$2" != "ssh" ] || return 1
assert_line --index 1 "❌ ERROR: command ssh not found"
}
+# bats test_tags=backup:start,backup:config
@test "failure config.yaml not found" {
exists_config_file() {
errlog "file config.yaml not found"
assert_line --index 1 "❌ ERROR: file config.yaml not found"
}
+# bats test_tags=backup:start,backup:config
@test "failure load config.yaml" {
yq() {
return 1
assert_line --index 1 "❌ ERROR: failed to load src/config-example.yaml"
}
+# bats test_tags=backup:start,backup:config
@test "failure no backup path in config" {
yq() {
echo '{}'
assert_line --index 1 "❌ ERROR: src/config-example.yaml missing backup_path"
}
+# bats test_tags=backup:start,backup:config
@test "failure no backup name in config" {
yq() {
echo '{"backup_path": "path"}'
assert_line --index 2 "❌ ERROR: src/config-example.yaml missing backup_name"
}
+# bats test_tags=backup:start,backup:config
@test "failure no backup count in config" {
yq() {
echo '{
assert_line --index 3 "❌ ERROR: src/config-example.yaml missing backup_count"
}
+# bats test_tags=backup:start,backup:config
@test "failure no machines in config" {
yq() {
echo '{
assert_line --index 4 "❌ ERROR: src/config-example.yaml missing machines"
}
+# bats test_tags=backup:info
@test "success info backup count" {
create_backup_dir() {
:
assert_line --index 8 "✅ SUCCESS: backup"
}
+# bats test_tags=backup:info
@test "success last backup dir path info" {
create_backup_dir() {
:
assert_line --index 9 "✅ SUCCESS: backup"
}
+# bats test_tags=backup:info
@test "success new backup folder info" {
create_backup_dir() {
:
assert_line --index 8 "✅ SUCCESS: backup"
}
+# bats test_tags=backup:info
@test "success new backup folder with number 02 info" {
mkdir --parents "build/2000-01-01_01_backup"
create_backup_dir() {
rmdir "build/2000-01-01_01_backup"
}
+# bats test_tags=backup:info
@test "success create backup folder" {
backup_machines() {
:
[ -d "build/2000-01-01_01_backup" ]
}
+# bats test_tags=backup:info
@test "success create backup folder latest number" {
mkdir --parents "build/2000-01-01_35_backup"
backup_machines() {
rmdir "build/2000-01-01_36_backup"
}
+# bats test_tags=backup:info
@test "success create backup folder latest number with other date" {
mkdir --parents "build/1999-12-31_35_backup"
backup_machines() {
rmdir "build/2000-01-01_01_backup"
}
+# bats test_tags=backup:info
@test "success backup machines" {
machine_backup_pathes() {
:
[ -d "build/2000-01-01_01_backup/testpc2" ]
}
+# bats test_tags=backup:info
@test "success backup machine pathes" {
path_backup() {
:
assert_line --index 24 "✅ SUCCESS: backup"
}
+# bats test_tags=backup:info
@test "failure backup machine pathes is null" {
yq() {
echo '{
assert_line --index 8 "❌ ERROR: missing pathes for machine testpc1"
}
+# bats test_tags=backup:info
@test "failure backup machine path no remote user" {
yq() {
echo '{
assert_line --index 10 "❌ ERROR: missing remote user for testpc1"
}
+# bats test_tags=backup:info
@test "failure backup machine path no host" {
yq() {
echo '{
assert_line --index 10 "❌ ERROR: missing host for testpc1"
}
+# bats test_tags=backup:info
@test "failure backup machine path no port" {
yq() {
echo '{
assert_line --index 10 "❌ ERROR: missing port for testpc1"
}
+# bats test_tags=backup:info
@test "success backup machine path excludes info" {
run main
assert_line --partial "✅ SUCCESS: backup"
}
+# bats test_tags=backup:info
@test "success backup machine path without excludes" {
yq() {
echo '{
assert_line --index 13 "✅ SUCCESS: backup"
}
+# bats test_tags=backup:rsync
@test "success backup machine path rsync parameters" {
RSYNC_LOG_RUNS="1"
}
+# bats test_tags=backup:rsync
@test "success backup machine path rsync parameters without excludes" {
RSYNC_LOG_RUNS="3"
run main
assert_equal "$(awk 'NR==11 {print; exit}' "$RSYNC_LOG")" "build/2000-01-01_01_backup/testpc2"
}
+# bats test_tags=backup:rsync
@test "success backup machine path rsync localhost" {
RSYNC_LOG_RUNS="4"
run main
assert_equal "$(awk 'NR==11 {print; exit}' "$RSYNC_LOG")" "build/2000-01-01_01_backup/onlylocal"
}
+# bats test_tags=backup:rsync
@test "success backup machine path rsync localhost with hard links" {
mkdir --parents "build/1999-12-31_01_backup"
assert_equal "$(awk 'NR==10 {print; exit}' "$RSYNC_LOG")" "--link-dest=build/1999-12-31_01_backup/onlylocal"
assert_equal "$(awk 'NR==11 {print; exit}' "$RSYNC_LOG")" "/home/local"
assert_equal "$(awk 'NR==12 {print; exit}' "$RSYNC_LOG")" "build/2000-01-01_01_backup/onlylocal"
+ rmdir "build/1999-12-31_01_backup"
}
+# bats test_tags=backup:rsync
@test "failure backup machine path rsync failed" {
rsync() {
return 1
assert_line --partial "❌ ERROR: could not backup testpc1 with path /etc"
}
+# bats test_tags=backup:info,backup:cleanup
@test "success show current backup count" {
mkdir --parents "build/1999-12-24_01_backup"
mkdir --parents "build/1999-12-30_01_backup"
rm --recursive --force "build/2000-01-01_02_backup"
}
+# bats test_tags=backup:info,backup:cleanup
@test "success no backup to cleanup info" {
run main
assert_line --partial "ℹ️ INFO: no backup to cleanup"
}
+# bats test_tags=backup:info,backup:cleanup
@test "success cleanup one backup" {
local num=
for i in {1..5}; do
rmdir build/1999-*
}
+# bats test_tags=backup:info,backup:cleanup
@test "success cleanup four backup" {
local num=
for i in {1..5}; do
rmdir build/1999-*
}
+# bats test_tags=backup:info,backup:cleanup
@test "success cleanup four backup on same date" {
local num=
for i in {1..18}; do