| #!/bin/bash |
| # |
| # This file is part of util-linux. |
| # |
| # This file is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This file is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # |
| # Create partition in non-interactive mode; like mkpart, but partition is fully |
| # specifuied by partno, start and size. |
| # |
| |
| TS_TOPDIR="${0%/*}/../.." |
| TS_DESC="mkpart-full" |
| |
| . $TS_TOPDIR/functions.sh |
| ts_init "$*" |
| |
| TESTPROG="$TS_HELPER_LIBFDISK_MKPART_FULLSPEC" |
| ts_check_test_command "$TESTPROG" |
| ts_check_test_command "$TS_CMD_SFDISK" |
| ts_check_test_command "$TS_CMD_WIPEFS" |
| |
| TEST_IMAGE_NAME=$(ts_image_init 15) |
| |
| ts_init_subtest "mbr-primary" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 3,6144,2048 \ |
| 4,8192,22528 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| |
| ts_init_subtest "mbr-primary-nopartno" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} -- \ |
| -,2048,2048 \ |
| -,4096,2048 \ |
| -,6144,2048 \ |
| -,8192,22528 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ## no extended but partno > 4 requested |
| ts_init_subtest "mbr-err-primary" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 7,6144,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ## no extended but partno > 4 requested |
| ts_init_subtest "mbr-err-nospace" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 3,4096,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| |
| ts_init_subtest "mbr-logical" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 3,6144,2048 \ |
| 4,8192,22528 \ |
| 5,10240,2048 \ |
| 6,14336,2048 \ |
| 7,18432,12288 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ts_init_subtest "mbr-nopartno" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} -- \ |
| -,2048,2048 \ |
| -,4096,2048 \ |
| -,6144,2048 \ |
| -,8192,22528 \ |
| -,10240,2048 \ |
| -,14336,2048 \ |
| -,18432,12288 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ### 6th partition (logical) out of extended |
| ts_init_subtest "mbr-err-logical" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 3,6144,2048 \ |
| 4,8192,22528 \ |
| 5,10240,2048 \ |
| 6,4096,2048 \ |
| 7,18432,12288 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ts_init_subtest "mbr-space-gap" |
| $TESTPROG --label mbr --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,6144,2048 \ |
| 3,8192,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ts_init_subtest "gpt" |
| $TESTPROG --label gpt --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 3,6144,2048 \ |
| 4,8192,2048 \ |
| 5,10240,2048 \ |
| 6,12288,2048 \ |
| 7,14336,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ts_init_subtest "gpt-nopartno" |
| $TESTPROG --label gpt --device ${TEST_IMAGE_NAME} -- \ |
| -,2048,2048 \ |
| -,4096,2048 \ |
| -,6144,2048 \ |
| -,8192,2048 \ |
| -,10240,2048 \ |
| -,12288,2048 \ |
| -,14336,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ### 4th partition overlap 4th and 5th |
| ts_init_subtest "gpt-err-overlap" |
| $TESTPROG --label gpt --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 3,6144,2048 \ |
| 4,5000,2048 \ |
| 5,10240,2048 \ |
| 6,12288,2048 \ |
| 7,14336,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ts_init_subtest "gpt-partno-gap" |
| $TESTPROG --label gpt --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,4096,2048 \ |
| 4,6144,2048 \ |
| 5,8192,2048 \ |
| 7,10240,2048 \ |
| 8,12288,2048 \ |
| 9,14336,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| $TS_CMD_WIPEFS --all --force ${TEST_IMAGE_NAME} &> /dev/null |
| |
| ts_init_subtest "gpt-space-gap" |
| $TESTPROG --label gpt --device ${TEST_IMAGE_NAME} \ |
| 1,2048,2048 \ |
| 2,6144,2048 \ |
| 3,8192,2048 \ |
| 4,12288,2048 \ |
| 5,14336,2048 \ |
| >> $TS_OUTPUT 2>&1 |
| $TS_CMD_SFDISK --list ${TEST_IMAGE_NAME} >> $TS_OUTPUT 2>&1 |
| ts_fdisk_clean ${TEST_IMAGE_NAME} |
| ts_finalize_subtest |
| |
| |
| |
| ts_finalize |