| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/bin/bash
- # SPDX-License-Identifier: GPL-2.0
- #
- # Run filesystem operations tests on an 1 MiB disk image that is formatted with
- # a vfat filesystem and mounted in a temporary directory using a loop device.
- #
- # Copyright 2022 Red Hat Inc.
- # Author: Javier Martinez Canillas <javierm@redhat.com>
- set -e
- set -u
- set -o pipefail
- BASE_DIR="$(dirname $0)"
- TMP_DIR="$(mktemp -d /tmp/fat_tests_tmp.XXXXXX)"
- IMG_PATH="${TMP_DIR}/fat.img"
- MNT_PATH="${TMP_DIR}/mnt"
- cleanup()
- {
- mountpoint -q "${MNT_PATH}" && unmount_image
- rm -rf "${TMP_DIR}"
- }
- trap cleanup SIGINT SIGTERM EXIT
- create_loopback()
- {
- touch "${IMG_PATH}"
- chattr +C "${IMG_PATH}" >/dev/null 2>&1 || true
- truncate -s 1M "${IMG_PATH}"
- mkfs.vfat "${IMG_PATH}" >/dev/null 2>&1
- }
- mount_image()
- {
- mkdir -p "${MNT_PATH}"
- sudo mount -o loop "${IMG_PATH}" "${MNT_PATH}"
- }
- rename_exchange_test()
- {
- local rename_exchange="${BASE_DIR}/rename_exchange"
- local old_path="${MNT_PATH}/old_file"
- local new_path="${MNT_PATH}/new_file"
- echo old | sudo tee "${old_path}" >/dev/null 2>&1
- echo new | sudo tee "${new_path}" >/dev/null 2>&1
- sudo "${rename_exchange}" "${old_path}" "${new_path}" >/dev/null 2>&1
- sudo sync -f "${MNT_PATH}"
- grep new "${old_path}" >/dev/null 2>&1
- grep old "${new_path}" >/dev/null 2>&1
- }
- rename_exchange_subdir_test()
- {
- local rename_exchange="${BASE_DIR}/rename_exchange"
- local dir_path="${MNT_PATH}/subdir"
- local old_path="${MNT_PATH}/old_file"
- local new_path="${dir_path}/new_file"
- sudo mkdir -p "${dir_path}"
- echo old | sudo tee "${old_path}" >/dev/null 2>&1
- echo new | sudo tee "${new_path}" >/dev/null 2>&1
- sudo "${rename_exchange}" "${old_path}" "${new_path}" >/dev/null 2>&1
- sudo sync -f "${MNT_PATH}"
- grep new "${old_path}" >/dev/null 2>&1
- grep old "${new_path}" >/dev/null 2>&1
- }
- unmount_image()
- {
- sudo umount "${MNT_PATH}" &> /dev/null
- }
- create_loopback
- mount_image
- rename_exchange_test
- rename_exchange_subdir_test
- unmount_image
- exit 0
|