# This file is sourced by init.sh, *before* its initialization. # Copyright (C) 2010-2016 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # This goes hand in hand with the "exec 9>&2;" in tests/Makefile.am's # TESTS_ENVIRONMENT definition. stderr_fileno_=9 # Skip the current test if valgrind doesn't work, # which could happen if not installed, # or hasn't support for the built architecture, # or hasn't appropriate error suppressions installed etc. require_valgrind_() { valgrind --error-exitcode=1 true 2>/dev/null || skip_ "requires a working valgrind" } # Call this with a list of programs under test immediately after # sourcing init.sh. print_ver_() { if test "$VERBOSE" = yes; then local i for i in $*; do env $i --version done fi } # Some tests would fail without this particular locale. # If the locale is not available, just skip the test. require_en_utf8_locale_() { path_prepend_ ./testsuite case $(get-mb-cur-max en_US.UTF-8) in [3456]) ;; *) skip_ 'en_US.UTF-8 locale not found' ;; esac } require_el_iso88597_locale_() { path_prepend_ ./testsuite case $(get-mb-cur-max el_GR.iso88597) in 1) ;; *) skip_ 'el_GR.iso88597 locale not found' ;; esac } # Some tests would fail without this particular locale. # If the locale is not available, just skip the test. # The exact spelling differs between operating systems # (ja_JP.shiftjis on Ubuntu, ja_JP.sjis on Debian, ja_JP.SJIS on Mac OS X). # If a sjift-jis locale is found the function sets shell variable # 'LOCALE_JA_SJIS' to the locale name. require_ja_shiftjis_locale_() { path_prepend_ ./testsuite LOCALE_JA_SJIS= for l in shiftjis sjis SJIS ; do n=$(get-mb-cur-max ja_JP.$l) || continue test 2 -eq "$n" || continue LOCALE_JA_SJIS="ja_JP.$l" break done test -z "$LOCALE_JA_SJIS" && skip_ 'ja_JP shift-jis locale not found' } # Ensure the implementation of mbrtowc can detect invalid # multibyte shiftjis sequences. Otherwise, skip the test, to avoid # false-alarms. # "$1" should be the name of the SHIFT-JIS locale # (as set by 'require_ja_shiftjis_locale_' above) require_valid_ja_shiftjis_locale_() { path_prepend_ ./testsuite local n=$(printf '\203:' | LC_ALL="$1" test-mbrtowc) test "x$n" = "x-2,-1" || skip_ "locale '$1' is buggy" } # Ensure the implementation of mbrtowc can detect invalid # multibyte eucJP sequences. Otherwise, skip the test, to avoid # false-alarms. # "$1" should be the name of the ja_JP.eucJP locale # (as set in $LOCALE_JA by m4/locale-ja.m4) require_valid_ja_eucjp_locale_() { path_prepend_ . local n=$(printf '\262C' | LC_ALL="$1" test-mbrtowc) test "x$n" = "x-2,-1" || skip_ "locale '$1' is buggy" }