aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorPeter Andersson <[email protected]>2015-11-24 00:11:45 +0100
committerPeter Andersson <[email protected]>2015-12-10 15:24:59 +0100
commit6d2bac38720ec27763a0cea2ae48060d501fce62 (patch)
tree51d5c038e051f67677ec663b6081ca9dee9b068a /lib
parent49f56f9dc37499b6ebb365d2304eee940d57801d (diff)
downloadotp-6d2bac38720ec27763a0cea2ae48060d501fce62.tar.gz
otp-6d2bac38720ec27763a0cea2ae48060d501fce62.tar.bz2
otp-6d2bac38720ec27763a0cea2ae48060d501fce62.zip
Let missing suites affect ct:run_test/1 return and ct_run exit status
Diffstat (limited to 'lib')
-rw-r--r--lib/common_test/doc/src/run_test_chapter.xml16
-rw-r--r--lib/common_test/src/ct_run.erl18
2 files changed, 22 insertions, 12 deletions
diff --git a/lib/common_test/doc/src/run_test_chapter.xml b/lib/common_test/doc/src/run_test_chapter.xml
index d80453fc98..082a587c8d 100644
--- a/lib/common_test/doc/src/run_test_chapter.xml
+++ b/lib/common_test/doc/src/run_test_chapter.xml
@@ -60,15 +60,15 @@
<p>If compilation should fail for one or more suites, the compilation errors
are printed to tty and the operator is asked if the test run should proceed
without the missing suites, or be aborted. If the operator chooses to proceed,
- it is noted in the HTML log which tests have missing suites. If Common Test is
- unable to prompt the user after compilation failure (if Common Test doesn't
- control stdin), the test run will proceed automatically without the missing
- suites. This behaviour can however be modified with the
- <c><![CDATA[ct_run]]></c> flag <c><![CDATA[-abort_if_missing_suites]]></c>,
+ it is noted in the HTML log which tests have missing suites. Also, for each failed
+ compilation, the failed tests counter in the return value of
+ <c><![CDATA[ct:run_test/1]]></c> is incremented. If Common Test is unable to prompt
+ the user after compilation failure (if Common Test doesn't control stdin), the test
+ run will proceed automatically without the missing suites. In order to always
+ abort the test run (without operator interaction) if one or more suites fail
+ to compile, the <c><![CDATA[ct_run]]></c> flag <c><![CDATA[-abort_if_missing_suites]]></c>,
or the <c><![CDATA[ct:run_test/1]]></c> option
- <c><![CDATA[{abort_if_missing_suites,TrueOrFalse}]]></c>. If
- <c><![CDATA[abort_if_missing_suites]]></c> is set (to true), the test run
- will stop immediately if some suites fail to compile.</p>
+ <c><![CDATA[{abort_if_missing_suites,true}]]></c> should be set.</p>
<p>Any help module (i.e. regular Erlang module with name not ending with
"_SUITE") that resides in the same test object directory as a suite
diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl
index 97994d8d6f..0b646ffd07 100644
--- a/lib/common_test/src/ct_run.erl
+++ b/lib/common_test/src/ct_run.erl
@@ -1771,7 +1771,18 @@ compile_and_run(Tests, Skip, Opts, Args) ->
{Tests1,Skip1} ->
ReleaseSh = proplists:get_value(release_shell, Args),
ct_util:set_testdata({release_shell,ReleaseSh}),
- possibly_spawn(ReleaseSh == true, Tests1, Skip1, Opts)
+ TestResult =
+ possibly_spawn(ReleaseSh == true, Tests1, Skip1, Opts),
+ case TestResult of
+ {Ok,Errors,Skipped} ->
+ NoOfMakeErrors =
+ lists:foldl(fun({_,BadMods}, X) ->
+ X + length(BadMods)
+ end, 0, SuiteMakeErrors),
+ {Ok,Errors+NoOfMakeErrors,Skipped};
+ ErrorResult ->
+ ErrorResult
+ end
catch
_:BadFormat ->
{error,BadFormat}
@@ -2071,10 +2082,10 @@ final_skip([Skip|Skips], Final) ->
final_skip([], Final) ->
lists:reverse(Final).
-continue(_MakeErrors, true) ->
- false;
continue([], _) ->
true;
+continue(_MakeErrors, true) ->
+ false;
continue(_MakeErrors, _AbortIfMissingSuites) ->
io:nl(),
OldGl = group_leader(),
@@ -2107,7 +2118,6 @@ continue(_MakeErrors, _AbortIfMissingSuites) ->
end.
set_group_leader_same_as_shell() ->
- %%! Locate the shell process... UGLY!!!
GS2or3 = fun(P) ->
case process_info(P,initial_call) of
{initial_call,{group,server,X}} when X == 2 ; X == 3 ->