Blame testsuite/runtest.all/libs.exp

Packit 62fe53
# Copyright (C) 1997-2016 Free Software Foundation, Inc.
Packit 62fe53
#
Packit 62fe53
# This file is part of DejaGnu.
Packit 62fe53
#
Packit 62fe53
# DejaGnu is free software; you can redistribute it and/or modify it
Packit 62fe53
# under the terms of the GNU General Public License as published by
Packit 62fe53
# the Free Software Foundation; either version 3 of the License, or
Packit 62fe53
# (at your option) any later version.
Packit 62fe53
#
Packit 62fe53
# DejaGnu is distributed in the hope that it will be useful, but
Packit 62fe53
# WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 62fe53
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 62fe53
# General Public License for more details.
Packit 62fe53
#
Packit 62fe53
# You should have received a copy of the GNU General Public License
Packit 62fe53
# along with DejaGnu; if not, write to the Free Software Foundation,
Packit 62fe53
# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
Packit 62fe53
Packit 62fe53
load_lib libsup.exp
Packit 62fe53
Packit 62fe53
proc process_test { test } {
Packit 62fe53
    global srcdir
Packit 62fe53
    global subdir
Packit 62fe53
    global objdir
Packit 62fe53
    global EXPECT
Packit 62fe53
Packit 62fe53
    verbose "Executing test case $test"
Packit 62fe53
    set text "\[- A-Za-z0-9\,\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]*"
Packit 62fe53
Packit 62fe53
    set timeout 150
Packit 62fe53
Packit 62fe53
    if [file exists $test] {
Packit 62fe53
	verbose "Processing test $test" 2
Packit 62fe53
	set res [catch {
Packit 62fe53
	    exec -ignorestderr \
Packit 62fe53
		$EXPECT $test $srcdir $subdir [pwd] \
Packit 62fe53
		> OUTPUT 2>ERROR
Packit 62fe53
	}]
Packit 62fe53
	if { $res } {
Packit 62fe53
	    perror "$test failed" 0
Packit 62fe53
Packit 62fe53
	    set fp [open "OUTPUT" r]
Packit 62fe53
	    set output [read $fp]
Packit 62fe53
	    close $fp
Packit 62fe53
	    puts "$test stdout: >$output<"
Packit 62fe53
Packit 62fe53
	    set fp [open "ERROR" r]
Packit 62fe53
	    set error [read $fp]
Packit 62fe53
	    close $fp
Packit 62fe53
	    puts "$test stderr: >$error<"
Packit 62fe53
	}
Packit 62fe53
Packit 62fe53
	spawn -open [open "|cat OUTPUT" r]
Packit 62fe53
	expect {
Packit 62fe53
	    "No such file or directory" {
Packit 62fe53
		perror "$test wouldn't run" 0
Packit 62fe53
	    }
Packit 62fe53
	    -re "\[\r\n\]*NOTSUPPORTED: $text\[\r\n\]*" {
Packit 62fe53
		unsupported "[lrange $expect_out(0,string) 1 end]"
Packit 62fe53
		exp_continue
Packit 62fe53
	    }
Packit 62fe53
	    -re "\[\r\n\]*NOTTESTED: $text\[\r\n\]*" {
Packit 62fe53
		untested "[lrange $expect_out(0,string) 1 end]"
Packit 62fe53
		exp_continue
Packit 62fe53
	    }
Packit 62fe53
	    -re "\[\r\n\]*PASSED: $text\[\r\n\]*" {
Packit 62fe53
		pass "[lrange $expect_out(0,string) 1 end]"
Packit 62fe53
		exp_continue
Packit 62fe53
	    }
Packit 62fe53
	    -re "\[\r\n\]*FAILED: $text\[\r\n\]*" {
Packit 62fe53
		fail "[lrange $expect_out(0,string) 1 end]"
Packit 62fe53
		exp_continue
Packit 62fe53
	    }
Packit 62fe53
	    -re "\[\r\n\]*WARNED: $text\[\r\n\]*" {
Packit 62fe53
		verbose "$expect_out(0,string)" 2
Packit 62fe53
		exp_continue
Packit 62fe53
	    }
Packit 62fe53
	    -re "\[\r\n\]*ERRORED: $text\[\r\n\]*" {
Packit 62fe53
		verbose "$expect_out(0,string)" 2
Packit 62fe53
		exp_continue
Packit 62fe53
	    }
Packit 62fe53
	    timeout {
Packit 62fe53
		perror "$test timed out" 0
Packit 62fe53
		exp_continue
Packit 62fe53
	    }
Packit 62fe53
	    eof {
Packit 62fe53
		verbose "All Done" 3
Packit 62fe53
	    }
Packit 62fe53
	}
Packit 62fe53
	file delete OUTPUT ERROR
Packit 62fe53
    } else {
Packit 62fe53
	perror "$test doesn't exist" 0
Packit 62fe53
    }
Packit 62fe53
}
Packit 62fe53
Packit 62fe53
if ![info exists EXPECT] {
Packit 62fe53
    set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect]
Packit 62fe53
    verbose "EXPECT defaulting to $EXPECT" 2
Packit 62fe53
}
Packit 62fe53
Packit 62fe53
make_defaults_file [pwd]/setval.tmp
Packit 62fe53
Packit 62fe53
foreach i [glob $srcdir/$subdir/*.test] {
Packit 62fe53
    process_test $i
Packit 62fe53
}
Packit 62fe53
Packit 62fe53
# Clean up behind ourselves.
Packit 62fe53
file delete .tmp [pwd]/setval.tmp