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


TS_TOPDIR="${0%/*}/../.."
TS_DESC="GPT"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_SFDISK"
ts_check_test_command "$TS_CMD_FDISK"
ts_check_test_command "$TS_CMD_WIPEFS"

ts_skip_nonroot

# set global variable TS_DEVICE
ts_scsi_debug_init dev_size_mb=50 sector_size=512 physblk_exp=3

ts_init_subtest "type-and-id"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start=2048,  size=6144, Id=44479540-F297-41B2-9AF7-D131D5F0458A, uuid=4dd6948a-44f8-4e6c-8bdc-064f740704f8
${TS_DEVICE}2 : start=8192,  size=6144, id=44479540-F297-41B2-9AF7-D131D5F0458A, uuid=44b51def-5f04-465a-91aa-2889a62d8e49
${TS_DEVICE}3 : start=14336, size=6144, type=44479540-F297-41B2-9AF7-D131D5F0458A, uuid=643e1d0d-bc02-4ced-b83b-86121062858f
${TS_DEVICE}4 : start=20480, size=81887,Type=44479540-F297-41B2-9AF7-D131D5F0458A, uuid=d2a29b0a-fdee-40c3-9bae-b9fa782c986c
EOF
udevadm settle
$TS_CMD_SFDISK --list -o START,END,SIZE,UUID,TYPE,NAME ${TS_DEVICE} >> $TS_OUTPUT 2>&1
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest

ts_init_subtest "separator"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start=2048 size=6144   uuid=4dd6948a-44f8-4e6c-8bdc-064f740704f8
${TS_DEVICE}2 : start=8192,size=6144,  uuid=44b51def-5f04-465a-91aa-2889a62d8e49 ,type=44479540-F297-41B2-9AF7-D131D5F0458A
${TS_DEVICE}3 : start=14336 , size=6144 ,uuid=643e1d0d-bc02-4ced-b83b-86121062858f
${TS_DEVICE}4 : start=20480; size=81887 ;     uuid=d2a29b0a-fdee-40c3-9bae-b9fa782c986c
EOF
udevadm settle
$TS_CMD_SFDISK --list -o START,END,SIZE,UUID,TYPE,NAME ${TS_DEVICE} >> $TS_OUTPUT 2>&1
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "quotes"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start=2048  uuid="4dd6948a-44f8-4e6c-8bdc-064f740704f8" size=6144
${TS_DEVICE}2 : start= 8192  uuid="44b51def-5f04-465a-91aa-2889a62d8e49" , size=6144
${TS_DEVICE}3: start=14336 uuid="643e1d0d-bc02-4ced-b83b-86121062858f",size=6144
${TS_DEVICE}4  : start=20480 uuid="d2a29b0a-fdee-40c3-9bae-b9fa782c986c",     size=6144
EOF
udevadm settle
$TS_CMD_SFDISK --list -o START,END,SIZE,UUID,TYPE,NAME ${TS_DEVICE} >> $TS_OUTPUT 2>&1
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "broken-1"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start =2048  uuid="4dd6948a-44f8-4e6c-8bdc-064f740704f8" size=6144
EOF
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "broken-2"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start=2048uuid="4dd6948a-44f8-4e6c-8bdc-064f740704f8" size=6144
EOF
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "broken-3"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start=2048 uuid=,"4dd6948a-44f8-4e6c-8bdc-064f740704f8" size=6144
EOF
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "broken-4"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start=2048 uuid="4dd6948a-44f8-4e6c-8bdc-064f740704f8 size=6144
EOF
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest


ts_init_subtest "broken-5"
$TS_CMD_WIPEFS -a ${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_SFDISK ${TS_DEVICE} >> $TS_OUTPUT 2>&1 <<EOF
unit: sectors
label: gpt
label-id: 3b8559db-33af-43e9-befc-c331d829b539

${TS_DEVICE}1 : start=2048 uuid=4dd6948a-44f8-4e6c-8bdc-064f740704f8" size=6144
EOF
ts_fdisk_clean $TS_DEVICE
ts_finalize_subtest

ts_finalize
