1da2e3ebdSchin# 2da2e3ebdSchin# CDDL HEADER START 3da2e3ebdSchin# 4da2e3ebdSchin# The contents of this file are subject to the terms of the 5da2e3ebdSchin# Common Development and Distribution License (the "License"). 6da2e3ebdSchin# You may not use this file except in compliance with the License. 7da2e3ebdSchin# 8da2e3ebdSchin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9da2e3ebdSchin# or http://www.opensolaris.org/os/licensing. 10da2e3ebdSchin# See the License for the specific language governing permissions 11da2e3ebdSchin# and limitations under the License. 12da2e3ebdSchin# 13da2e3ebdSchin# When distributing Covered Code, include this CDDL HEADER in each 14da2e3ebdSchin# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15da2e3ebdSchin# If applicable, add the following below this CDDL HEADER, with the 16da2e3ebdSchin# fields enclosed by brackets "[]" replaced with your own identifying 17da2e3ebdSchin# information: Portions Copyright [yyyy] [name of copyright owner] 18da2e3ebdSchin# 19da2e3ebdSchin# CDDL HEADER END 20da2e3ebdSchin# 217c2fbfb3SApril Chin 22da2e3ebdSchin# 23*34f9b3eeSRoland Mainz# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24da2e3ebdSchin# Use is subject to license terms. 25da2e3ebdSchin# 26da2e3ebdSchin 27da2e3ebdSchin# 287c2fbfb3SApril Chin# Run the ksh93 minimum set of tests 297c2fbfb3SApril Chin# 307c2fbfb3SApril Chin 31da2e3ebdSchin# 32da2e3ebdSchin# Notes: 33da2e3ebdSchin# - "builtins.sh" may fail in some locales like this: 34da2e3ebdSchin# -- snip -- 35da2e3ebdSchin# ## Running ksh test: LANG='zh_TW.EUC' script='builtins.sh' 36da2e3ebdSchin# builtins.sh[274]: printf "%T" now 37da2e3ebdSchin# -- snip -- 38da2e3ebdSchin# 39da2e3ebdSchin# - "options.sh" may currently fail in some locales with: 40da2e3ebdSchin# -- snip -- 41da2e3ebdSchin# 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' 42da2e3ebdSchin# 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' 43da2e3ebdSchin# -- snip -- 44da2e3ebdSchin# This may be simply a different sort order or a bug in the test suite. 45da2e3ebdSchin# Currently under investigation. 46da2e3ebdSchin# 47da2e3ebdSchin# - These tests need a working system clock, otherwise they'll bite you. 48da2e3ebdSchin# 497c2fbfb3SApril Chin# - The current list of locales was mainly composed to cover various encodings 507c2fbfb3SApril Chin# and all important markets based on suggestions by Sun's i18n team. 51da2e3ebdSchin# 52da2e3ebdSchin# - More locales should be tested here (via ON_KSH_TEST_LOCALES below). 53da2e3ebdSchin# Locales like "ru_RU.KOI8-R","de_DE.UTF-8", "is_IS.ISO8859-1", 54da2e3ebdSchin# "is_IS.UTF-8" and "nl_BE.ISO8859-15" are on our wishlist - but 55da2e3ebdSchin# that is getting little bit more compliciated because these locales use 56da2e3ebdSchin# ',' as decimal delimter. The best solution may be to wait for ksh93 57da2e3ebdSchin# being integrated into OS/Net and then change the test sequence to 587c2fbfb3SApril Chin# use ksh93's associative/compound variables (this may require a flag 59da2e3ebdSchin# day... ;-( ). 60da2e3ebdSchin# 61da2e3ebdSchin# - Due to the timing sensitivity of some of the tests, these tests should 62da2e3ebdSchin# be run on a quiet system with no other activity. 63da2e3ebdSchin# 64da2e3ebdSchin 657c2fbfb3SApril ChinTESTSRC= $(LIBSHELLBASE)/common/tests 66da2e3ebdSchin 67da2e3ebdSchin# ON_KSH_TEST_LOCALES can be overridden via 68da2e3ebdSchin# $ export ON_KSH_TEST_LOCALES=<value> # before $ make install # 69da2e3ebdSchinON_KSH_TEST_LOCALES = \ 70da2e3ebdSchin C \ 717c2fbfb3SApril Chin en_US.UTF-8 en_US en_US.ISO8859-15@euro \ 72da2e3ebdSchin he_IL.UTF-8 \ 73da2e3ebdSchin hi_IN.UTF-8 \ 747c2fbfb3SApril Chin ja ja_JP.PCK ja_JP.UTF-8 ja_JP.eucJP \ 757c2fbfb3SApril Chin ko_KR.UTF-8 ko_KR.EUC \ 76da2e3ebdSchin th_TH.TIS620 \ 777c2fbfb3SApril Chin zh_CN.EUC zh_CN.GBK \ 787c2fbfb3SApril Chin zh_CN.GB18030 zh_CN.GB18030@pinyin zh_CN.GB18030@radical zh_CN.GB18030@stroke \ 797c2fbfb3SApril Chin zh_CN.UTF-8 zh_CN.UTF-8@pinyin zh_CN.UTF-8@radical zh_CN.UTF-8@stroke \ 80da2e3ebdSchin zh_HK.BIG5HK \ 81da2e3ebdSchin zh_TW.BIG5 zh_TW.EUC zh_TW.UTF-8 82da2e3ebdSchin 83da2e3ebdSchin# ON_KSH_TEST_LIST can be overridden via 84da2e3ebdSchin# $ export ON_KSH_TEST_LIST=<value> # before $ make install # 85da2e3ebdSchinON_KSH_TEST_LIST = $(TESTSRC)/*.sh 86da2e3ebdSchin 87da2e3ebdSchin# Flag to control whether we should make test failures non-fatal 88da2e3ebdSchinON_KSH_TEST_IGNORE_TESTFAILURE=false 89da2e3ebdSchin 90da2e3ebdSchin# We must wait for other things in this subdir to finish before running 91da2e3ebdSchin# the test suite, otherwise we may run into trouble that this activity 92da2e3ebdSchin# may disturb the test suite run (resulting in weird "heisenbug"-like 93da2e3ebdSchin# test failures). 94da2e3ebdSchintestshell: $(PROG) 95da2e3ebdSchin @ \ 967c2fbfb3SApril Chin builtin basename ; \ 97da2e3ebdSchin print '# NOTE: Make sure your binaries in ROOT match your kernel!' ; \ 98da2e3ebdSchin ( \ 99da2e3ebdSchin set +o errexit ; \ 1007c2fbfb3SApril Chin export PATH="$(SRC)/cmd/ksh/$(LIBSHELLMACH):/bin:/usr/bin" ; \ 101da2e3ebdSchin printf "# which ksh='%s', ksh93='%s'\n" \ 102da2e3ebdSchin "$$(which ksh)" "$$(which ksh93)" ; \ 103da2e3ebdSchin ) ; \ 104*34f9b3eeSRoland Mainz if [[ "$$(isalist)" != ~(F)$(LIBSHELLMACH) ]] ; then \ 105da2e3ebdSchin printf \ 106da2e3ebdSchin "# ISA='%s' not available on this system, skipping tests...\n" \ 1077c2fbfb3SApril Chin "$(LIBSHELLMACH)" ; \ 108da2e3ebdSchin exit 0 ; \ 109da2e3ebdSchin fi ; \ 1107c2fbfb3SApril Chin print "# Libraries used:" ; \ 1117c2fbfb3SApril Chin LD_LIBRARY_PATH_64="$(ROOTLIB64)/" \ 1127c2fbfb3SApril Chin LD_LIBRARY_PATH_32="$(ROOTLIB)/" \ 1137c2fbfb3SApril Chin LD_LIBRARY_PATH="$(ROOTLIB64)/:$(ROOTLIB)/" \ 1147c2fbfb3SApril Chin /usr/bin/ldd "$(SRC)/cmd/ksh/$(LIBSHELLMACH)/ksh" ; \ 1157c2fbfb3SApril Chin print "# Running tests:" ; \ 1167c2fbfb3SApril Chin redirect 2>&1 ; \ 117da2e3ebdSchin (supported_locales="$$(/usr/bin/locale -a)" ; \ 118da2e3ebdSchin for test_lang in $(ON_KSH_TEST_LOCALES) ; do \ 1197c2fbfb3SApril Chin if [[ "$$(egrep "^$${test_lang}\$$" <<< "$${supported_locales}")" == "" ]] ; then \ 120da2e3ebdSchin printf \ 121da2e3ebdSchin "# Locale '%s' not supported, skipping tests...\n" \ 122da2e3ebdSchin "$${test_lang}" ; \ 123da2e3ebdSchin continue ; \ 124da2e3ebdSchin fi ; \ 125da2e3ebdSchin (for test_item in $(ON_KSH_TEST_LIST) ; do \ 1267c2fbfb3SApril Chin [[ "$${test_item}" == "$(TESTSRC)/builtins.sh" || \ 1277c2fbfb3SApril Chin "$${test_item}" == "$(TESTSRC)/options.sh" ]] || \ 128da2e3ebdSchin $(ON_KSH_TEST_IGNORE_TESTFAILURE) && \ 129da2e3ebdSchin set +o errexit ; \ 1307c2fbfb3SApril Chin for mode in 'plain_script:-s' 'compiled_script:-c' ; do \ 131da2e3ebdSchin printf \ 1327c2fbfb3SApril Chin "## Running %s test: LANG='%s' script='%s', mode='%s'\n" \ 1337c2fbfb3SApril Chin "$(LIBSHELLMACH)/ksh" \ 134da2e3ebdSchin "$${test_lang}" \ 1357c2fbfb3SApril Chin "$$(basename "$${test_item}")" \ 1367c2fbfb3SApril Chin "$${mode%:*}"; \ 137da2e3ebdSchin ( \ 138*34f9b3eeSRoland Mainz ulimit -s 65536 ; \ 139da2e3ebdSchin test_output="$$( ( \ 140da2e3ebdSchin export \ 1417c2fbfb3SApril Chin SHELL="$(SRC)/cmd/ksh/$(LIBSHELLMACH)/ksh" \ 142da2e3ebdSchin LD_LIBRARY_PATH_64="$(ROOTLIB64)/" \ 1437c2fbfb3SApril Chin LD_LIBRARY_PATH_32="$(ROOTLIB)/" \ 144da2e3ebdSchin LD_LIBRARY_PATH="$(ROOTLIB64)/:$(ROOTLIB)/" ; \ 1457c2fbfb3SApril Chin "$${SHELL}" "$(TESTSRC)/shtests" -t "$${mode#*:}" \ 146da2e3ebdSchin LD_LIBRARY_PATH_64="$${LD_LIBRARY_PATH_64}" \ 147da2e3ebdSchin LD_LIBRARY_PATH_32="$${LD_LIBRARY_PATH_32}" \ 148da2e3ebdSchin LD_LIBRARY_PATH="$${LD_LIBRARY_PATH}" \ 149da2e3ebdSchin SHELL="$${SHELL}" \ 150da2e3ebdSchin LANG="$${test_lang}" \ 151da2e3ebdSchin LC_ALL="$${test_lang}" \ 1527c2fbfb3SApril Chin VMDEBUG=a \ 1537c2fbfb3SApril Chin SHCOMP="$(ROOTBIN)/shcomp" \ 154da2e3ebdSchin "$${test_item}" \ 155da2e3ebdSchin ) 2>&1 | while read ; do \ 156da2e3ebdSchin printf "#\t%s\n" "$${REPLY}" ; \ 157da2e3ebdSchin done | tee /dev/stderr)" ; \ 1587c2fbfb3SApril Chin [[ "$${test_output}" == ~(E)test.*passed\ \[\ [[:digit:]]*\ test.*\ 0\ errors\ \] ]] || \ 1597c2fbfb3SApril Chin (print "##--------> test failed" ; exit 1) \ 160da2e3ebdSchin ) ; \ 1617c2fbfb3SApril Chin done ; \ 162da2e3ebdSchin set -o errexit ; \ 163da2e3ebdSchin done) ; \ 164da2e3ebdSchin done) 165