aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/asn1_test_lib.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2014-06-16 12:03:08 +0200
committerBjörn Gustavsson <[email protected]>2014-06-16 12:03:08 +0200
commit26e63b26e605a74ba0a0a58c1fb1cb0ba358efed (patch)
tree30b4f613f1d24c5db5d3827d48b74c6220a5cd03 /lib/asn1/test/asn1_test_lib.erl
parent5a2aedb547c7e878d3694e8695a7985192a0a4d7 (diff)
parent0db2668288bf399983e0f6daac85b00d68ab0360 (diff)
downloadotp-26e63b26e605a74ba0a0a58c1fb1cb0ba358efed.tar.gz
otp-26e63b26e605a74ba0a0a58c1fb1cb0ba358efed.tar.bz2
otp-26e63b26e605a74ba0a0a58c1fb1cb0ba358efed.zip
Merge branch 'bjorn/asn1/dialyzer-warnings/OTP-11372' into maint
* bjorn/asn1/dialyzer-warnings/OTP-11372: (23 commits) BER: Eliminate dialyzer warnings for specialized decode functions BER: Eliminate dialyzer warning for encoding of BIT STRINGs BER: Optimize encoding of ENUMERATED BER: Remove a redundant clause in encoding of open types (U)PER: Fix decoding of named INTEGER (U)PER: Fix encoding of a semi-constrained, named INTEGER (U)PER: Optimize handling of named BIT STRING with a lower zero bound PER: Optimize encoding of character strings with simple ranges PER: Remove unnecessary clause for handling DEFAULT (U)PER: Suppress dialyzer warnings for complete/1 Test suites: Add support for running Dialyzer on generated code Improve tests of DEFAULT values Correct OCTET STRING default when legacy_erlang_types is active Remove old DEFAULT-checking code made obsolete in the previous commit Rewrite the code for testing DEFAULT for DER Test DEFAULT more thoroughly Set.py: Correct illegal DEFAULT value BER: Optimize decoding of ENUMERATED BER: Suppress dialyzer warnings for encode_bit_string/4 BER: Inline testing of constraints when decoding ...
Diffstat (limited to 'lib/asn1/test/asn1_test_lib.erl')
-rw-r--r--lib/asn1/test/asn1_test_lib.erl55
1 files changed, 54 insertions, 1 deletions
diff --git a/lib/asn1/test/asn1_test_lib.erl b/lib/asn1/test/asn1_test_lib.erl
index 417380159e..06e9b2c093 100644
--- a/lib/asn1/test/asn1_test_lib.erl
+++ b/lib/asn1/test/asn1_test_lib.erl
@@ -21,19 +21,72 @@
-export([compile/3,compile_all/3,compile_erlang/3,
hex_to_bin/1,
+ parallel/0,
roundtrip/3,roundtrip/4,roundtrip_enc/3,roundtrip_enc/4]).
-include_lib("test_server/include/test_server.hrl").
+run_dialyzer() ->
+ false.
+
compile(File, Config, Options) -> compile_all([File], Config, Options).
compile_all(Files, Config, Options) ->
DataDir = ?config(data_dir, Config),
CaseDir = ?config(case_dir, Config),
- [compile_file(filename:join(DataDir, F), [{outdir, CaseDir}|Options])
+ [compile_file(filename:join(DataDir, F), [{outdir, CaseDir},
+ debug_info|Options])
|| F <- Files],
+ dialyze(Files, Options),
ok.
+parallel() ->
+ case erlang:system_info(schedulers) > 1 andalso not run_dialyzer() of
+ true -> [parallel];
+ false -> []
+ end.
+
+dialyze(Files, Options) ->
+ case not run_dialyzer() orelse lists:member(abs, Options) of
+ true -> ok;
+ false -> dialyze(Files)
+ end.
+
+dialyze(Files) ->
+ Beams0 = [code:which(module(F)) || F <- Files],
+ Beams = [code:which(asn1rt_nif)|Beams0],
+ case dialyzer:run([{files,Beams},
+ {warnings,[no_improper_lists]},
+ {get_warnings,true}]) of
+ [] ->
+ ok;
+ [_|_]=Ws ->
+ io:put_chars([[B,$\n] || B <- Beams]),
+ io:put_chars([dialyzer:format_warning(W) || W <- Ws]),
+ error(dialyzer_warnings)
+ end.
+
+module(F0) ->
+ F1 = filename:basename(F0),
+ F2 = case filename:extension(F1) of
+ ".asn" ->
+ filename:rootname(F1);
+ ".asn1" ->
+ filename:rootname(F1);
+ ".py" ->
+ filename:rootname(F1);
+ "" ->
+ F1
+ end,
+ F = case filename:extension(F2) of
+ ".set" ->
+ filename:rootname(F2);
+ "" ->
+ F2
+ end,
+ list_to_atom(F).
+%% filename:join(CaseDir, F ++ ".beam").
+
compile_file(File, Options) ->
try
ok = asn1ct:compile(File, [warnings_as_errors|Options])