wait_for_process() {
local pid="$1"
local timeout="${2:-30}"
local count=0
while kill -0 "$pid" 2>/dev/null && [[ $count -lt $timeout ]]; do
sleep 1
((count++))
done
if kill -0 "$pid" 2>/dev/null; then
kill "$pid" 2>/dev/null
return 1
fi
wait "$pid"
return $?
}
create_temp_file() {
local filename="$1"
local content="$2"
echo "$content" >"$filename"
}
cleanup_fnox_processes() {
if command -v pkill >/dev/null 2>&1; then
pkill -f "$FNOX_BIN" 2>/dev/null || true
fi
}
setup_mock_provider() {
local provider_name="$1"
cat >"mock-$provider_name.sh" <<'EOF'
#!/bin/bash
echo "Mock provider called with: $*"
exit 0
EOF
chmod +x "mock-$provider_name.sh"
export PATH=".:$PATH"
}
simulate_delay() {
local seconds="$1"
sleep "$seconds"
}
generate_large_secret() {
local size="$1"
head -c "$size" </dev/zero | tr '\0' 'A'
}
create_test_dir_structure() {
mkdir -p test_dir/subdir
echo "test file" >test_dir/test_file.txt
echo "subdir file" >test_dir/subdir/sub_file.txt
}