add --stop-on-error option

to stop after first error. If running in parallel,
we don't know how to stop immediately, so that
option combination is disallowed.
This commit is contained in:
Johan Holmberg
2016-09-17 23:17:23 +02:00
parent 419ace2d58
commit e6a9092783

@ -166,6 +166,7 @@ module Cmdtest
end
def run(clog, runner)
ok = false
clog.notify("testmethod", @method) do
obj = @adm_class.runtime_class.new(self, clog, runner)
Dir.chdir(obj._work_dir.path)
@ -177,6 +178,7 @@ module Cmdtest
clog.assert_success
runner.method_filter.success(method_id)
ok = true
rescue Cmdtest::AssertFailed => e
clog.assert_failure(e.message)
runner.method_filter.failure(method_id)
@ -190,6 +192,7 @@ module Cmdtest
runner.method_filter.failure(method_id)
end
end
return ok
ensure
Dir.chdir(ORIG_CWD)
end
@ -428,7 +431,11 @@ module Cmdtest
for adm_class in adm_file.adm_classes
clog.notify("testclass", adm_class.runtime_class.display_name) do
for adm_method in adm_class.adm_methods
adm_method.run(clog, self)
ok = adm_method.run(clog, self)
if !ok && @opts.stop_on_error
puts "cmdtest: exiting after first error ..."
exit(1)
end
if $cmdtest_got_ctrl_c > 0
puts "cmdtest: exiting after Ctrl-C ..."
exit(1)
@ -574,6 +581,7 @@ module Cmdtest
pr.add("", "--test", "only run named test", type: [String])
pr.add("", "--xml", "write summary on JUnit format", type: String, metavar: "FILE")
pr.add("", "--no-exit-code", "exit with 0 status even after errors")
pr.add("", "--stop-on-error","exit after first error")
pr.add("-i", "--incremental", "incremental mode")
pr.add("", "--slave", "run in slave mode", type: String)
pr.addpos("arg", "testfile or pattern", nargs: 0..999)
@ -583,6 +591,11 @@ module Cmdtest
def run
opts = _parse_options
if opts.stop_on_error && opts.parallel != 1
puts "cmdtest: error: --stop-on-error can not be used with --parallel"
exit(1)
end
_update_cmdtest_level(opts.slave ? 0 : 1)
files = []