cmdtest/t/CMDTEST_stdxxx_check.rb
2018-04-12 17:09:44 +02:00

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