summaryrefslogtreecommitdiffstats
path: root/tests/all
blob: 161ba989a6522301b594f86d2c3ca541788815cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 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.3 1998/11/19 21:46:59 hershey Exp $

set TESTS_DIR [file join [pwd] [file dirname [info script]]]
source [file join $TESTS_DIR defs]
set currentDir [pwd]

catch {array set flag $argv}
set requiredSourceFiles [list autoMkindex.tcl remote.tcl]

#
# Set the TMP_DIR to pwd or the arg of -tmpdir, if given.
# 

if {[info exists flag(-tmpdir)]} {
    set TMP_DIR $flag(-tmpdir)
    if {![file exists $TMP_DIR]} {
	if {[catch {file mkdir $TMP_DIR}]} {
	    error "could not create directory $TMP_DIR"
	}
	file mkdir $TMP_DIR
    } elseif {![file isdir $TMP_DIR]} {
	error "$TMP_DIR already exists but is not a directory"
    }
    if {[string compare [file pathtype $TMP_DIR] absolute] != 0} {
	set TMP_DIR [file join [pwd] $TMP_DIR]
    }
    cd $TMP_DIR
}

#
# copy the required source files to the current dir.
#

if {[string compare $TESTS_DIR [pwd]] != 0} {

    foreach file $requiredSourceFiles {
	if {![file exists $file]} {
	    catch {file copy [file join $TESTS_DIR $file] .}
	}
    }
}

if {$tcl_platform(os) == "Win32s"} {
    set globPattern [file join $TESTS_DIR *.tes]
} else {
    set globPattern [file join $TESTS_DIR *.test]
}

foreach file [lsort [glob $globPattern]] {
    set tail [file tail $file]
    if [string match l.*.test $tail] {
	# This is an SCCS lockfile
	continue
    }
    puts stdout $tail
    if [catch {source $file} msg] {
	puts $msg
    }
}

# remove the required source files from the current dir.
if {[info exists TMP_DIR]} {
    foreach file $requiredSourceFiles {
        catch {file delete -force $file}
    }
    cd $currentDir
}