da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# CDDL HEADER START
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# The contents of this file are subject to the terms of the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Development and Distribution License (the "License").
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# You may not use this file except in compliance with the License.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# See the License for the specific language governing permissions
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and limitations under the License.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# When distributing Covered Code, include this CDDL HEADER in each
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If applicable, add the following below this CDDL HEADER, with the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# fields enclosed by brackets "[]" replaced with your own identifying
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# information: Portions Copyright [yyyy] [name of copyright owner]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# CDDL HEADER END
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# Run the ksh93 minimum set of tests
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# - "builtins.sh" may fail in some locales like this:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# -- snip --
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# ## Running ksh test: LANG='zh_TW.EUC' script='builtins.sh'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# builtins.sh[274]: printf "%T" now
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# -- snip --
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# - "options.sh" may currently fail in some locales with:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# -- snip --
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# options.sh[145]: -G ** failed -- expected 'bam.c bar bar.c bar/bam.c bar/foo.c foo foo/bam.c', got 'bam.c bar bar/bam.c bar.c bar/foo.c foo foo/bam.c'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# options.sh[149]: -G **/*.c failed -- expected 'bam.c bar.c bar/bam.c bar/foo.c foo/bam.c', got 'bam.c bar/bam.c bar.c bar/foo.c foo/bam.c'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# -- snip --
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This may be simply a different sort order or a bug in the test suite.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Currently under investigation.
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# - "glob.sh" may currently fail in some locales (e.g. en_US.UTF-8) with:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# glob.sh[157] glob -- expected '<d> <dd> <de> <Beware>', got '<Beware> <d> <dd> <de>'
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# glob.sh[277] glob -- expected '<abc> <abe> <bdir> <ca> <de> <man> <Beware>', got '<abc> <abe> <bdir> <Beware> <ca> <de> <man>'
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# This may be simply a different sort order or a bug in the test suite.
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Currently under investigation.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# - These tests need a working system clock, otherwise they'll bite you.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# - The current list of locales was mainly composed to cover various encodings
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# and all important markets based on suggestions by Sun's i18n team.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# - More locales should be tested here (via ON_KSH_TEST_LOCALES below).
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Locales like "ru_RU.KOI8-R","de_DE.UTF-8", "is_IS.ISO8859-1",
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# "is_IS.UTF-8" and "nl_BE.ISO8859-15" are on our wishlist - but
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# that is getting little bit more compliciated because these locales use
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# ',' as decimal delimter. The best solution may be to wait for ksh93
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# being integrated into OS/Net and then change the test sequence to
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# use ksh93's associative/compound variables (this may require a flag
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# day... ;-( ).
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# - Due to the timing sensitivity of some of the tests, these tests should
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# be run on a quiet system with no other activity.
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinTESTSRC= $(LIBSHELLBASE)/common/tests
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# ON_KSH_TEST_LOCALES can be overridden via
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# $ export ON_KSH_TEST_LOCALES=<value> # before $ make install #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinON_KSH_TEST_LOCALES = \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin zh_CN.GB18030 zh_CN.GB18030@pinyin zh_CN.GB18030@radical zh_CN.GB18030@stroke \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin zh_CN.UTF-8 zh_CN.UTF-8@pinyin zh_CN.UTF-8@radical zh_CN.UTF-8@stroke \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# ON_KSH_TEST_LIST can be overridden via
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# $ export ON_KSH_TEST_LIST=<value> # before $ make install #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinON_KSH_TEST_LIST = $(TESTSRC)/*.sh
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Boolean (true/false) flag to control whether we should make test
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# failures non-fatal
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinON_KSH_TEST_IGNORE_TESTFAILURE=false
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# We must wait for other things in this subdir to finish before running
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# the test suite, otherwise we may run into trouble that this activity
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# may disturb the test suite run (resulting in weird "heisenbug"-like
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# test failures).
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintestshell: $(PROG)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin builtin basename ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin print '# NOTE: Make sure your binaries in ROOT match your kernel!' ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin set +o errexit ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin export PATH="$(SRC)/cmd/ksh/$(LIBSHELLMACH):/bin:/usr/bin" ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf "# which ksh='%s', ksh93='%s'\n" \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin "$$(which ksh)" "$$(which ksh93)" ; \
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz if [[ "$$(isalist)" != ~(F)$(LIBSHELLMACH) ]] ; then \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin "# ISA='%s' not available on this system, skipping tests...\n" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$(LIBSHELLMACH)" ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin exit 0 ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print "# Libraries used:" ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_64="$(ROOTLIB64)/" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_32="$(ROOTLIB)/" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH="$(ROOTLIB64)/:$(ROOTLIB)/" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /usr/bin/ldd "$(SRC)/cmd/ksh/$(LIBSHELLMACH)/ksh" ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin print "# Running tests:" ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin redirect 2>&1 ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin (supported_locales="$$(/usr/bin/locale -a)" ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin for test_lang in $(ON_KSH_TEST_LOCALES) ; do \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin if [[ "$$(egrep "^$${test_lang}\$$" <<< "$${supported_locales}")" == "" ]] ; then \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin "# Locale '%s' not supported, skipping tests...\n" \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin "$${test_lang}" ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin continue ; \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin (for test_item in $(ON_KSH_TEST_LIST) ; do \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ "$${test_item}" == "$(TESTSRC)/builtins.sh" || \
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "$${test_item}" == "$(TESTSRC)/glob.sh" || \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$${test_item}" == "$(TESTSRC)/options.sh" ]] || \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $(ON_KSH_TEST_IGNORE_TESTFAILURE) && \
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin set +o errexit ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin for mode in 'plain_script:-s' 'compiled_script:-c' ; do \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "## Running %s test: LANG='%s' script='%s', mode='%s'\n" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$(LIBSHELLMACH)/ksh" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$${test_lang}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$$(basename "$${test_item}")" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$${mode%:*}"; \
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz ulimit -s 65536 ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin test_output="$$( ( \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin SHELL="$(SRC)/cmd/ksh/$(LIBSHELLMACH)/ksh" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_64="$(ROOTLIB64)/" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_32="$(ROOTLIB)/" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH="$(ROOTLIB64)/:$(ROOTLIB)/" ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$${SHELL}" "$(TESTSRC)/shtests" -t "$${mode#*:}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_64="$${LD_LIBRARY_PATH_64}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH_32="$${LD_LIBRARY_PATH_32}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LD_LIBRARY_PATH="$${LD_LIBRARY_PATH}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin SHELL="$${SHELL}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LANG="$${test_lang}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin LC_ALL="$${test_lang}" \
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner VMALLOC_OPTIONS=abort \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin SHCOMP="$(ROOTBIN)/shcomp" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin "$${test_item}" \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin ) 2>&1 | while read ; do \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin printf "#\t%s\n" "$${REPLY}" ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin done | tee /dev/stderr)" ; \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin [[ "$${test_output}" == ~(E)test.*passed\ \[\ [[:digit:]]*\ test.*\ 0\ errors\ \] ]] || \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin (print "##--------> test failed" ; exit 1) \
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin set -o errexit ; \