diff options
author | Björn Gustavsson <[email protected]> | 2014-06-16 12:03:08 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2014-06-16 12:03:08 +0200 |
commit | 26e63b26e605a74ba0a0a58c1fb1cb0ba358efed (patch) | |
tree | 30b4f613f1d24c5db5d3827d48b74c6220a5cd03 /lib/asn1/test/asn1_test_lib.erl | |
parent | 5a2aedb547c7e878d3694e8695a7985192a0a4d7 (diff) | |
parent | 0db2668288bf399983e0f6daac85b00d68ab0360 (diff) | |
download | otp-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.erl | 55 |
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]) |