# This file contains a top-level script to run all of the Tcl
# tests.  Execute it by invoking "source all" when running tclTest
# in this directory.
#

# RCS: @(#) $Id: all,v 1.12 1999/01/26 04:11:33 jingham Exp $
# If the srcdir variable exists, tests are looked for in that
# directory.  Otherwise they are looked for in ".".

if {! [info exists srcdir]} then {
    set srcdir .
}

# Always explicitly load `defs', so tests don't have to.  This avoids
# the need for each .test file to know about $srcdir.

source $srcdir/defs

switch $tcl_platform(platform) {
    "windows" {
	# Tests that cause tk to crash under windows.
	set crash {}

	# Tests that fail under windows.

	set fail { grid.test }

	if {! [info exist exclude] } {
	    set exclude [string tolower "$crash $fail"]
	}
    }
    "macintosh" {
	set x [pwd]
	cd $tk_library
	set tk_library [pwd]
	cd $x
	
	# Tests that cause tk to crash under mac.
	set crash {}

	# Tests that fail under mac.
	set fail {bind.test entry.test send.test textDisp.test}
	
	set exclude [string tolower "$crash $fail"]
    }    
    "unix" {
	set exclude ""
    }
}

if {$tcl_platform(os) == "Win32s"} {
    set tests [lsort [glob $srcdir/*.tes]]
} else {
    set tests [lsort [glob $srcdir/*.test]]
}

foreach i $tests {
    set tail [file tail $i]
    if [string match l.*.test $tail] {
	# This is an SCCS lock file;  ignore it.
	continue
    }
    if [lsearch $exclude [string tolower $tail]]>=0 {
	# Do not source this file; it exercises a known bug at this time.
	puts stdout "Skipping $tail"
	continue
    }
    puts stdout $tail
    if [catch {source $i} msg] {
	puts $msg
    }
}
puts "Tests all done"
