1 Star 0 Fork 0

liangkangnan/jimtcl

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
interactive.test 2.84 KB
一键复制 编辑 原始数据 按行查看 历史
Steve Bennett 提交于 2021-04-09 06:08 +08:00 . build: Allow some paths to contain spaces
source [file dirname [info script]]/testing.tcl
needs constraint jim
needs cmd socket
package require expect
set saveenv $env
# Make sure we start with an empty history
set env(HOME) [pwd]
file delete .jim_history
# spawn the process to be used for testing
set p [expect::spawn [list [info nameofexecutable]]]
set env $saveenv
$p timeout 1
# Turn on echo since we get echo with linenoise anyway
$p tty echo 1
proc wait-for-prompt {p} {
$p expect {\. }
}
# Start with an empty history
file delete test_history
wait-for-prompt $p
$p send "history load test_history\r"
# skip echoed output
$p expect {\r\n}
wait-for-prompt $p
test interactive-1.1 {basic command} -body {
$p send "lsort \[info commands li*\]\r"
# skip echoed output
$p expect {\r\n}
# get command result
$p expect {\r\n}
$p before
} -result {lindex linsert list} -cleanup {
wait-for-prompt $p
}
test interactive-1.2 {command line completion} {
set check 0
set failed 0
$p send "li\t"
$p expect {lindex} { incr check } TIMEOUT { incr failed }
if {!$failed} {
$p send "\t"
$p expect {linsert} { incr check }
$p send "\t"
$p expect {list} { incr check }
$p send \r
}
$p expect {\r\n}
wait-for-prompt $p
list $check $failed
} {3 0}
test interactive-1.3 {history show} -body {
$p send "history show\r"
$p expect {\r\n}
$p expect {history show\r\n}
string cat [$p before] [$p after]
} -result " 1 history load test_history\r\n 2 lsort \[info commands li*\]\r\n 3 list\r\n 4 history show\r\n" -cleanup {
wait-for-prompt $p
}
test interactive-1.4 {history getline} -body {
$p send "history getline {PROMPT> }\r"
$p expect {\r\n}
sleep 0.25
$p send "abc\bd\x01e\r"
$p expect {\r\n}
$p expect {\r\n}
$p before
} -result {eabd} -cleanup {
wait-for-prompt $p
}
test interactive-1.4 {history getline} -body {
$p send "set len \[history getline {PROMPT> } buf\]\r"
$p expect {\r\n}
sleep 0.25
$p send "abcde\r"
$p expect {\r\n}
$p expect {\r\n}
sleep 0.25
$p wait-for-prompt
$p send "list \$len \$buf\r"
$p expect {\r\n}
$p expect {\r\n}
$p before
} -result {5 abcde} -cleanup {
wait-for-prompt $p
}
test interactive-1.5 {insert wide character} -constraints utf8 -body {
$p send "set x a\u1100b"
# now arrow left twice over the wide char and insert another char
$p send \x1bOD
$p send \x1bOD
$p send y
$p send \r
$p expect {\r\n}
sleep 0.25
$p expect {\r\n}
$p before
} -result ay\u1100b -cleanup {
wait-for-prompt $p
}
test interactive-1.6 {insert utf-8 combining character} -constraints utf8 -body {
$p send "set x x\u0300"
# now arrow left twice over the combining char and "x" and insert another char
$p send \x1bOD
$p send \x1bOD
$p send y
$p send \r
$p expect {\r\n}
sleep 0.25
$p expect {\r\n}
$p before
} -result yx\u0300 -cleanup {
wait-for-prompt $p
}
# send ^D to cause the interpeter to exit
$p send \x04
sleep 0.25
$p expect EOF
$p close
testreport
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/liangkangnan/jimtcl.git
git@gitee.com:liangkangnan/jimtcl.git
liangkangnan
jimtcl
jimtcl
master

搜索帮助