#!/bin/sh # Создаёт отдельный FAT16 HDD для интеграционных тестов Commander. # Аргументы: [образ [исполняемый файл]]; по умолчанию — локальный build/HDD. set -eu : "${SPRINTER_ROOT:?задайте SPRINTER_ROOT для упаковки HDD}" PROJECT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) DEFAULT_IMAGE="$PROJECT_DIR/build/hdd/p3_stress.chd" IMAGE=${1:-$DEFAULT_IMAGE} EXECUTABLE=${2:-$PROJECT_DIR/build/sprcmd.exe} TEMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/sprcmd-hdd.XXXXXX") FIXTURE_ROOT="$TEMP_DIR/P3DATA" cleanup() { rm -rf -- "$TEMP_DIR" } trap cleanup EXIT HUP INT TERM mkdir -p "$(dirname -- "$IMAGE")" mkdir "$FIXTURE_ROOT" mkdir "$FIXTURE_ROOT/EMPTY" "$FIXTURE_ROOT/TESTDIR" \ "$FIXTURE_ROOT/MANY" "$FIXTURE_ROOT/BIGDIR" cp "$PROJECT_DIR/tests/p3_data/INNER.TXT" \ "$FIXTURE_ROOT/TESTDIR/INNER.TXT" i=0 while [ "$i" -lt 40 ]; do name=$(printf 'M%07d.TXT' "$i") cp "$PROJECT_DIR/tests/p3_data/P3ROOT.TXT" \ "$FIXTURE_ROOT/MANY/$name" i=$((i + 1)) done i=0 while [ "$i" -lt 680 ]; do name=$(printf 'B%07d.DAT' "$i") cp "$PROJECT_DIR/tests/p3_data/P3ROOT.TXT" \ "$FIXTURE_ROOT/BIGDIR/$name" i=$((i + 1)) done cp "$PROJECT_DIR/tests/p3_data/P3ROOT.TXT" "$FIXTURE_ROOT/P3ROOT.TXT" cp "$PROJECT_DIR/tests/p3_data/ZETA.BIN" "$FIXTURE_ROOT/ZETA.BIN" "$SPRINTER_ROOT/toolchain/make_hdd.sh" "$IMAGE" \ "$EXECUTABLE" \ "$FIXTURE_ROOT/EMPTY" "$FIXTURE_ROOT/TESTDIR" \ "$FIXTURE_ROOT/MANY" "$FIXTURE_ROOT/BIGDIR" \ "$FIXTURE_ROOT/P3ROOT.TXT" "$FIXTURE_ROOT/ZETA.BIN" echo "P3 stress HDD ready: $IMAGE (D:, executable: SPRCMD.EXE)"