_common_setup() {
local setup_git=false
while [[ $# -gt 0 ]]; do
case $1 in
--git)
setup_git=true
shift
;;
*)
shift
;;
esac
done
load 'test_helper/bats-support/load'
load 'test_helper/bats-assert/load'
load 'test_helper/bats-file/load'
load 'test_helper/assertions'
load 'test_helper/setup_helpers'
export PROJECT_ROOT="$BATS_TEST_DIRNAME/.."
export BATS_TMPDIR="$PROJECT_ROOT/tmp"
TEST_TEMP_DIR="$(temp_make --prefix 'fnox-test-')"
mkdir -p "$TEST_TEMP_DIR"
cd "$TEST_TEMP_DIR" || exit 1
if [[ $setup_git == true ]]; then
export GIT_CONFIG_NOSYSTEM=1
export GIT_CONFIG_GLOBAL="$TEST_TEMP_DIR/.gitconfig"
git config --global init.defaultBranch main
git config --global user.email "test@example.com"
git config --global user.name "Test User"
git init . 2>/dev/null || true fi
if [[ -f "$PROJECT_ROOT/target/debug/fnox" ]]; then
export FNOX_BIN="$PROJECT_ROOT/target/debug/fnox"
elif [[ -f "$PROJECT_ROOT/target/release/fnox" ]]; then
export FNOX_BIN="$PROJECT_ROOT/target/release/fnox"
else
echo "Error: fnox binary not found. Please run 'cargo build' first." >&2
exit 1
fi
chmod +x "$FNOX_BIN"
local fnox_dir
fnox_dir="$(dirname "$FNOX_BIN")"
export PATH="$fnox_dir:$PATH"
export HOME="$TEST_TEMP_DIR"
export FNOX_CONFIG_FILE="$TEST_TEMP_DIR/fnox.toml"
unset __FNOX_SESSION
unset XDG_CONFIG_HOME
unset XDG_STATE_HOME
rm -f "$FNOX_CONFIG_FILE"
}
_common_teardown() {
chmod -R u+w "$TEST_TEMP_DIR"
temp_del "$TEST_TEMP_DIR"
}