aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/test
AgeCommit message (Collapse)Author
2016-10-31Propagate exceptions fully when using proc_libLoïc Hoguin
This makes proc_lib behaves like a normal process as far as the propagation of exceptions is concerned. Before this commit, the following difference could be observed: 6> spawn_link(fun() -> ssl:send(a,b) end). <0.43.0> 7> flush(). Shell got {'EXIT',<0.43.0>, {function_clause, [{ssl,send,[a,b],[{file,"..."},{line,275}]}]}} ok 8> proc_lib:spawn_link(fun() -> ssl:send(a,b) end). <0.46.0> 9> flush(). Shell got {'EXIT',<0.46.0>,function_clause} After this commit, we get the following instead: 3> flush(). Shell got {'EXIT',<0.61.0>, {function_clause, [{ssl,send,[a,b],[{file,"..."},{line,275}]}, {proc_lib,init_p,3,[{file,"..."},{line,232}]}]}} The stacktrace will show minor differences of course but the form is now the same as without proc_lib. The rationale behind this commit is that: * We now have a single form regardless of how the process was started * We can use the stacktrace to programmatically alter behavior (for example an HTTP server identifying problems in input decoding to send back a generic 400, or a 500 otherwise) * We can access the stacktrace to print it somewhere (for example an HTTP server could send it back to the client when a debug mode is enabled)
2016-10-19Merge branch 'maint'Hans Bolinder
* maint: dbg:fun2ms: allow empty list as head
2016-10-19Merge branch 'gomoripeti/stdlib/ms_fix/PR-1203/OTP-13974' into maintHans Bolinder
* gomoripeti/stdlib/ms_fix/PR-1203/OTP-13974: dbg:fun2ms: allow empty list as head
2016-10-19Merge branch 'maint'Raimo Niskanen
2016-10-19Merge branch 'raimo/gen_statem-improvements/OTP-13929' into maintRaimo Niskanen
* raimo/gen_statem-improvements/OTP-13929: Fix race condition in cancel_timer/1 Use parameterized types Implement state timeouts Improve docs and types Change state entry events into state enter calls Improve docs Improve docs Implement state entry events Implement call/3 dirty_timeout
2016-10-13dbg:fun2ms: allow empty list as headPéter Gömöri
Running 'dbg:fun2ms(fun([]) -> return_trace() end' resulted in an error "dbg:fun2ms requires fun with single variable or list parameter" But the empty list is actually a list and it is a valid value as a match-spec head (matching on arity-0 functions). Although its practical use is questionable this commit eliminates a small limitation of ms_transform which is not present in the match-spec grammar.
2016-10-12Implement state timeoutsRaimo Niskanen
2016-09-30Change state entry events into state enter callsRaimo Niskanen
2016-09-29Merge branch 'rickard/time-unit/OTP-13831'Rickard Green
* rickard/time-unit/OTP-13831: Replace usage of deprecated time units
2016-09-27Merge branch 'maint'Hans Bolinder
* maint: stdlib: Add a testcase for Unicode expander Support for unicode expander
2016-09-27Merge branch 'andrey/stdlib/fix_edlin_expand/ERL-1152' into maintHans Bolinder
* andrey/stdlib/fix_edlin_expand/ERL-1152: stdlib: Add a testcase for Unicode expander Support for unicode expander
2016-09-23stdlib: Add a testcase for Unicode expanderHans Bolinder
2016-09-21Merge branch 'sverker/ets-load-factor/OTP-13903'Sverker Eriksson
* sverker/ets-load-factor: erts: Unify reduction count for ets:select stdlib: Cuddle ets_SUITE for valgrind stdlib: Fix ets_SUITE:smp_select_delete erts: Tweak ets grow/shrink to keep up at contention erts: Fix ets_SUITE:memory erts: Suppress failed ETS memory checks erts: Reduce ets hash load factor erts: Enable a smaller first hash segment for ets erts: Redesign ets with separate segment tables erts: Remove unnecessary access of 'is_resizing' erts: Add ErtsSizeofMember macro erts: Add ErtsContainerStruct_ for array members
2016-09-19stdlib: Cuddle ets_SUITE for valgrindSverker Eriksson
2016-09-19stdlib: Fix ets_SUITE:smp_select_deleteSverker Eriksson
no point in checking table load as select_delete does not shrink.
2016-09-19erts: Fix ets_SUITE:memorySverker Eriksson
by simply asking for the size of struct ext_segtab
2016-09-19erts: Suppress failed ETS memory checksSverker Eriksson
due to the grow/shrink hysteresis of the meta tables
2016-09-19erts: Reduce ets hash load factorSverker Eriksson
for faster lookup/insert/delete at the expense of about one word per object.
2016-09-16Implement state entry eventsRaimo Niskanen
2016-09-16Implement call/3 dirty_timeoutRaimo Niskanen
2016-09-07Merge branch 'maint'Peter Andersson
2016-09-05Add test case in zip_SUITEPeter Andersson
2016-09-05Merge branch 'bjorn/floor-ceiling/OTP-13692'Björn Gustavsson
* bjorn/floor-ceiling/OTP-13692: Add math:floor/1 and math:ceil/1 Implement the new ceil/1 and floor/1 guard BIFs
2016-09-05Add math:floor/1 and math:ceil/1Björn Gustavsson
Add math:floor/1 and math:ceil/1 to avoid unnecessary conversions in floating point expressions. That is, instead of having to write float(floor(X)) as part of a floating point expressions, we can write simply math:floor(X).
2016-09-02Fix overridden BIFsBjörn Gustavsson
The filters in a list comprehension can be guard expressions or an ordinary expressions. If a guard expression is used as a filter, an exception will basically mean the same as 'false': t() -> L = [{some_tag,42},an_atom], [X || X <- L, element(1, X) =:= some_tag] %% Returns [{some_tag,42}] On the other hand, if an ordinary expression is used as a filter, there will be an exception: my_element(N, T) -> element(N, T). t() -> L = [{some_tag,42},an_atom], [X || X <- L, my_element(1, X) =:= some_tag] %% Causes a 'badarg' exception when element(1, an_atom) is evaluated It has been allowed for several releases to override a BIF with a local function. Thus, if we define a function called element/2, it will be called instead of the BIF element/2 within the module. We must use the "erlang:" prefix to call the BIF. Therefore, the following code is expected to work the same way as in our second example above: -compile({no_auto_import,[element/2]}). element(N, T) -> erlang:element(N, T). t() -> L = [{some_tag,42},an_atom], [X || X <- L, element(1, X) =:= some_tag]. %% Causes a 'badarg' exception when element(1, an_atom) is evaluated But the compiler refuses to compile the code with the following diagnostic: call to local/imported function element/2 is illegal in guard
2016-09-02Don't crash when obsolete guard overrides local functionBjörn Gustavsson
The compiler would crash in v3_codegen when trying to compile the following code: is_port(_) -> false. foo(P) when port(P) -> ok. We *could* have the compiler interpret the code as: is_port(_) -> false. foo(P) when erlang:is_port(P) -> ok. But that would encourage using the obsolete form of the guard tests. Note that the following code is illegal: is_port(_) -> false. foo(P) when is_port(P) -> ok. It produces the following diagnostic: call to local/imported function is_port/1 is illegal in guard Therefore, we should refuse to compile the code.
2016-09-01compiler: Eliminate use of sys_pre_expandBjörn Gustavsson
sys_pre_expand previously did a lot more work, for example, translating records and funs, but now is merely a grab bag of small transformations. Move those transformations to v3_core.
2016-09-01shell_SUITE: Eliminate references to sys_pre_expand in commentsBjörn Gustavsson
Make it clear that we test that the shell is not dependent on the compiler application being in the path.
2016-08-25Replace usage of deprecated time unitsRickard Green
2016-08-17Clarify error valuesRaimo Niskanen
2016-07-27Rewrite gen_statem TCs for M:callback_mode/0Raimo Niskanen
2016-07-14Merge branch 'sverker/update_counter-deadlock/ERL-188/OTP-13731' into maint-19Erlang/OTP
* sverker/update_counter-deadlock/ERL-188/OTP-13731: erts: Add test ets_SUITE:update_counter_table_growth erts: Fix deadlock in ets:update_counter/4 erts: Optimize db_finalize_dbterm_hash
2016-07-11erts: Add test ets_SUITE:update_counter_table_growthSverker Eriksson
2016-07-04stdlib: Correct a bug regarding records in the shellHans Bolinder
See also ERL-182.
2016-06-15Merge branch 'sverker/revert-ets-load-factor'Sverker Eriksson
2016-06-15Merge branch 'siri/cuddle-master'Siri Hansen
* siri/cuddle-master: Add short sleep when killing slave nodes [ct test] Do reload_config instead of get_config
2016-06-15Add short sleep when killing slave nodesSiri Hansen
slave_SUITE:t_start_link somtimes fails when checking that a slave is dead. This commit add a short sleep before the check to allow the node to terminate.
2016-06-13stdlib: Let epp handle long file namesHans Bolinder
2016-06-09Remove support for '...' in Maps typesHans Bolinder
It is possible that '...' is added later (OTP 20.0), but for now we are not sure of all details.
2016-06-08Revert "erts: Change ETS hash load factor"Sverker Eriksson
This reverts commit 7c133fb1094ad1cabbb5cfc157483a43c816c6a9.
2016-06-08Revert "Temporally disable of failing ets_SUITE:memory_check_summary"Sverker Eriksson
This reverts commit f1987d5299ce67b0eb4c4a83d8ee9bcf7426c307.
2016-06-08Merge branch 'zandra/test_server/unmatched_returns/OTP-13345'Zandra Hird
* zandra/test_server/unmatched_returns/OTP-13345: vts - Fix unmatched_return warnings test_server_sup - Fix unmatched_return warnings test_server_node - Fix unmatched_return warnings test_server_io - Fix unmtached_return warnings test_server_gl - Fix unmatched_return warnings test_server_ctrl - Fix unmatched_return warnings test_server - fix unmatched_return warnings remove unused purify functions
2016-06-08Merge branch 'josevalim/supervisor-get-callback-module/PR-1000/OTP-13619'Siri Hansen
* josevalim/supervisor-get-callback-module/PR-1000/OTP-13619: Return callback module in supervisor format_status
2016-06-07remove unused purify functionsZandra
2016-06-04Return callback module in supervisor format_statusJosé Valim
The previous implementation of supervisor:get_callback_module/1 used sys:get_status/1 to get the supervisor inner state and retrieve the callback module. Such implementation forbids any other supervisor implementation that has an internal state different than the #state{} record in supervisor.erl. This patch allows supervisors to return the callback module as part of the sys:get_status/1 data, no longer coupling the callback module implementation with the inner #state{} record. Notice we have kept the clause matching the previous sys:get_status/1 reply for backwards compatibility purposes.
2016-06-01Merge branch 'sverker/ets-load-factor/OTP-13642'Sverker Eriksson
2016-06-01Temporally disable of failing ets_SUITE:memory_check_summarySverker Eriksson
Seems to be the growing meta tables that is causing increasing failed memchecks after load factor was lowered.
2016-06-01erts: Change ETS hash load factorSverker Eriksson
from 700% to 200%
2016-06-01Merge branch 'siri/cuddle-master'Siri Hansen
* siri/cuddle-master: Change ct:sleep to timer:sleep where scaling is not wanted Don't generate ssh key files in netconf client test Ignore data received in break mode in test telnet_server Wait for process to die before next call Retry ct_telnet:get_data if no data is received after short wait Don't throw rest of line when NOP is received in test telnet_server Change ct:sleep to timer:sleep in telnet_server
2016-05-27stdlib: Fix small inconsistencies in ets_SUITEBjörn-Egil Dahlberg