123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #!/bin/sh
- # SPDX-License-Identifier: GPL-2.0-or-later
- # Copyright (c) International Business Machines Corp., 2001
- # Copyright (c) 2016 Cyril Hrubis <chrubis@suse.cz>
- # Author: Manoj Iyer <manjo@mail.utexas.edu>
- #
- # Tests basic functionality of eject command.
- TST_CNT=4
- TST_SETUP=setup
- TST_CLEANUP=cleanup
- TST_TESTFUNC=test
- TST_NEEDS_TMPDIR=1
- TST_NEEDS_ROOT=1
- TST_NEEDS_CMDS="eject"
- . tst_test.sh
- setup()
- {
- CD_DRIVE="/dev/cdrom"
- if ! [ -e "$CD_DRIVE" ]; then
- tst_brk TCONF "There is no "$CD_DRIVE""
- fi
- if grep -q "$CD_DRIVE" /proc/mounts; then
- tst_brk TCONF "$CD_DRIVE is already mounted"
- fi
- ROD mkdir "cdrom"
- }
- cleanup()
- {
- # We have to use the mount point since /dev/cdrom may be link to
- # /dev/sr0 and because of that /dev/cdrom is not listed in /proc/mounts
- tst_umount "$PWD/cdrom"
- }
- test1()
- {
- EXPECT_PASS eject -d \> eject.out
- if grep -q "eject: default device:" eject.out; then
- tst_res TPASS "Eject listed default device"
- else
- tst_res TFAIL "Eject failed to list default device"
- cat eject.out
- fi
- }
- test2()
- {
- EXPECT_PASS eject -v $CD_DRIVE \> eject.out
- if grep -q "CD-ROM eject command succeeded" eject.out; then
- # Close the tray if it is supported.
- eject -t $CD_DRIVE > /dev/null 2>&1
- tst_res TPASS "Drive successfully ejected"
- else
- tst_res TFAIL "Eject failed"
- cat eject.out
- fi
- }
- mount_cdrom()
- {
- local tries=100
- # Wait for the drive to spin up the disk
- while [ $tries -gt 0 ]; do
- eject_check_tray $CD_DRIVE
- if [ $? -eq 4 ]; then
- break
- fi
- tst_sleep 100ms
- tries=$((tries-1))
- done
- mount "$CD_DRIVE" cdrom/ > mount.out 2>&1
- if [ $? -eq 32 ]; then
- tst_res TCONF "Failed to mount $CD_DRIVE, no disk in drive?"
- cat mount.out
- return 0
- fi
- tst_res TINFO "$CD_DRIVE mounted sucessfully"
- return 1
- }
- test3()
- {
- if mount_cdrom; then
- return
- fi
- test2
- if grep -q "$CD_DRIVE" /proc/mounts; then
- tst_res TFAIL "$CD_DRIVE is stil moutned"
- else
- tst_res TPASS "$CD_DRIVE umounted succesfully"
- fi
- }
- test4()
- {
- if mount_cdrom; then
- return
- fi
- EXPECT_PASS eject -a on $CD_DRIVE
- eject_check_tray $CD_DRIVE
- if [ $? -eq 2 ]; then
- tst_brk TBROK "$CD_DRIVE is mounted but tray is open"
- fi
- EXPECT_PASS umount $CD_DRIVE
- eject_check_tray $CD_DRIVE
- if [ $? -eq 2 ]; then
- tst_res TPASS "$CD_DRIVE was auto-ejected"
- else
- tst_res TFAIL "$CD_DRIVE was not auto-ejected"
- fi
- EXPECT_PASS eject -a off $CD_DRIVE
- eject -t $CD_DRIVE > /dev/null 2>&1
- if mount_cdrom; then
- return
- fi
- EXPECT_PASS umount $CD_DRIVE
- eject_check_tray $CD_DRIVE
- if [ $? -eq 2 ]; then
- tst_res TFAIL "$CD_DRIVE was auto-ejected"
- else
- tst_res TPASS "$CD_DRIVE was not auto-ejected"
- fi
- }
- tst_run
|