From 98de31e836a04ccc8f5f9acd90b9ba0803a24ab5 Mon Sep 17 00:00:00 2001 From: Stavros Aronis Date: Fri, 18 Jun 2010 03:44:25 +0300 Subject: Test suites for Dialyzer This is a transcription of most of the cvs.srv.it.uu.se:/hipe repository dialyzer_tests into test suites that use the test server framework. See README for information on how to use the included scripts for modifications and updates. When testing Dialyzer it's important that several OTP modules are included in the plt. The suites takes care of that too. --- lib/dialyzer/test/r9c_tests_SUITE.erl | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 lib/dialyzer/test/r9c_tests_SUITE.erl (limited to 'lib/dialyzer/test/r9c_tests_SUITE.erl') diff --git a/lib/dialyzer/test/r9c_tests_SUITE.erl b/lib/dialyzer/test/r9c_tests_SUITE.erl new file mode 100644 index 0000000000..af5a77a432 --- /dev/null +++ b/lib/dialyzer/test/r9c_tests_SUITE.erl @@ -0,0 +1,69 @@ +-module(r9c_tests_SUITE). + +-include_lib("test_server/include/test_server.hrl"). + +-export([all/0, groups/0, init_per_group/2, end_per_group/2, + init_per_testcase/2, fin_per_testcase/2]). + +-export([asn1/1, inets/1, mnesia/1]). + +-define(default_timeout, ?t:minutes(6)). +-define(dialyzer_options, ?config(dialyzer_options, Config)). +-define(datadir, ?config(data_dir, Config)). +-define(privdir, ?config(priv_dir, Config)). + +groups() -> []. + +init_per_group(_GroupName, Config) -> Config. + +end_per_group(_GroupName, Config) -> Config. + +init_per_testcase(_Case, Config) -> + ?line Dog = ?t:timetrap(?default_timeout), + [{dialyzer_options, [{defines,[{vsn,42}]}]}, {watchdog, Dog} | Config]. + +fin_per_testcase(_Case, _Config) -> + Dog = ?config(watchdog, _Config), + ?t:timetrap_cancel(Dog), + ok. + +all() -> + [asn1,inets,mnesia]. + +asn1(Config) when is_list(Config) -> + ?line run(Config, {asn1, dir}), + ok. + +inets(Config) when is_list(Config) -> + ?line run(Config, {inets, dir}), + ok. + +mnesia(Config) when is_list(Config) -> + ?line run(Config, {mnesia, dir}), + ok. + +run(Config, TestCase) -> + case run_test(Config, TestCase) of + ok -> ok; + {fail, Reason} -> + ?t:format("~s",[Reason]), + fail() + end. + +run_test(Config, {TestCase, Kind}) -> + Dog = ?config(watchdog, Config), + Options = ?dialyzer_options, + Dir = ?datadir, + OutDir = ?privdir, + case dialyzer_test:dialyzer_test(Options, TestCase, Kind, + Dir, OutDir, Dog) of + same -> ok; + {differ, DiffList} -> + {fail, + io_lib:format("\nTest ~p failed:\n~p\n", + [TestCase, DiffList])} + end. + +fail() -> + io:format("failed\n"), + ?t:fail(). -- cgit v1.2.3 From 059ca05caa95d91411c071c8542cef400a066e17 Mon Sep 17 00:00:00 2001 From: Stavros Aronis Date: Fri, 18 Feb 2011 20:02:00 +0200 Subject: Major restructure of dialyzer's testsuite Generation of the PLT is now performed without using OS commands. We still try to copy in the default plt to make small scale testing efficient. If generation/checking fails, suites are skipped except plt_tests_SUITE which contains a bare PLT check that fails normally. --- lib/dialyzer/test/r9c_tests_SUITE.erl | 115 ++++++++++++++++------------------ 1 file changed, 55 insertions(+), 60 deletions(-) (limited to 'lib/dialyzer/test/r9c_tests_SUITE.erl') diff --git a/lib/dialyzer/test/r9c_tests_SUITE.erl b/lib/dialyzer/test/r9c_tests_SUITE.erl index af5a77a432..cd5bd5ec61 100644 --- a/lib/dialyzer/test/r9c_tests_SUITE.erl +++ b/lib/dialyzer/test/r9c_tests_SUITE.erl @@ -1,69 +1,64 @@ --module(r9c_tests_SUITE). - --include_lib("test_server/include/test_server.hrl"). - --export([all/0, groups/0, init_per_group/2, end_per_group/2, - init_per_testcase/2, fin_per_testcase/2]). +%% ATTENTION! +%% This is an automatically generated file. Do not edit. +%% Use './remake' script to refresh it if needed. +%% All Dialyzer options should be defined in dialyzer_options +%% file. --export([asn1/1, inets/1, mnesia/1]). - --define(default_timeout, ?t:minutes(6)). --define(dialyzer_options, ?config(dialyzer_options, Config)). --define(datadir, ?config(data_dir, Config)). --define(privdir, ?config(priv_dir, Config)). +-module(r9c_tests_SUITE). -groups() -> []. +-include("ct.hrl"). +-include("dialyzer_test_constants.hrl"). -init_per_group(_GroupName, Config) -> Config. +-export([suite/0, init_per_suite/0, init_per_suite/1, + end_per_suite/1, all/0]). +-export([r9c_tests_SUITE_consistency/1, asn1/1, inets/1, mnesia/1]). -end_per_group(_GroupName, Config) -> Config. +suite() -> + [{timetrap, {minutes, 20}}]. -init_per_testcase(_Case, Config) -> - ?line Dog = ?t:timetrap(?default_timeout), - [{dialyzer_options, [{defines,[{vsn,42}]}]}, {watchdog, Dog} | Config]. +init_per_suite() -> + [{timetrap, ?plt_timeout}]. +init_per_suite(Config) -> + OutDir = ?config(priv_dir, Config), + case dialyzer_common:check_plt(OutDir) of + fail -> {skip, "Plt creation/check failed."}; + ok -> [{dialyzer_options, [{defines,[{vsn,42}]}]}|Config] + end. -fin_per_testcase(_Case, _Config) -> - Dog = ?config(watchdog, _Config), - ?t:timetrap_cancel(Dog), - ok. +end_per_suite(_Config) -> + ok. all() -> - [asn1,inets,mnesia]. - -asn1(Config) when is_list(Config) -> - ?line run(Config, {asn1, dir}), - ok. - -inets(Config) when is_list(Config) -> - ?line run(Config, {inets, dir}), - ok. - -mnesia(Config) when is_list(Config) -> - ?line run(Config, {mnesia, dir}), - ok. - -run(Config, TestCase) -> - case run_test(Config, TestCase) of - ok -> ok; - {fail, Reason} -> - ?t:format("~s",[Reason]), - fail() - end. - -run_test(Config, {TestCase, Kind}) -> - Dog = ?config(watchdog, Config), - Options = ?dialyzer_options, - Dir = ?datadir, - OutDir = ?privdir, - case dialyzer_test:dialyzer_test(Options, TestCase, Kind, - Dir, OutDir, Dog) of - same -> ok; - {differ, DiffList} -> - {fail, - io_lib:format("\nTest ~p failed:\n~p\n", - [TestCase, DiffList])} - end. + [r9c_tests_SUITE_consistency,asn1,inets,mnesia]. + +dialyze(Config, TestCase) -> + Opts = ?config(dialyzer_options, Config), + Dir = ?config(data_dir, Config), + OutDir = ?config(priv_dir, Config), + dialyzer_common:check(TestCase, Opts, Dir, OutDir). + +r9c_tests_SUITE_consistency(Config) -> + Dir = ?config(data_dir, Config), + case dialyzer_common:new_tests(Dir, all()) of + [] -> ok; + New -> ct:fail({missing_tests,New}) + end. + +asn1(Config) -> + case dialyze(Config, asn1) of + 'same' -> 'same'; + Error -> ct:fail(Error) + end. + +inets(Config) -> + case dialyze(Config, inets) of + 'same' -> 'same'; + Error -> ct:fail(Error) + end. + +mnesia(Config) -> + case dialyze(Config, mnesia) of + 'same' -> 'same'; + Error -> ct:fail(Error) + end. -fail() -> - io:format("failed\n"), - ?t:fail(). -- cgit v1.2.3