blob: 0381e6c2dd9220ec3cdfc883ccb1998c36988682 [file] [log] [blame]
# detect the path to the yanglint binary
if { [info exists ::env(YANGLINT)] } {
set yanglint "$env(YANGLINT)"
} else {
set yanglint "../../../../build/yanglint"
}
# set the timeout to 1 second
set timeout 1
# expect a single line of anchored regex output
proc expect_output {output} {
expect {
-re "^${output}$" {}
timeout {exit 1}
}
}
# send a command and either expect some anchored regex output if specified or just an empty line
proc expect_command {command has_output output} {
send -- "${command}\r"
if ($has_output==1) {
expect {
-re "^${command}\r\n${output}$" {}
timeout {exit 1}
}
} else {
# input echoes
expect {
-re "^${command}\r\n$" {}
timeout {exit 1}
}
expect {
-re "^> $" {}
timeout {exit 1}
}
}
}
# send a completion request and check if the anchored regex output matches
proc expect_completion {input output} {
send -- "${input}\t"
expect {
# expecting echoing input, output and 10 terminal control characters
-re "^${input}\r> ${output}.*\r.*$" {}
timeout {exit 1}
}
}
# send a completion request and check if the anchored regex hint options match
proc expect_hint {input prev_input hints} {
set output {}
foreach i $hints {
# each element might have some number of spaces and CRLF around it
append output "${i} *(?:\\r\\n)?"
}
send -- "${input}\t"
expect {
# expecting the hints, previous input from which the hints were generated
# and some number of terminal control characters
-re "^\r\n${output}\r> ${prev_input}.*\r.*$" {}
timeout {exit 1}
}
}