From 1a795b7cdbb718fc8b7f92202cbe62c9d8911426 Mon Sep 17 00:00:00 2001 From: tg Date: Sat, 5 Mar 2016 15:39:36 +0000 Subject: [PATCH 1/2] expanded tests for command/whence, from Martijn Dekker --- check.t | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/check.t b/check.t index 9ba412b..c82338b 100644 --- a/check.t +++ b/check.t @@ -1,4 +1,4 @@ -# $MirOS: src/bin/mksh/check.t,v 1.727 2016/03/04 14:26:09 tg Exp $ +# $MirOS: src/bin/mksh/check.t,v 1.728 2016/03/05 15:39:36 tg Exp $ # -*- mode: sh -*- #- # Copyright © 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, @@ -12196,13 +12196,76 @@ expected-stdout: after 0='swc' 1='二' 2='' = done --- -name: command-path +name: command-pvV-posix-priorities description: - Check 'command -p' is not 'whence -p' + For POSIX compatibility, command -v should find aliases and reserved + words, and command -p[vV] should find aliases, reserved words, and + builtins over external commands. stdin: - command -pv if + PATH=/bin:/usr/bin + alias foo="bar baz" + bar() { :; } + for word in 'if' 'foo' 'bar' 'set' 'true'; do + command -v "$word" + command -pv "$word" + command -V "$word" + command -pV "$word" + done expected-stdout: if + if + if is a reserved word + if is a reserved word + alias foo='bar baz' + alias foo='bar baz' + foo is an alias for 'bar baz' + foo is an alias for 'bar baz' + bar + bar + bar is a function + bar is a function + set + set + set is a special shell builtin + set is a special shell builtin + true + true + true is a shell builtin + true is a shell builtin +--- +name: whence-preserve-tradition +description: + This regression test is to ensure that the POSIX compatibility + changes for 'command' (see previous test) do not affect traditional + 'whence' behaviour. +category: os:mirbsd +stdin: + PATH=/bin:/usr/bin + alias foo="bar baz" + bar() { :; } + for word in 'if' 'foo' 'bar' 'set' 'true'; do + whence "$word" + whence -p "$word" + whence -v "$word" + whence -pv "$word" + done +expected-stdout: + if + if is a reserved word + if not found + 'bar baz' + foo is an alias for 'bar baz' + foo not found + bar + bar is a function + bar not found + set + set is a special shell builtin + set not found + true + /bin/true + true is a shell builtin + true is a tracked alias for /bin/true --- name: duffs-device description: From 76419a6813a0e77bb23db9446d4156686d4fa4f4 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 5 Mar 2016 15:39:37 +0000 Subject: [PATCH 2/2] This commit was manufactured by cvs2svn to create tag 'mksh-R52c'. Sprout from master 2016-03-05 15:39:36 UTC tg 'expanded tests for command/whence, from Martijn Dekker' Delete: Makefile --- Makefile | 188 ------------------------------------------------------- 1 file changed, 188 deletions(-) delete mode 100644 Makefile diff --git a/Makefile b/Makefile deleted file mode 100644 index bf9f8d9..0000000 --- a/Makefile +++ /dev/null @@ -1,188 +0,0 @@ -# $MirOS: src/bin/mksh/Makefile,v 1.148 2016/03/04 18:28:40 tg Exp $ -#- -# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011, 2012, 2013, 2014, 2015, 2016 -# mirabilos -# -# Provided that these terms and disclaimer and all copyright notices -# are retained or reproduced in an accompanying document, permission -# is granted to deal in this work without restriction, including un- -# limited rights to use, publicly perform, distribute, sell, modify, -# merge, give away, or sublicence. -# -# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to -# the utmost extent permitted by applicable law, neither express nor -# implied; without malicious intent or gross negligence. In no event -# may a licensor, author or contributor be held liable for indirect, -# direct, other damage, loss, or other issues arising in any way out -# of dealing in the work, even if advised of the possibility of such -# damage or existence of a defect, except proven that it results out -# of said person's immediate fault when using the work as intended. - -.ifmake d -__CRAZY= Yes -MKC_DEBG= cpp -DEBUGFILE= Yes -NOMAN= Yes -.endif - -.include - -SRCDIR= ${.CURDIR} - -PROG= mksh -SRCS= edit.c eval.c exec.c expr.c funcs.c histrap.c jobs.c \ - lalloc.c lex.c main.c misc.c shf.c syn.c tree.c var.c -.if !make(test-build) -CPPFLAGS+= -DMKSH_ASSUME_UTF8 -DMKSH_DISABLE_DEPRECATED \ - -DHAVE_ATTRIBUTE_BOUNDED=1 -DHAVE_ATTRIBUTE_FORMAT=1 \ - -DHAVE_ATTRIBUTE_NORETURN=1 -DHAVE_ATTRIBUTE_PURE=1 \ - -DHAVE_ATTRIBUTE_UNUSED=1 -DHAVE_ATTRIBUTE_USED=1 \ - -DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 -DHAVE_BOTH_TIME_H=1 \ - -DHAVE_SYS_BSDTYPES_H=0 -DHAVE_SYS_FILE_H=1 \ - -DHAVE_SYS_MKDEV_H=0 -DHAVE_SYS_MMAN_H=1 -DHAVE_SYS_PARAM_H=1 \ - -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 \ - -DHAVE_SYS_SYSMACROS_H=0 -DHAVE_BSTRING_H=0 -DHAVE_GRP_H=1 \ - -DHAVE_IO_H=0 -DHAVE_LIBGEN_H=1 -DHAVE_LIBUTIL_H=0 \ - -DHAVE_PATHS_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 \ - -DHAVE_TERMIOS_H=1 -DHAVE_ULIMIT_H=0 -DHAVE_VALUES_H=0 \ - -DHAVE_CAN_INTTYPES=1 -DHAVE_CAN_UCBINTS=1 \ - -DHAVE_CAN_INT8TYPE=1 -DHAVE_CAN_UCBINT8=1 -DHAVE_RLIM_T=1 \ - -DHAVE_SIG_T=1 -DHAVE_SYS_ERRLIST=1 -DHAVE_SYS_SIGNAME=1 \ - -DHAVE_SYS_SIGLIST=1 -DHAVE_FLOCK=1 -DHAVE_LOCK_FCNTL=1 \ - -DHAVE_GETRUSAGE=1 -DHAVE_GETSID=1 -DHAVE_GETTIMEOFDAY=1 \ - -DHAVE_KILLPG=1 -DHAVE_MEMMOVE=1 -DHAVE_MKNOD=0 -DHAVE_MMAP=1 \ - -DHAVE_NICE=1 -DHAVE_REVOKE=1 -DHAVE_SETLOCALE_CTYPE=0 \ - -DHAVE_LANGINFO_CODESET=0 -DHAVE_SELECT=1 -DHAVE_SETRESUGID=1 \ - -DHAVE_SETGROUPS=1 -DHAVE_STRERROR=0 -DHAVE_STRSIGNAL=0 \ - -DHAVE_STRLCPY=1 -DHAVE_FLOCK_DECL=1 -DHAVE_REVOKE_DECL=1 \ - -DHAVE_SYS_ERRLIST_DECL=1 -DHAVE_SYS_SIGLIST_DECL=1 \ - -DHAVE_PERSISTENT_HISTORY=1 -DMKSH_BUILD_R=523 -CPPFLAGS+= -D${${PROG:L}_tf:C/(Mir${MAN:E}{0,1}){2}/4/:S/x/mksh_BUILD/:U} -CPPFLAGS+= -I. -COPTS+= -std=c89 -Wall -.endif - -USE_PRINTF_BUILTIN?= 0 -.if ${USE_PRINTF_BUILTIN} == 1 -.PATH: ${BSDSRCDIR}/usr.bin/printf -SRCS+= printf.c -CPPFLAGS+= -DMKSH_PRINTF_BUILTIN -.endif - -DEBUGFILE?= No -.if ${DEBUGFILE:L} == "yes" -CPPFLAGS+= -DDF=mksh_debugtofile -.endif - -MANLINKS= [ false pwd sh sleep test true -BINLINKS= ${MANLINKS} echo domainname kill -.for _i in ${BINLINKS} -LINKS+= ${BINDIR}/${PROG} ${BINDIR}/${_i} -.endfor -.for _i in ${MANLINKS} -MLINKS+= ${PROG}.1 ${_i}.1 -.endfor - -OPTGENS!= cd ${SRCDIR:Q} && echo *.opt -.for _i in ${OPTGENS} -GENERATED+= ${_i:R}.gen -${_i:R}.gen: ${_i} ${SRCDIR}/Build.sh - /bin/sh ${SRCDIR:Q}/Build.sh -G ${SRCDIR:Q}/${_i:Q} -.endfor -CLEANFILES+= ${GENERATED} - -${PROG} beforedepend: ${GENERATED} - -regress: ${PROG} check.pl check.t - -rm -rf regress-dir - mkdir -p regress-dir - echo export FNORD=666 >regress-dir/.mkshrc - HOME=$$(realpath regress-dir) perl ${SRCDIR}/check.pl \ - -s ${SRCDIR}/check.t -v -p ./${PROG} \ - -C shell:legacy-no,int:32,fastbox - -test-build: .PHONY - -rm -rf build-dir - mkdir -p build-dir -.if ${USE_PRINTF_BUILTIN} == 1 - cp ${BSDSRCDIR}/usr.bin/printf/printf.c build-dir/ -.endif - cd build-dir; env CC=${CC:Q} CFLAGS=${CFLAGS:M*:Q} \ - CPPFLAGS=${CPPFLAGS:M*:Q} LDFLAGS=${LDFLAGS:M*:Q} \ - LIBS= NOWARN=-Wno-error TARGET_OS= CPP= /bin/sh \ - ${SRCDIR}/Build.sh -Q -r ${_TBF} && ./test.sh -v -f - -CLEANFILES+= lksh.cat1 -test-build-lksh: .PHONY - cd ${SRCDIR} && exec ${MAKE} lksh.cat1 test-build _TBF=-L - -bothmans: .PHONY - cd ${SRCDIR} && exec ${MAKE} MAN='lksh.1 mksh.1' __MANALL - -cleandir: clean-extra - -clean-extra: .PHONY - -rm -rf build-dir regress-dir printf.o printf.ln - -mksh_tf=xMakefile${OStype:S/${MACHINE_OS}/1/1g}${OSNAME} -distribution: - sed 's!\$$I''d\([:$$]\)!$$M''irSecuCron\1!g' \ - ${SRCDIR}/dot.mkshrc >${DESTDIR}/etc/skel/.mkshrc - chown ${BINOWN}:${CONFGRP} ${DESTDIR}/etc/skel/.mkshrc - chmod 0644 ${DESTDIR}/etc/skel/.mkshrc - -.include - -.ifmake cats -V_GROFF!= pkg_info -e 'groff-*' -V_GHOSTSCRIPT!= pkg_info -e 'ghostscript-*' -. if empty(V_GROFF) || empty(V_GHOSTSCRIPT) -. error empty V_GROFF=${V_GROFF} or V_GHOSTSCRIPT=${V_GHOSTSCRIPT} -. endif -.endif - -CLEANFILES+= ${MANALL:S/.cat/.ps/} ${MAN:S/$/.pdf/} ${MANALL:S/$/.gz/} -CLEANFILES+= ${MAN:S/$/.htm/} ${MAN:S/$/.htm.gz/} -CLEANFILES+= ${MAN:S/$/.txt/} ${MAN:S/$/.txt.gz/} -CATS_KW= mksh, ksh, sh -CATS_TITLE_mksh_1=mksh - The MirBSD Korn Shell -cats: ${MANALL} ${MANALL:S/.cat/.ps/} -.if "${MANALL:Nlksh.cat1:Nmksh.cat1}" != "" -. error Adjust here. -.endif -.for _m _n in mksh 1 - x=$$(ident ${SRCDIR:Q}/${_m}.${_n} | \ - awk '/Mir''OS:/ { print $$4$$5; }' | \ - tr -dc 0-9); (( $${#x} == 14 )) || exit 1; exec \ - ${MKSH} ${BSDSRCDIR:Q}/contrib/hosted/tg/ps2pdfmir -p pa4 -c \ - -o ${_m}.${_n}.pdf '[' /Author '(The MirOS Project)' \ - /Title '('${CATS_TITLE_${_m}_${_n}:Q}')' \ - /Subject '(BSD Reference Manual)' /ModDate "(D:$$x)" \ - /Creator '(GNU groff version ${V_GROFF:S/groff-//} \(MirPorts\))' \ - /Producer '(Artifex Ghostscript ${V_GHOSTSCRIPT:S/ghostscript-//:S/-artifex//} \(MirPorts\))' \ - /Keywords '('${CATS_KW:Q}')' /DOCINFO pdfmark \ - -f ${_m}.ps${_n} -.endfor - set -e; . ${BSDSRCDIR:Q}/scripts/roff2htm; set_target_absolute; \ - for m in ${MANALL}; do \ - bn=$${m%.*}; ext=$${m##*.cat}; \ - [[ $$bn != $$m ]]; [[ $$ext != $$m ]]; \ - gzip -n9 <"$$m" >"$$m.gz"; \ - col -bx <"$$m" >"$$bn.$$ext.txt"; \ - rm -f "$$bn.$$ext.txt.gz"; gzip -n9 "$$bn.$$ext.txt"; \ - do_conversion_verbose "$$bn" "$$ext" "$$m" "$$bn.$$ext.htm"; \ - rm -f "$$bn.$$ext.htm.gz"; gzip -n9 "$$bn.$$ext.htm"; \ - done - -.ifmake d -. ifmake obj || depend || all || install || regress || test-build -d: -. else -d: all -. endif -.endif - -dr: - p=$$(realpath ${PROG:Q}) && cd ${SRCDIR:Q} && exec ${MKSH} \ - ${BSDSRCDIR:Q}/contrib/hosted/tg/sdmksh "$$p"