summaryrefslogtreecommitdiffstats
path: root/usr.bin/mkimg
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2017-03-30 06:20:24 +0000
committerngie <ngie@FreeBSD.org>2017-03-30 06:20:24 +0000
commit9e3201421004311eb511297aa3f5b73721d44484 (patch)
tree6246257382c216e919a3fe0a5507d3c0636080b3 /usr.bin/mkimg
parentd7afc0b192ce298496f1924a40713cf03caef24a (diff)
downloadFreeBSD-src-9e3201421004311eb511297aa3f5b73721d44484.zip
FreeBSD-src-9e3201421004311eb511297aa3f5b73721d44484.tar.gz
MFC r315776:
Rename tests from <foo> to <foo>_test to match the FreeBSD test suite naming scheme usr.bin/diff/diff_test was renamed to usr.bin/diff/netbsd_diff_test to avoid collisions with the renamed FreeBSD test.
Diffstat (limited to 'usr.bin/mkimg')
-rw-r--r--usr.bin/mkimg/tests/Makefile2
-rwxr-xr-xusr.bin/mkimg/tests/mkimg_test.sh164
2 files changed, 165 insertions, 1 deletions
diff --git a/usr.bin/mkimg/tests/Makefile b/usr.bin/mkimg/tests/Makefile
index 321a5a6..bdf9a78 100644
--- a/usr.bin/mkimg/tests/Makefile
+++ b/usr.bin/mkimg/tests/Makefile
@@ -2,7 +2,7 @@
PACKAGE= tests
-ATF_TESTS_SH= mkimg
+ATF_TESTS_SH= mkimg_test
SOURCES!= cd ${.CURDIR}; echo *.uu
${PACKAGE}FILES+= ${SOURCES:S,.gz.uu,,g}
diff --git a/usr.bin/mkimg/tests/mkimg_test.sh b/usr.bin/mkimg/tests/mkimg_test.sh
new file mode 100755
index 0000000..76abceb
--- /dev/null
+++ b/usr.bin/mkimg/tests/mkimg_test.sh
@@ -0,0 +1,164 @@
+# $FreeBSD$
+
+mkimg_blksz_list="512 4096"
+mkimg_format_list="qcow qcow2 raw vhd vhdf vmdk"
+mkimg_geom_list="1x1 63x255"
+mkimg_scheme_list="apm bsd ebr gpt mbr vtoc8"
+
+bootcode()
+{
+ case $1 in
+ bsd) echo 8192 ;;
+ gpt|mbr) echo 512 ;;
+ *) echo 0 ;;
+ esac
+ return 0
+}
+
+mkcontents()
+{
+ local byte count name
+
+ byte=$1
+ count=$2
+
+ name=_tmp-$byte-$count.bin
+ jot -b $byte $(($count/2)) > $name
+ echo $name
+ return 0
+}
+
+makeimage()
+{
+ local blksz bootarg bootsz format geom nhds nsecs partarg pfx scheme
+
+ format=$1
+ scheme=$2
+ blksz=$3
+ geom=$4
+ pfx=$5
+ shift 5
+
+ nsecs=${geom%x*}
+ nhds=${geom#*x}
+
+ bootsz=`bootcode $scheme`
+ if test $bootsz -gt 0; then
+ bootarg="-b `mkcontents B $bootsz`"
+ else
+ bootarg=""
+ fi
+
+ partarg=""
+ for P in $*; do
+ partarg="$partarg -p $P"
+ done
+ if test -z "$partarg"; then
+ local swap ufs
+ swap="-p freebsd-swap::128K"
+ ufs="-p freebsd-ufs:=`mkcontents P 4194304`"
+ partarg="$ufs $swap"
+ fi
+
+ imagename=$pfx-$geom-$blksz-$scheme.$format
+
+ mkimg -y -f $format -o $imagename -s $scheme -P $blksz -H $nhds -T $nsecs \
+ $bootarg $partarg
+ echo $imagename
+ return 0
+}
+
+mkimg_rebase()
+{
+ local baseline image result tmpfile update
+
+ image=$1
+ result=$2
+
+ baseline=$image.gz.uu
+ update=yes
+
+ if test -f $baseline; then
+ tmpfile=_tmp-baseline
+ uudecode -p $baseline | gunzip -c > $tmpfile
+ if cmp -s $tmpfile $result; then
+ update=no
+ fi
+ fi
+
+ if test $update = yes; then
+ # Prevent keyword expansion when writing the keyword.
+ (echo -n '# $'; echo -n FreeBSD; echo '$') > $baseline
+ gzip -c $result | uuencode $image.gz >> $baseline
+ fi
+
+ rm $image $result _tmp-*
+ return 0
+}
+
+mkimg_test()
+{
+ local blksz format geom scheme
+
+ geom=$1
+ blksz=$2
+ scheme=$3
+ format=$4
+
+ case $scheme in
+ ebr|mbr)
+ bsd=`makeimage raw bsd $blksz $geom _tmp`
+ partinfo="freebsd:=$bsd"
+ ;;
+ *)
+ partinfo=""
+ ;;
+ esac
+ image=`makeimage $format $scheme $blksz $geom img $partinfo`
+ result=$image.out
+ hexdump -C $image > $result
+ if test "x$mkimg_update_baseline" = "xyes"; then
+ mkimg_rebase $image $result
+ else
+ baseline=`atf_get_srcdir`/$image
+ atf_check -s exit:0 cmp -s $baseline $result
+ fi
+ return 0
+}
+
+atf_test_case rebase
+rebase_body()
+{
+ local nm
+
+ mkimg_update_baseline=yes
+ for nm in $mkimg_tests; do
+ ${nm}_body
+ done
+ return 0
+}
+
+atf_init_test_cases()
+{
+ local B F G S nm
+
+ for G in $mkimg_geom_list; do
+ for B in $mkimg_blksz_list; do
+ for S in $mkimg_scheme_list; do
+ for F in $mkimg_format_list; do
+ nm="${S}_${G}_${B}_${F}"
+ atf_test_case $nm
+ eval "${nm}_body() { mkimg_test $G $B $S $F; }"
+ mkimg_tests="${mkimg_tests} ${nm}"
+ atf_add_test_case $nm
+ done
+ done
+ done
+ done
+
+ # XXX hack to make updating the baseline easier
+ if test "${__RUNNING_INSIDE_ATF_RUN}" != "internal-yes-value"; then
+ atf_add_test_case rebase
+ fi
+}
+
OpenPOWER on IntegriCloud