| #! /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 | |