Update run.sh

* Add test case
This commit is contained in:
abraunegg 2026-02-18 13:31:50 +11:00
commit 011afcf140

View file

@ -72,6 +72,104 @@ else
add_fail "$TC_ID" "$TC_NAME" "onedrive exited with code ${rc}"
fi
###############################################
# Test Case 0002: upload-only does not download
###############################################
TC_ID="0002"
TC_NAME="upload-only: uploads local changes, does not download remote-only changes"
REMOTE_PREFIX="ci_e2e/${RUN_ID}/${E2E_TARGET}/upload_only"
SEED_DIR="${RUNNER_TEMP:-/tmp}/seed-${E2E_TARGET}-${RUN_ID}"
UP_DIR="${RUNNER_TEMP:-/tmp}/uploadonly-${E2E_TARGET}-${RUN_ID}"
VERIFY_DIR="${RUNNER_TEMP:-/tmp}/verify-${E2E_TARGET}-${RUN_ID}"
SEED_LOG="${OUT_DIR}/tc0002-seed.log"
UP_LOG="${OUT_DIR}/tc0002-uploadonly.log"
VERIFY_LOG="${OUT_DIR}/tc0002-verify.log"
REMOTE_ONLY_FILE="remote_only_${RUN_ID}.txt"
LOCAL_ONLY_FILE="local_only_${RUN_ID}.txt"
echo "Running test case ${TC_ID}: ${TC_NAME}"
echo "Remote prefix: ${REMOTE_PREFIX}"
rm -rf "$SEED_DIR" "$UP_DIR" "$VERIFY_DIR"
mkdir -p "$SEED_DIR" "$UP_DIR" "$VERIFY_DIR"
# Step A: Create a file and upload it via the seeder dir
# This makes it "remote-only" relative to UP_DIR (because UP_DIR has never synced yet)
echo "Created remotely by seeder at run ${RUN_ID}" > "${SEED_DIR}/${REMOTE_ONLY_FILE}"
set +e
"$ONEDRIVE_BIN" \
--sync \
--verbose \
--syncdir "$SEED_DIR" \
--single-directory "$REMOTE_PREFIX" \
2>&1 | tee "$SEED_LOG"
rc_seed=${PIPESTATUS[0]}
set -e
if [ "$rc_seed" -ne 0 ]; then
add_fail "$TC_ID" "$TC_NAME" "Seeder sync failed (exit code ${rc_seed})"
else
# Step B: Create a local-only file in the upload-only dir
echo "Created locally for upload-only at run ${RUN_ID}" > "${UP_DIR}/${LOCAL_ONLY_FILE}"
# Step C: Run upload-only sync. It must NOT download REMOTE_ONLY_FILE.
set +e
"$ONEDRIVE_BIN" \
--sync \
--verbose \
--upload-only \
--syncdir "$UP_DIR" \
--single-directory "$REMOTE_PREFIX" \
2>&1 | tee "$UP_LOG"
rc_up=${PIPESTATUS[0]}
set -e
if [ "$rc_up" -ne 0 ]; then
add_fail "$TC_ID" "$TC_NAME" "Upload-only sync failed (exit code ${rc_up})"
else
# Assertion 1: upload-only must NOT download the remote-only file
if [ -f "${UP_DIR}/${REMOTE_ONLY_FILE}" ]; then
add_fail "$TC_ID" "$TC_NAME" "Upload-only unexpectedly downloaded remote-only file: ${REMOTE_ONLY_FILE}"
else
# Step D: Verify the local-only file exists online by doing a download-only into VERIFY_DIR
set +e
"$ONEDRIVE_BIN" \
--sync \
--verbose \
--download-only \
--syncdir "$VERIFY_DIR" \
--single-directory "$REMOTE_PREFIX" \
2>&1 | tee "$VERIFY_LOG"
rc_ver=${PIPESTATUS[0]}
set -e
if [ "$rc_ver" -ne 0 ]; then
add_fail "$TC_ID" "$TC_NAME" "Verifier download-only failed (exit code ${rc_ver})"
elif [ ! -f "${VERIFY_DIR}/${LOCAL_ONLY_FILE}" ]; then
add_fail "$TC_ID" "$TC_NAME" "Uploaded file not found online (not downloaded by verifier): ${LOCAL_ONLY_FILE}"
else
# Optional log validations (soft but useful):
# - upload-only log should mention local file name
# - upload-only log should NOT mention the remote-only file name
if ! grep -Fq "$LOCAL_ONLY_FILE" "$UP_LOG"; then
add_fail "$TC_ID" "$TC_NAME" "Upload-only log did not mention uploaded file: ${LOCAL_ONLY_FILE}"
elif grep -Fq "$REMOTE_ONLY_FILE" "$UP_LOG"; then
add_fail "$TC_ID" "$TC_NAME" "Upload-only log mentioned remote-only file (possible download): ${REMOTE_ONLY_FILE}"
else
add_pass "$TC_ID" "$TC_NAME"
fi
fi
fi
fi
fi
###############################################
# Write results.json
###############################################