tests/shared/partition.sh
#!/bin/bash PARTITION="/root/new_partition" create_partition() { # Some scenarios re-mount this device as '/tmp', therefore its size # needs to be enough for the produced logs. dd if=/dev/zero of=$PARTITION bs=1M count=200 mkfs.ext2 -F $PARTITION} # $1: The mount point# $2: The type of file system# $3: The additional mount optionsmake_fstab_given_partition_line() { local _mount_point="$1" _type="$2" _additional_mount_options="$3" test -z "$_additional_mount_options" || _additional_mount_options=",$_additional_mount_options" printf "%s %s %s rw%s 0 0\n" "$PARTITION" "$_mount_point" "$_type" "$_additional_mount_options" >> /etc/fstab} # $1: The mount pointmake_fstab_correct_partition_line() { make_fstab_given_partition_line "$1" "ext2" "nodev,noexec,nosuid"} make_fstab_bind_partition_line() { make_fstab_given_partition_line "$1" "none" "nodev,noexec,nosuid,bind"} # $1: The mount pointmount_partition() { mkdir -p "$1" mount --target "$1"} mount_bind_partition() { mkdir -p "$1" mount -B "$PARTITION" "$1"} umount_partition() { local _mount_point="$1" if mount | grep -E "\s+${_mount_point}\s+"; then echo "'$_mount_point' is mounted, will unmount it.." umount -nl "$_mount_point" else echo "'$_mount_point' is not mounted, skipping" fi} # $1: The path to umount and remove from /etc/fstabclean_up_partition() { path="$1" escaped_path=${path//$'/'/$'\/'} sed -i "/${escaped_path}/d" /etc/fstab if mountpoint -q -- "${path}"; thenDouble quote to prevent globbing and word splitting. umount -l ${path} fi}