1166065Spjd# $FreeBSD$ 2166065Spjd 3166065Spjdntest=1 4166065Spjd 5211107Spjdcase "${dir}" in 6211107Spjd/*) 7166065Spjd maindir="${dir}/../.." 8211107Spjd ;; 9211107Spjd*) 10166065Spjd maindir="`pwd`/${dir}/../.." 11211107Spjd ;; 12211107Spjdesac 13211354Spjdfstest="${maindir}/pjdfstest" 14166065Spjd. ${maindir}/tests/conf 15166065Spjd 16166065Spjdexpect() 17166065Spjd{ 18166065Spjd e="${1}" 19166065Spjd shift 20166065Spjd r=`${fstest} $* 2>/dev/null | tail -1` 21211108Spjd echo "${r}" | ${GREP} -Eq '^'${e}'$' 22166065Spjd if [ $? -eq 0 ]; then 23185251Spjd if [ -z "${todomsg}" ]; then 24185251Spjd echo "ok ${ntest}" 25185251Spjd else 26185251Spjd echo "ok ${ntest} # TODO ${todomsg}" 27185251Spjd fi 28166065Spjd else 29185216Spjd if [ -z "${todomsg}" ]; then 30185216Spjd echo "not ok ${ntest} - tried '$*', expected ${e}, got ${r}" 31185216Spjd else 32185216Spjd echo "not ok ${ntest} # TODO ${todomsg}" 33185216Spjd fi 34166065Spjd fi 35185251Spjd todomsg="" 36211108Spjd ntest=$((ntest+1)) 37166065Spjd} 38166065Spjd 39166065Spjdjexpect() 40166065Spjd{ 41166065Spjd s="${1}" 42166065Spjd d="${2}" 43166065Spjd e="${3}" 44166065Spjd shift 3 45211354Spjd r=`jail -s ${s} / pjdfstest 127.0.0.1 /bin/sh -c "cd ${d} && ${fstest} $* 2>/dev/null" | tail -1` 46211108Spjd echo "${r}" | ${GREP} -Eq '^'${e}'$' 47166065Spjd if [ $? -eq 0 ]; then 48185251Spjd if [ -z "${todomsg}" ]; then 49185251Spjd echo "ok ${ntest}" 50185251Spjd else 51185251Spjd echo "ok ${ntest} # TODO ${todomsg}" 52185251Spjd fi 53166065Spjd else 54185216Spjd if [ -z "${todomsg}" ]; then 55185216Spjd echo "not ok ${ntest} - tried '$*', expected ${e}, got ${r}" 56185216Spjd else 57185216Spjd echo "not ok ${ntest} # TODO ${todomsg}" 58185216Spjd fi 59166065Spjd fi 60185251Spjd todomsg="" 61211108Spjd ntest=$((ntest+1)) 62166065Spjd} 63166065Spjd 64166065Spjdtest_check() 65166065Spjd{ 66166065Spjd if [ $* ]; then 67185251Spjd if [ -z "${todomsg}" ]; then 68185251Spjd echo "ok ${ntest}" 69185251Spjd else 70185251Spjd echo "ok ${ntest} # TODO ${todomsg}" 71185251Spjd fi 72166065Spjd else 73185216Spjd if [ -z "${todomsg}" ]; then 74185216Spjd echo "not ok ${ntest}" 75185216Spjd else 76185216Spjd echo "not ok ${ntest} # TODO ${todomsg}" 77185216Spjd fi 78166065Spjd fi 79185251Spjd todomsg="" 80211108Spjd ntest=$((ntest+1)) 81166065Spjd} 82166065Spjd 83185216Spjdtodo() 84185216Spjd{ 85210971Spjd if [ "${os}" = "${1}" -o "${os}:${fs}" = "${1}" ]; then 86185216Spjd todomsg="${2}" 87185216Spjd fi 88185216Spjd} 89185216Spjd 90166065Spjdnamegen() 91166065Spjd{ 92248304Spjd echo "pjdfstest_`dd if=/dev/urandom bs=1k count=1 2>/dev/null | openssl md5 | awk '{print $NF}'`" 93166065Spjd} 94166065Spjd 95211177Spjdnamegen_len() 96211177Spjd{ 97211177Spjd len="${1}" 98211177Spjd 99211177Spjd name="" 100211177Spjd while :; do 101248304Spjd namepart="`dd if=/dev/urandom bs=64 count=1 2>/dev/null | openssl md5 | awk '{print $NF}'`" 102211177Spjd name="${name}${namepart}" 103211177Spjd curlen=`printf "%s" "${name}" | wc -c` 104211177Spjd [ ${curlen} -lt ${len} ] || break 105211177Spjd done 106211177Spjd name=`echo "${name}" | cut -b -${len}` 107211177Spjd printf "%s" "${name}" 108211177Spjd} 109211177Spjd 110211177Spjd# POSIX: 111211177Spjd# {NAME_MAX} 112211177Spjd# Maximum number of bytes in a filename (not including terminating null). 113211177Spjdnamegen_max() 114211177Spjd{ 115211177Spjd name_max=`${fstest} pathconf . _PC_NAME_MAX` 116211177Spjd namegen_len ${name_max} 117211177Spjd} 118211177Spjd 119211177Spjd# POSIX: 120211177Spjd# {PATH_MAX} 121211177Spjd# Maximum number of bytes in a pathname, including the terminating null character. 122211177Spjddirgen_max() 123211177Spjd{ 124211177Spjd name_max=`${fstest} pathconf . _PC_NAME_MAX` 125211177Spjd complen=$((name_max/2)) 126211177Spjd path_max=`${fstest} pathconf . _PC_PATH_MAX` 127211177Spjd # "...including the terminating null character." 128211177Spjd path_max=$((path_max-1)) 129211177Spjd 130211177Spjd name="" 131211177Spjd while :; do 132211177Spjd name="${name}`namegen_len ${complen}`/" 133211177Spjd curlen=`printf "%s" "${name}" | wc -c` 134211177Spjd [ ${curlen} -lt ${path_max} ] || break 135211177Spjd done 136211177Spjd name=`echo "${name}" | cut -b -${path_max}` 137211177Spjd name=`echo "${name}" | sed -E 's@/$@x@'` 138211177Spjd printf "%s" "${name}" 139211177Spjd} 140211177Spjd 141166065Spjdquick_exit() 142166065Spjd{ 143166065Spjd echo "1..1" 144166065Spjd echo "ok 1" 145166065Spjd exit 0 146166065Spjd} 147166065Spjd 148166065Spjdsupported() 149166065Spjd{ 150166065Spjd case "${1}" in 151185173Spjd lchmod) 152185173Spjd if [ "${os}" != "FreeBSD" ]; then 153185173Spjd return 1 154185173Spjd fi 155185173Spjd ;; 156166065Spjd chflags) 157185173Spjd if [ "${os}" != "FreeBSD" ]; then 158166065Spjd return 1 159166065Spjd fi 160166065Spjd ;; 161185173Spjd chflags_SF_SNAPSHOT) 162185173Spjd if [ "${os}" != "FreeBSD" -o "${fs}" != "UFS" ]; then 163166065Spjd return 1 164166065Spjd fi 165166065Spjd ;; 166166065Spjd esac 167166065Spjd return 0 168166065Spjd} 169166065Spjd 170166065Spjdrequire() 171166065Spjd{ 172166065Spjd if supported ${1}; then 173166065Spjd return 174166065Spjd fi 175166065Spjd quick_exit 176166065Spjd} 177211179Spjd 178211185Spjd# usage: 179211185Spjd# create_file <type> <name> 180211185Spjd# create_file <type> <name> <mode> 181211185Spjd# create_file <type> <name> <uid> <gid> 182211185Spjd# create_file <type> <name> <mode> <uid> <gid> 183211179Spjdcreate_file() { 184211179Spjd type="${1}" 185211179Spjd name="${2}" 186211179Spjd 187211179Spjd case "${type}" in 188211179Spjd none) 189211179Spjd return 190211179Spjd ;; 191211179Spjd regular) 192211179Spjd expect 0 create ${name} 0644 193211179Spjd ;; 194211179Spjd dir) 195211179Spjd expect 0 mkdir ${name} 0755 196211179Spjd ;; 197211179Spjd fifo) 198211179Spjd expect 0 mkfifo ${name} 0644 199211179Spjd ;; 200211179Spjd block) 201211179Spjd expect 0 mknod ${name} b 0644 1 2 202211179Spjd ;; 203211179Spjd char) 204211179Spjd expect 0 mknod ${name} c 0644 1 2 205211179Spjd ;; 206211179Spjd socket) 207211179Spjd expect 0 bind ${name} 208211179Spjd ;; 209211179Spjd symlink) 210211179Spjd expect 0 symlink test ${name} 211211179Spjd ;; 212211179Spjd esac 213211185Spjd if [ -n "${3}" -a -n "${4}" -a -n "${5}" ]; then 214211185Spjd expect 0 lchmod ${name} ${3} 215211185Spjd expect 0 lchown ${name} ${4} ${5} 216211185Spjd elif [ -n "${3}" -a -n "${4}" ]; then 217211185Spjd expect 0 lchown ${name} ${3} ${4} 218211185Spjd elif [ -n "${3}" ]; then 219211185Spjd expect 0 lchmod ${name} ${3} 220211185Spjd fi 221211179Spjd} 222