#! /bin/bash do_diff() { mount -t vfat ${TEST_DRIVE}1 $TEST_MOUNT_POINT > /dev/null if diff -rq $1 $2 >> test_log; then ped_test_ok else ped_test_failed fi umount $TEST_MOUNT_POINT 2>&1 > /dev/null } do_test_diff() { ped_testing "$1" if ped_test_get_val "$4" "$5" "$6" "$7"; then ped_test_failed return 1 fi do_diff "$2" "$3" } test_mkpartfs() { ped_test "mkpartfs fat16 minimum size"\ "mklabel $TEST_FS_USE_DISK_LABEL\ mkpartfs primary fat16 0 1\ check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" ped_test "mkpartfs fat32 minimum size"\ "mklabel $TEST_FS_USE_DISK_LABEL\ mkpartfs primary fat32 0 1\ check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" ped_test "mkpartfs"\ "mklabel $TEST_FS_USE_DISK_LABEL\ mkpartfs primary fat32 1 $DEFAULT_END\ check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" ped_test "mkfs"\ "mkfs 1 fat32\ check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" } prepare_resize_tests() { part_num=1 part=$TEST_DRIVE$part_num hole_parent=`echo $TEST_DATA_HOLE | sed -e "s/[-_.a-zA-Z0-9]+\///g"` umount $TEST_MOUNT_POINT 2>&1 > /dev/null mount $part $TEST_MOUNT_POINT -t vfat \ && cp -r $TEST_DATA/* $TEST_MOUNT_POINT \ && cp -r $TEST_DATA $TEST_MOUNT_POINT/tmp_copy \ && rm -rf $TEST_MOUNT_POINT/$TEST_DATA_HOLE \ && mv $TEST_MOUNT_POINT/tmp_copy/$TEST_DATA_HOLE \ $TEST_MOUNT_POINT/$hole_parent \ && rm -rf $TEST_MOUNT_POINT/tmp_copy umount $TEST_MOUNT_POINT } clearfat() { $TEST_PARTED_CLEARFAT $TEST_DRIVE $1 } test_resize_move_start_forward() { # geometry beforehand: 1 to $DEFAULT_END do_test_diff "resize: move start forward"\ $TEST_DATA $TEST_MOUNT_POINT \ "resize 1 5 $DEFAULT_END check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" clearfat 1 } test_resize_move_start_backward() { # geometry beforehand: 5 to $DEFAULT_END do_test_diff "resize: move start backward"\ $TEST_DATA $TEST_MOUNT_POINT \ "resize 1 1 $DEFAULT_END check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" clearfat 1 } test_resize_move_end_forward() { # geometry beforehand: 1 to $DEFAULT_END do_test_diff "resize: move end forward"\ $TEST_DATA $TEST_MOUNT_POINT \ "resize 1 1 $[ $DEFAULT_END + 5 ] check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" clearfat 1 } test_resize_move_end_backward() { # geometry beforehand: 1 to $[$DEFAULT_END + 5] do_test_diff "resize: move end backward"\ $TEST_DATA $TEST_MOUNT_POINT \ "resize 1 1 $DEFAULT_END check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" clearfat 1 } test_convert_fat16_fat32_shrink_cluster() { # geometry beforehand: 1 to $DEFAULT_END do_test_diff \ "resize: convert from FAT16 to FAT32, shrinking the cluster size"\ $TEST_DATA $TEST_MOUNT_POINT \ "resize 1 1 $FAT32_END check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" clearfat 1 } test_convert_fat32_fat16() { # geometry beforehand: 1 to $FAT16_SMALL_END do_test_diff "resize: convert from FAT32 to FAT16"\ $TEST_DATA $TEST_MOUNT_POINT \ "resize 1 1 $FAT32_END check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" clearfat 1 } test_convert_fat16_fat32() { # geometry beforehand: 1 to $FAT32_END do_test_diff "resize: convert from FAT16 to FAT32"\ $TEST_DATA $TEST_MOUNT_POINT \ "resize 1 1 $FAT16_SMALL_END check 1"\ "/sbin/dosfsck ${TEST_DRIVE}1" clearfat 1 } #test_convert_fat32_fat16_shrink_cluster() #{ #} #test_fat16_shrink_cluster() #{ #} #test_fat32_shrink_cluster() #{ #} main() { export DEFAULT_END=300 export FAT32_END=600 export FAT16_SMALL_END=200 if ! test_mkpartfs; then return 1 fi prepare_resize_tests test_resize_move_start_forward test_resize_move_start_backward test_resize_move_end_forward test_resize_move_end_backward # prepare_resize_tests test_convert_fat16_fat32_shrink_cluster test_convert_fat32_fat16 test_convert_fat16_fat32 } main