70 lines
1.7 KiB
Ruby
70 lines
1.7 KiB
Ruby
|
|
require "selftest_utils"
|
|
|
|
class CMDTEST_stdxxx_check < Cmdtest::Testcase
|
|
|
|
include SelftestUtils
|
|
|
|
#========================================
|
|
# Using "define_method" to avoid duplicating definitions of
|
|
# stderr/stdout methods.
|
|
|
|
def self._define_stdxxx_methods(stdxxx)
|
|
|
|
#----------------------------------------
|
|
# stdxxx_check
|
|
#----------------------------------------
|
|
|
|
define_method("test_#{stdxxx}_check_CORRECT") do
|
|
create_CMDTEST_foo [
|
|
"cmd 'echo_#{stdxxx}.rb --lines A B C A' do",
|
|
" #{stdxxx}_check do |lines|",
|
|
" n = 0",
|
|
" for line in lines",
|
|
" n +=1 if line == 'A'",
|
|
" end",
|
|
" assert n == 2, \"A occurs \#{n} times (not 2)\"",
|
|
" end",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### echo_#{stdxxx}.rb --lines A B C A",
|
|
]
|
|
end
|
|
end
|
|
|
|
define_method("test_#{stdxxx}_check_INCORRECT") do
|
|
create_CMDTEST_foo [
|
|
"cmd 'echo_#{stdxxx}.rb --lines A B C D' do",
|
|
" #{stdxxx}_check do |lines|",
|
|
" n = 0",
|
|
" for line in lines",
|
|
" n +=1 if line == 'A'",
|
|
" end",
|
|
" assert n == 2, \"A occurs \#{n} times (not 2)\"",
|
|
" end",
|
|
"end",
|
|
]
|
|
|
|
cmd_cmdtest do
|
|
stdout_equal [
|
|
"### echo_#{stdxxx}.rb --lines A B C D",
|
|
"--- ERROR: assertion: A occurs 1 times (not 2)",
|
|
]
|
|
exit_nonzero
|
|
end
|
|
end
|
|
|
|
end # _define_stdxxx_methods
|
|
|
|
#----------------------------------------
|
|
|
|
for stdxxx in ["stderr", "stdout"]
|
|
_define_stdxxx_methods(stdxxx)
|
|
end
|
|
|
|
end
|
|
|