1# Functional and regression tests in C++ for libstdc++. 2 3# Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4# 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 19# libstdc++-v3 testsuite that uses the 'dg.exp' driver. 20 21# Initialization. 22dg-init 23 24# Build the support objects. 25v3-build_support 26 27set tests [list] 28 29# If there is a "testsuite_files" file, use it. 30# 31# This is a workaround for problems reported with using: 32# 33# runtest normal.exp="`cat testsuite_files`" 34# 35# See: 36# http://gcc.gnu.org/ml/libstdc++/2005-03/msg00278.html 37# for discussion of the problem. 38# 39# If that worked consistently, we could modify "make check" to 40# pass that option, and then remove this code. 41if {[info exists blddir]} { 42 set tests_file "${blddir}/testsuite/testsuite_files" 43} 44if {[info exists tests_file] && [file exists $tests_file]} { 45 set f [open $tests_file] 46 while { ! [eof $f] } { 47 set t [gets $f] 48 if { [string length "$t"] != 0 } { 49 lappend tests ${srcdir}/${t} 50 } 51 } 52 close $f 53} else { 54 # Find directories that might have tests. 55 set subdirs [glob "$srcdir/\[0-9\]\[0-9\]*"] 56 foreach d [glob "$srcdir/\[a-z\]*"] { 57 if {[file isdirectory $d]} { 58 lappend subdirs $d 59 } 60 } 61 # Find all the tests. 62 foreach s $subdirs { 63 set subdir_tests [find $s *.cc] 64 set subdir_tests_c [find $s *.c] 65 foreach e $subdir_tests_c { 66 lappend subdir_tests $e 67 } 68 69 # Filter out tests that should not be run. 70 foreach t $subdir_tests { 71 # The DejaGNU "find" procedure sometimes returns a list 72 # containing an empty string, when it should really return 73 # an empty list. 74 if { $t == "" } { 75 continue 76 } 77 # Filter out: 78 # 1. interactive tests. 79 # 2. performance tests. 80 # 3. wchar_t tests, if not supported. 81 # 4. thread tests, if not supported. 82 if { [string first _xin $t] == -1 83 && [string first performance $t] == -1 84 && (${v3-wchar_t} || [string first wchar_t $t] == -1) 85 && (${v3-threads} || [string first thread $t] == -1) } { 86 lappend tests $t 87 } 88 } 89 } 90} 91set tests [lsort $tests] 92 93# Main loop. 94global DEFAULT_CXXFLAGS 95global PCH_CXXFLAGS 96dg-runtest $tests "" "$DEFAULT_CXXFLAGS $PCH_CXXFLAGS" 97 98# All done. 99dg-finish 100