📄 default.exp
字号:
# Copyright (C) 1996 Cygnus Support# 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 2 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, write to the Free Software# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Please email any bugs, comments, and/or additions to this file to:# bug-dejagnu@prep.ai.mit.edu# This file was written by Tom Tromey <tromey@cygnus.com>set testdrv "unix/tktest"set tprompt "%"## Extract and print the version number of wish.#proc tk_version {} { global testdrv if {! [catch {exec $testdrv -version} output] && ! [regsub {^.*version } $output {} version]} then { clone_output "Tk library is version\t$version\n" }}## Source a file.#proc tk_load {file} { global subdir testdrv spawn_id if {! [file exists $file]} then { perror "$file does not exist." return -1 } verbose "Sourcing $file..." send "source $file\n" return 0}## Exit the test driver.#proc tk_exit {} { # If we started Xvfb, we should kill it. This doesn't happen right # now, so this proc does nothing. # xvfb_exit}## Find X display to use. Return 0 if not found. Set DISPLAY# environment variable if display found.#proc find_x_display {} { global env if {[info exists env(TEST_DISPLAY)]} then { set env(DISPLAY) $env(TEST_DISPLAY) return 1 } return 0}## Start the test driver.#proc tk_start {} { global testdrv objdir subdir srcdir spawn_id tprompt set testdrv "$objdir/$testdrv" set defs "$srcdir/../tests/defs" set timeout 100 set timetol 0 if {! [find_x_display]} then { return -1 } spawn $testdrv if ![file exists ${srcdir}/../tests] { perror "The source for the test cases is missing." 0 return -1 } send "[list set srcdir ${srcdir}/../tests]\r" expect { -re "set VERBOSE 1\[\r\n\]*1\[\r\n\]*%" { verbose "Set verbose flag for tests" exp_continue } -re "${srcdir}/../tests\[\r\n\]*$tprompt" { verbose "Set srcdir to $srcdir/../tests" 2 } -re "no files matched glob pattern" { warning "Didn't set srcdir to $srcdir/../tests" } timeout { perror "Couldn't set srcdir" return -1 } } if ![file exists $defs] then { perror "$defs does not exist." return -1 } verbose "Sourcing $defs..." send "source $defs\r\n" expect { -re ".*source $defs.*$" { verbose "Sourced $defs" } "Error: couldn't read file*" { perror "Couldn't source $defs" return -1 } "%" { verbose "Got prompt, sourced $defs" } timeout { warning "Timed out sourcing $defs." if { $timetol <= 3 } { incr timetol exp_continue } else { return -1 } } } set timetol 0 sleep 2 send "set VERBOSE 1\n" expect { -re "% 1.*%" { verbose "Set verbose flag for tests" } -re "set VERBOSE 1.*1.*%" { verbose "Set verbose flag for tests" } timeout { perror "Timed out setting verbose flag." if { $timetol <= 3 } { exp_continue } else { return -1 } } } return $spawn_id}################################################################## Utility functions.#proc read_file {name} { set id [open $name r] set contents [read $id] close $id return $contents}proc write_file {name contents} { set id [open $name w] puts -nonewline $id $contents close $id}# NOTE that this fails to copy files with NULs in them. Change# implementation to "exec cp" if required.proc copy_file {from to} { write_file $to [read_file $from]}################################################################## Start/stop Xvfb. These procs aren't used right now; we assume Xvfb# is already running.### Stop Xvfb.#proc xvfb_exit {} { global Xvfb_spawn_id # Send C-c to kill it. send -i $Xvfb_spawn_id "\003"}## Start Xvfb. Return 0 on error, 1 if started. Set DISPLAY# environment variable on successful start.# #proc xvfb_start {} { global spawn_id Xvfb_spawn_id Xvfb_screen env # FIXME should look for Xvfb in build directory. Do this later, # when we actually build Xvfb. set Xvfb [which Xvfb] # Why "0"? I don't know, but that is what the manual says. if {$Xvfb == 0} then { perror "Couldn't find Xvfb" return 0 } verbose "Xvfb is $Xvfb" # Pick a number at random... set Xvfb_screen 23 while {$Xvfb_screen < 100} { spawn $Xvfb :$Xvfb_screen expect { "Server is already active" { incr Xvfb_screen } timeout { break } } } if {$Xvfb_screen == 100} then { perror "Xvfb screen is 100!" return 0 } set Xvfb_spawn_id $spawn_id set env(DISPLAY) :$Xvfb_screen verbose "Screen is :$Xvfb_screen" return 1}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -