mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-08 19:42:12 +00:00
A syntactically broken file keeps the loaded document and is moved aside, but a blank file parses fine — so check_disk adopted the empty document before its blankness test ran, and the next save wrote only the known values: comments and unknown sections loaded at startup were deleted silently, with no error and no backup (blank text is never written as a backup either, so on a file's first save the content was unrecoverable). The crate itself treats blank as untrustworthy for the backup (recovery.rs: 'a blank or unparsable file must never replace the previous backup') and the docs promise comments and unknown keys survive saves. Blank text is now rejected up front, before it can replace the document. Regression test: an_emptied_file_is_not_adopted_over_the_loaded_document — fails today (comments and unknown sections missing after the second save), passes with the early return; the existing backup test keeps passing.