]> gitweb.hhaalo.de Git - simple-backup.git/commitdiff
add write stat func
authorBastian Dehn <hhaalo@arcor.de>
Tue, 11 Aug 2026 15:40:07 +0000 (17:40 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 11 Aug 2026 15:40:07 +0000 (17:40 +0200)
src/backup
tests/backup_tests.bats

index d3f44f319a5caa746d12f8c08bb87e730c0f1f48..0d21c67bf220908523e876b57f19af2054627293 100755 (executable)
@@ -425,6 +425,33 @@ check_backup_date()
        done
 }
 
+update_stat()
+{
+       local config="$1"
+       local type=
+       local day=
+       local week=
+       local month=
+       stat_file=$(echo "$config" | jq --raw-output '.backup_stat_file')
+       [ "$stat_file" != "null" ] || return 0
+       [ -f "$stat_file" ] || printf "none%-.s\n" {1..3}  > "$stat_file"
+
+       type=$(get_backup_type "$config")
+       day=$(awk 'NR==1 {print; exit}' "$stat_file")
+       week=$(awk 'NR==2 {print; exit}' "$stat_file")
+       month=$(awk 'NR==3 {print; exit}' "$stat_file")
+
+       [ "$type" == "day" ] && day=$(get_date)
+       [ "$type" == "week" ] && week=$(get_date)
+       [ "$type" == "month" ] && month=$(get_date)
+
+       {
+               echo "$day"
+               echo "$week"
+               echo "$month"
+       } > "$stat_file"
+}
+
 main()
 {
        local only_check="$1"
index 28d86b3e75f4f99f13e9417fc35ed1b92412643c..1f223c716daac6df57a4650032b34f781e29fae2 100755 (executable)
@@ -1114,4 +1114,98 @@ teardown() {
        assert_line --index 0 "day   none       old"
        assert_line --index 1 "week  none       old"
        assert_line --index 2 "month 2000-01-01 old"
+}
+
+# bats test_tags=backup:stat
+@test "success update no stat config no file" {
+       mkdir --parents "build/test"
+       config="{}"
+       get_date() {
+               echo "2000-01-01"
+       }
+
+       run update_stat "$config" "none"
+
+       assert_success
+       [ ! -f "build/test/stats" ]
+}
+
+# bats test_tags=backup:stat
+@test "success update backup stat none" {
+       mkdir --parents "build/test"
+       config='{"backup_stat_file": "build/test/stats"}'
+       get_date() {
+               echo "2000-01-01"
+       }
+
+       run update_stat "$config"
+
+       assert_success
+       [ -f "build/test/stats" ]
+       assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "none"
+       assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "none"
+       assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "none"
+}
+
+# bats test_tags=backup:stat
+@test "success update backup stat day" {
+       mkdir --parents "build/test"
+       touch "build/test/day"
+       config='{
+               "backup_path": "build/test",
+               "backup_stat_file": "build/test/stats"
+               }'
+       get_date() {
+               echo "2000-01-01"
+       }
+
+       run update_stat "$config"
+
+       assert_success
+       [ -f "build/test/stats" ]
+       assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "2000-01-01"
+       assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "none"
+       assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "none"
+}
+
+# bats test_tags=backup:stat
+@test "success update backup stat week" {
+       mkdir --parents "build/test"
+       touch "build/test/week"
+       config='{
+               "backup_path": "build/test",
+               "backup_stat_file": "build/test/stats"
+               }'
+       get_date() {
+               echo "2000-01-01"
+       }
+
+       run update_stat "$config"
+
+       assert_success
+       [ -f "build/test/stats" ]
+       assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "none"
+       assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "2000-01-01"
+       assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "none"
+}
+
+# bats test_tags=backup:stat
+@test "success update backup stat month" {
+       mkdir --parents "build/test"
+       touch "build/test/month"
+       config='{
+               "backup_path": "build/test",
+               "backup_stat_file": "build/test/stats"
+               }'
+       get_date() {
+               echo "2000-01-01"
+       }
+
+       run update_stat "$config"
+
+       assert_success
+       [ -f "build/test/stats" ]
+       assert_equal "$(awk 'NR==1 {print; exit}' "build/test/stats")" "none"
+       assert_equal "$(awk 'NR==2 {print; exit}' "build/test/stats")" "none"
+       assert_equal "$(awk 'NR==3 {print; exit}' "build/test/stats")" "2000-01-01"
 }
\ No newline at end of file