1# 2# Copyright (c) 2017 Kyle Evans <kevans@FreeBSD.org> 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24# SUCH DAMAGE. 25# 26# $FreeBSD: stable/11/usr.bin/hexdump/tests/hexdump_test.sh 359290 2020-03-25 00:31:42Z kevans $ 27 28ENDIAN=el 29ret=$(echo I | tr -d "[:space:]" | od -to2 | head -n1 | awk '{print $2}' | cut -c6) 30if [ "$ret" = "0" ]; then 31 ENDIAN=eb 32fi 33 34atf_test_case b_flag 35b_flag_head() 36{ 37 atf_set "descr" "Verify -b output" 38} 39b_flag_body() 40{ 41 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_bflag_a.out" \ 42 hexdump -b "$(atf_get_srcdir)/d_hexdump_a.in" 43 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_bflag_b.out" \ 44 hexdump -b "$(atf_get_srcdir)/d_hexdump_b.in" 45 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_bflag_c.out" \ 46 hexdump -b "$(atf_get_srcdir)/d_hexdump_c.in" 47} 48 49atf_test_case c_flag 50c_flag_head() 51{ 52 atf_set "descr" "Verify -c output" 53} 54c_flag_body() 55{ 56 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_cflag_a.out" \ 57 hexdump -c "$(atf_get_srcdir)/d_hexdump_a.in" 58 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_cflag_b.out" \ 59 hexdump -c "$(atf_get_srcdir)/d_hexdump_b.in" 60 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_cflag_c.out" \ 61 hexdump -c "$(atf_get_srcdir)/d_hexdump_c.in" 62} 63 64atf_test_case C_flag 65C_flag_head() 66{ 67 atf_set "descr" "Verify -C output" 68} 69C_flag_body() 70{ 71 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_a.out" \ 72 hexdump -C "$(atf_get_srcdir)/d_hexdump_a.in" 73 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_b.out" \ 74 hexdump -C "$(atf_get_srcdir)/d_hexdump_b.in" 75 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_c.out" \ 76 hexdump -C "$(atf_get_srcdir)/d_hexdump_c.in" 77} 78 79atf_test_case hd_name 80hd_name_head() 81{ 82 atf_set "descr" "Verify hd output matching -C output" 83} 84hd_name_body() 85{ 86 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_a.out" \ 87 hd "$(atf_get_srcdir)/d_hexdump_a.in" 88 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_b.out" \ 89 hd "$(atf_get_srcdir)/d_hexdump_b.in" 90 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_c.out" \ 91 hd "$(atf_get_srcdir)/d_hexdump_c.in" 92} 93 94atf_test_case d_flag 95d_flag_head() 96{ 97 atf_set "descr" "Verify -d output" 98} 99d_flag_body() 100{ 101 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_dflag_a_$ENDIAN.out" \ 102 hexdump -d "$(atf_get_srcdir)/d_hexdump_a.in" 103 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_dflag_b_$ENDIAN.out" \ 104 hexdump -d "$(atf_get_srcdir)/d_hexdump_b.in" 105 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_dflag_c_$ENDIAN.out" \ 106 hexdump -d "$(atf_get_srcdir)/d_hexdump_c.in" 107} 108 109atf_test_case n_flag 110n_flag_head() 111{ 112 atf_set "descr" "Check -n functionality" 113} 114n_flag_body() 115{ 116 atf_check -o empty hexdump -bn 0 "$(atf_get_srcdir)/d_hexdump_a.in" 117 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_nflag_a.out" \ 118 hexdump -bn 1 "$(atf_get_srcdir)/d_hexdump_a.in" 119} 120 121atf_test_case o_flag 122o_flag_head() 123{ 124 atf_set "descr" "Verify -o output" 125} 126o_flag_body() 127{ 128 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_oflag_a_$ENDIAN.out" \ 129 hexdump -o "$(atf_get_srcdir)/d_hexdump_a.in" 130 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_oflag_b_$ENDIAN.out" \ 131 hexdump -o "$(atf_get_srcdir)/d_hexdump_b.in" 132 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_oflag_c_$ENDIAN.out" \ 133 hexdump -o "$(atf_get_srcdir)/d_hexdump_c.in" 134} 135 136atf_test_case s_flag 137s_flag_head() 138{ 139 atf_set "descr" "Verify -s output" 140} 141s_flag_body() 142{ 143 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_sflag_a.out" \ 144 hexdump -bs 4 "$(atf_get_srcdir)/d_hexdump_a.in" 145 146 atf_check -o not-empty hexdump -n 100 -s 1024 /dev/random 147} 148 149atf_test_case v_flag 150v_flag_head() 151{ 152 atf_set "descr" "Verify -v functionality" 153} 154v_flag_body() 155{ 156 for i in $(seq 0 7); do 157 atf_check -o match:"^\*$" \ 158 hexdump -s ${i} "$(atf_get_srcdir)/d_hexdump_c.in" 159 atf_check -o not-match:"^\*$" \ 160 hexdump -vs ${i} "$(atf_get_srcdir)/d_hexdump_c.in" 161 done 162 163 atf_check -o not-match:"^\*$" \ 164 hexdump -s 8 "$(atf_get_srcdir)/d_hexdump_c.in" 165 atf_check -o not-match:"^\*$" \ 166 hexdump -vs 8 "$(atf_get_srcdir)/d_hexdump_c.in" 167} 168 169atf_test_case x_flag 170x_flag_head() 171{ 172 atf_set "descr" "Verify -x output" 173} 174x_flag_body() 175{ 176 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_xflag_a_$ENDIAN.out" \ 177 hexdump -x "$(atf_get_srcdir)/d_hexdump_a.in" 178 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_xflag_b_$ENDIAN.out" \ 179 hexdump -x "$(atf_get_srcdir)/d_hexdump_b.in" 180 atf_check -o file:"$(atf_get_srcdir)/d_hexdump_xflag_c_$ENDIAN.out" \ 181 hexdump -x "$(atf_get_srcdir)/d_hexdump_c.in" 182} 183 184atf_init_test_cases() 185{ 186 atf_add_test_case b_flag 187 atf_add_test_case c_flag 188 atf_add_test_case C_flag 189 atf_add_test_case hd_name 190 atf_add_test_case d_flag 191 atf_add_test_case n_flag 192 atf_add_test_case o_flag 193 atf_add_test_case s_flag 194 atf_add_test_case v_flag 195 atf_add_test_case x_flag 196} 197