/** * Copyright (c) 2026 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "save/save.h" /** * Points $HOME at a fresh, empty temporary directory and resets the global * SAVE state via the real saveInit(). Save tests run against the real Linux * filesystem backend (there is no fake/mockable platform layer to swap in - * the platform hooks are compile-time macros, not function pointers), so * this sandboxing is what keeps tests from touching the real user's * $HOME/.dusk/saves. Matches cmocka's CMUnitTestSetup signature - pass * directly to cmocka_unit_test_setup_teardown. */ int saveTestFixtureSetup(void **state); /** * Recursively removes the temporary $HOME directory tree created by * saveTestFixtureSetup and restores the real $HOME. Matches cmocka's * CMUnitTestTeardown signature - pass directly to * cmocka_unit_test_setup_teardown. */ int saveTestFixtureTeardown(void **state); /** * Places a regular file where the ".dusk" directory needs to go, so a * subsequent availability check's mkdirp() call fails with ENOTDIR instead * of succeeding. Used to deterministically exercise the "device unavailable * because its directory couldn't be created" path without relying on real * filesystem permission tricks. Must be called after saveTestFixtureSetup. */ void saveTestFixtureBlockSaveDirectory(void);