Skip to content

Commit

Permalink
isofs.sh: Test genisoimage, xorriso and mksisofs
Browse files Browse the repository at this point in the history
Run test an all 3 tools: genisoimage, xorriso and mksisofs.

mkisofs, genisoimage and xorriso tools are present as separate tools in
some distros while in others they are symlinks to one another. Tests are
skipped on symlinks.

mkisofs supports only -hfs option
genisoimage supports both -hfs and -hfsplus options
xorrisofs supports only -hfsplus option

This actually fixes xorrisofs on CentOS which is a symlink to mkisofs
and because it does not supports -hfs test IMHO fails.

Link: https://lore.kernel.org/ltp/[email protected]/
Co-Authored-By: Petr Vorel <[email protected]>
Reviewed-by: Petr Vorel <[email protected]>
Reviewed-by: Cyril Hrubis <[email protected]>
Signed-off-by: Subramanya Swamy <[email protected]>
Signed-off-by: Petr Vorel <[email protected]>
  • Loading branch information
subramanya-swamy-linux and pevik committed Jan 29, 2024
1 parent e5970b2 commit 885abb8
Showing 1 changed file with 31 additions and 18 deletions.
49 changes: 31 additions & 18 deletions testcases/kernel/fs/iso9660/isofs.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (c) International Business Machines Corp., 2003
# Copyright (c) Linux Test Project, 2016-2021
# Copyright (c) Linux Test Project, 2016-2024
# Written by Prakash Narayana ([email protected])
# and Michael Reed ([email protected])
#
Expand All @@ -11,23 +11,12 @@

TST_NEEDS_CMDS="mount umount"
TST_NEEDS_TMPDIR=1
TST_SETUP=setup
TST_TESTFUNC=do_test
TST_CNT=3

MAX_DEPTH=3
MAX_DIRS=4

setup()
{
if tst_cmd_available mkisofs; then
MKISOFS_CMD="mkisofs"
elif tst_cmd_available genisoimage; then
MKISOFS_CMD="genisoimage"
else
tst_brk TCONF "please install mkisofs or genisoimage"
fi
}

gen_fs_tree()
{
local cur_path="$1"
Expand All @@ -50,10 +39,33 @@ do_test()
local make_file_sys_dir="$PWD/files"
local mkisofs_opt mount_opt

case $1 in
1) MKISOFS_CMD="mkisofs"
HFSOPT="-hfs -D"
GREPOPT="mkisofs";;
2) MKISOFS_CMD="genisoimage"
HFSOPT="-hfsplus -D -hfs -D"
GREPOPT="genisoimage";;
3) MKISOFS_CMD="xorrisofs"
HFSOPT="-hfsplus -D"
GREPOPT="xorriso";;
esac

if ! tst_cmd_available $MKISOFS_CMD; then
tst_res TCONF "Missing '$MKISOFS_CMD'"
return
fi

if ! $MKISOFS_CMD 2>&1 | head -n 2 | grep -q "$GREPOPT"; then
tst_res TCONF "'$MKISOFS_CMD' is a symlink to another tool"
return
fi

tst_res TINFO "Testing $MKISOFS_CMD"

mkdir -p -m 777 $mnt_point
mkdir -p $make_file_sys_dir

# Generated directories and files
mkdir -p $make_file_sys_dir
gen_fs_tree "$make_file_sys_dir" 1

Expand All @@ -62,15 +74,16 @@ do_test()
for mkisofs_opt in \
" " \
"-J" \
"-hfs -D" \
"$HFSOPT" \
" -R " \
"-R -J" \
"-f -l -D -J -allow-leading-dots -R" \
"-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -allow-leading-dots -R"
"-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J \
-allow-leading-dots -R"
do
rm -f isofs.iso
EXPECT_PASS $MKISOFS_CMD -o isofs.iso -quiet $mkisofs_opt $make_file_sys_dir 2\> /dev/null \
|| continue
EXPECT_PASS $MKISOFS_CMD -o isofs.iso -quiet $mkisofs_opt \
$make_file_sys_dir 2\> /dev/null || continue

for mount_opt in \
"loop" \
Expand Down

0 comments on commit 885abb8

Please sign in to comment.