Adding upstream version 3.1.0+dfsg.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
64dbec996d
commit
cfcebb1a7d
569 changed files with 205393 additions and 0 deletions
141
tests/tool_ni.tcl
Normal file
141
tests/tool_ni.tcl
Normal file
|
@ -0,0 +1,141 @@
|
|||
# @brief Common functions and variables for Tool Under Test (TUT).
|
||||
#
|
||||
# The script requires variables:
|
||||
# TUT_PATH - Assumed absolute path to the directory in which the TUT is located.
|
||||
# TUT_NAME - TUT name (without path).
|
||||
#
|
||||
# The script sets the variables:
|
||||
# TUT - The path (including the name) of the executable TUT.
|
||||
# error_prompt - Delimiter on error.
|
||||
# error_head - Header on error.
|
||||
|
||||
# Complete the path for Tool Under Test (TUT). For example, on Windows, TUT can be located in the Debug or Release
|
||||
# subdirectory. Note that Release build takes precedence over Debug.
|
||||
set conftypes {{} Release Debug}
|
||||
foreach i $conftypes {
|
||||
if { [file executable "$TUT_PATH/$i/$TUT_NAME"] || [file executable "$TUT_PATH/$i/$TUT_NAME.exe"] } {
|
||||
set TUT "$TUT_PATH/$i/$TUT_NAME"
|
||||
break
|
||||
}
|
||||
}
|
||||
if {![info exists TUT]} {
|
||||
error "$TUT_NAME executable not found"
|
||||
}
|
||||
|
||||
# prompt of error message
|
||||
set error_prompt ">>>"
|
||||
# the beginning of error message
|
||||
set error_head "$error_prompt Check-failed"
|
||||
|
||||
# Run commands from command line
|
||||
tcltest::loadTestedCommands
|
||||
|
||||
# namespace of internal functions
|
||||
namespace eval ly::private {
|
||||
namespace export *
|
||||
}
|
||||
|
||||
# Run the process with arguments.
|
||||
# Parameter cmd is a string with arguments.
|
||||
# Parameter wrn is a flag. Set to 1 if stderr should be ignored.
|
||||
# Returns a pair where the first is the return code and the second is the output.
|
||||
proc ly::private::ly_exec {cmd {wrn ""}} {
|
||||
global TUT
|
||||
try {
|
||||
set results [exec -- $TUT {*}$cmd]
|
||||
set status 0
|
||||
} trap CHILDSTATUS {results options} {
|
||||
# return code is not 0
|
||||
set status [lindex [dict get $options -errorcode] 2]
|
||||
} trap NONE results {
|
||||
if { $wrn == 1 } {
|
||||
set status 0
|
||||
} else {
|
||||
error "return code is 0 but something was written to stderr:\n$results\n"
|
||||
}
|
||||
} trap CHILDKILLED {results options} {
|
||||
set status [lindex [dict get $options -errorcode] 2]
|
||||
error "process was killed: $status"
|
||||
}
|
||||
list $status $results
|
||||
}
|
||||
|
||||
# Internal function.
|
||||
# Check the output with pattern.
|
||||
# Parameter pattern is a regex or an exact string to match.
|
||||
# Parameter msg is the output to check.
|
||||
# Parameter 'opt' is optional. If contains '-ex', then the 'pattern' parameter is
|
||||
# used as a simple string for exact matching of the output.
|
||||
proc ly::private::output_check {pattern msg {opt ""}} {
|
||||
if { $opt eq "" } {
|
||||
expr {![regexp -- $pattern $msg]}
|
||||
} elseif { $opt eq "-ex" } {
|
||||
expr {![string equal "$pattern" $msg]}
|
||||
} else {
|
||||
global error_head
|
||||
error "$error_head unrecognized value of parameter 'opt'"
|
||||
}
|
||||
}
|
||||
|
||||
# Execute yanglint with arguments and expect success.
|
||||
# Parameter cmd is a string of arguments.
|
||||
# Parameter pattern is a regex or an exact string to match.
|
||||
# Parameter 'opt' is optional. If contains '-ex', then the 'pattern' parameter is
|
||||
# used as a simple string for exact matching of the output.
|
||||
proc ly_cmd {cmd {pattern ""} {opt ""}} {
|
||||
namespace import ly::private::*
|
||||
lassign [ly_exec $cmd] rc msg
|
||||
if { $rc != 0 } {
|
||||
error "unexpected return code $rc:\n$msg\n"
|
||||
}
|
||||
if { $pattern ne "" && [output_check $pattern $msg $opt] } {
|
||||
error "unexpected output:\n$msg\n"
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
# Execute yanglint with arguments and expect error.
|
||||
# Parameter cmd is a string of arguments.
|
||||
# Parameter pattern is a regex.
|
||||
proc ly_cmd_err {cmd pattern} {
|
||||
namespace import ly::private::*
|
||||
lassign [ly_exec $cmd] rc msg
|
||||
if { $rc == 0 } {
|
||||
error "unexpected return code $rc"
|
||||
}
|
||||
if { [output_check $pattern $msg] } {
|
||||
error "unexpected output:\n$msg\n"
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
# Execute yanglint with arguments, expect warning in stderr but success.
|
||||
# Parameter cmd is a string of arguments.
|
||||
# Parameter pattern is a regex.
|
||||
proc ly_cmd_wrn {cmd pattern} {
|
||||
namespace import ly::private::*
|
||||
lassign [ly_exec $cmd 1] rc msg
|
||||
if { $rc != 0 } {
|
||||
error "unexpected return code $rc:\n$msg\n"
|
||||
}
|
||||
if { [output_check $pattern $msg] } {
|
||||
error "unexpected output:\n$msg\n"
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
# Check if yanglint supports the specified option.
|
||||
# Parameter opt is a option to be found.
|
||||
# Return true if option is found otherwise false.
|
||||
proc ly_opt_exists {opt} {
|
||||
namespace import ly::private::*
|
||||
lassign [ly_exec "--help"] rc msg
|
||||
if { $rc != 0 } {
|
||||
error "unexpected return code $rc:\n$msg\n"
|
||||
}
|
||||
if { [output_check $opt $msg] } {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue