# 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} } }