aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/test
AgeCommit message (Collapse)Author
2010-05-17Add guard BIFs binary_part/2,3Patrik Nyblom
Add the gc_bif's to the VM. Add infrastructure for gc_bif's (guard bifs that can gc) with two and. three arguments in VM (loader and VM). Add compiler support for gc_bif with three arguments. Add compiler (and interpreter) support for new guard BIFs. Add testcases for new guard BIFs in compiler and emulator.
2010-05-17Add binary:{encode,decode}_unsigned({1,2}Patrik Nyblom
Add testcases for encode/decode_unsigned/1,2.
2010-05-17Add referenced_byte_size/1Patrik Nyblom
Add testcases for referenced_byte_size/1. Add failure tests for referenced_byte_size.
2010-05-17Add binary:list_to_bin/1 and binary:copy/1,2Patrik Nyblom
Add testcases for binary:list_to_bin/1 and binary:copy/1,2. Add reference implementation of list_to_bin/1.
2010-05-17Add bin_to_list/{1,2,3}Patrik Nyblom
Add testcases for bin_to_list. Teach binref.erl bin_to_list.
2010-05-17Add binary:longest_common_prefix/longest_common_suffixPatrik Nyblom
Add allcoator parameter to erts_get_aligned_binary_bytes_extra. Add testcases for the functions above. Add reference implementation for the functions above.
2010-05-17Add binary:part to erl_bif_binary.cPatrik Nyblom
Change name of the 'scope' option for binary:match/matches. Add split and replace to binary.erl. Cleanup comments etc in binary.erl and atom.names Add testcases for part, split, replace and scopes.
2010-05-17Count reductions for process even when not trappingPatrik Nyblom
Set loop factors to 10. Teach erts_debug:set_internal_state to limit loop factor for binary. Add random tests for matches and match with multiple searchstrings.
2010-05-17Add random compare testcasePatrik Nyblom
Fix heap-hole when trapping in binary.c Fix boyer more segfaulting when searchstring is longer than haystack
2010-05-17Teach binary.c the semantics to take longest instead of shortest matchPatrik Nyblom
Add testcase embryos and reference implementation. Change name of compile function according to EEP31.
2010-05-12Merge branch 'bg/opt-receive' into devErlang/OTP
* bg/opt-receive: Test that gen_server:call/2,3 are fast even with a huge message queue erts: Add tests for the receive optimization Update primary bootstrap erts: Implement recv_mark/1 and recv_set/1 for real compiler tests: Cover the error handling code in beam_receive compiler test: Test optimization of receive statements Optimize selective receives in the presence of a large message queue Introduce the new recv_mark/1 and recv_mark/1 instructions Compile tests that communicate with R12 nodes with the r12 option Move p_run/2 to test_lib gen: Inline wait_resp_mon/2 to help the compiler optimize OTP-8623 bg/opt-receive reveive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.)
2010-05-11Test that gen_server:call/2,3 are fast even with a huge message queueBjörn Gustavsson
2010-05-11Compile tests that communicate with R12 nodes with the r12 optionBjörn Gustavsson
R12 nodes cannot load code that use the optimized receive that we are about to implement.
2010-04-20Add testcase for infinite loop problem caused by reset of match_call_countPatrik Nyblom
2010-04-19OTP-8567 The word 'spec' is no longer reserved.Hans Bolinder
The function erl_scan:reserved_word/1 no longer returns true when given the word spec. This bug was introduced in STDLIB-1.15.3 (R12B-3).
2010-04-14re_SUITE: Add pcre_compile_workspace_overflow/1Björn Gustavsson
2010-04-09OTP-8562 Closing right parenthesis in macro definitions is mandatory.Hans Bolinder
When defining macros the closing right parenthesis before the dot is now mandatory.
2010-03-17OTP-8522 Avoid duplicated 'undefined' in record field typesHans Bolinder
The Erlang parser no longer duplicates the singleton type undefined in the type of record fields without initial value.
2010-03-16Add functions to create and extract escriptsHåkan Mattsson
Both reltool and rebar needs to parse escripts. They are currently using an undocumented function called escript:foldl/3. It folds a function over all files in the body of an escript. If the body contains source code the function compiles it and the gives debug compiled beam code to the fold fun. If the body is an archive the fun is applied for all files in the archive. Instead of making the undocumented function public, the new functions escript:create/2 and escript:extract/2 has been introduced. Together with the new zip:foldl/3 function they have the same functionality as escript:foldl/3 in a more flexible and generic way. escript:foldl/3 should be removed as soon as reltool and rebar has been adopted to use the new functions. The simplest way for reltool and rebar to do this is to just copy the code from escript_SUITE:escript_foldl/3, which happens to provide a future compatible implementation of an emulated escript:foldl/3 function. I was quite hesitant when I introduced the compile_source option. It feels that it does not belong there but the alternative felt worse. The rationale for the compile_source option is that it is a bit cumbersome to compile the source code, as the source in most cases is partial. In order to do compile the source you need to know about some internals in escript. Without compile_source I think that these internals should be documented. Further you need to duplicate parts of the code. Without the compile_source option you need to first parse the source to forms, using an undocumented function in epp with an extended format of predefined macros which also is undocumented. Then you need to investigate the forms to see if you need to add an export form for main. When that is done you can run the rest of the compiler passes as usual. It is not so much code (60 lines or so) to write, but I do not want to urge people to write it. I actually wrote the code (see escript_SUITE:escript_foldl/3) before I decided to introduce the compile_source option.
2010-03-16Add function zip:foldl/3 to iterate over zip archivesHåkan Mattsson
This is the public interface of prim_zip:open/3, which has been used in earlier releases by both erl_prim_loader and escript. The new function can be used as a replacement for the undocumented function escript:foldl/3 that is likely to be removed without further notice. The error handling of prim_zip:open/3 (and prim_zip:foldl/3) has been improved in order to better suite a public interface. For example it could happen that a file or a zlib port could be left open in some errors cases. The documentation of the FileSpec parameter to zip:create/3 has been updated to show that file info can be explicitly specified. A FileSpec may contain {Filename, binary(), #file_info{}} elements. The function zip:create/3 was already prepared to partly support this, but now after a few minor fixes it is fully supported.
2010-03-15Update copyright headersBjörn Gustavsson
2010-03-09OTP-8503 stdlib: records with no fields is considered typed by eppHans Bolinder
The empty record (no fields) is now considered typed. It is more consistent than before; the base case is the logical one. A record is typed iff all its fields are typed. A record is tagged 'typed' iff it is typed.
2010-03-02OTP-8473 stdlib: erl_pp bugfix abstract type 'fun'Hans Bolinder
The abstract type 'fun' could not be printed. This bug has been fixed.
2010-03-02OTP-8470 stdlib: epp bugHans Bolinder
The Erlang code preprocessor (epp) sent extra messages on the form {eof,Location} to the client when parsing the file attribute. This bug, introduced in R11B, has been fixed.
2010-02-12Merge branch 'ms/pcre-security' into ccase/r13b04_devErlang/OTP
* ms/pcre-security: Fix CVE-2008-2371 (outer level option with alternatives caused crash). OTP-8438 The re module: A regular expression with an option change at the start of a pattern that had top-level alternatives could cause overwriting and/or a crash. (Thanks to Michael Santos.)
2010-02-12Merge branch 'jn/supervisor_child_count_only' into ccase/r13b04_devErlang/OTP
* jn/supervisor_child_count_only: Add count_children/1 to supervisor.erl to determine the number of OTP-8436 Added supervisor:count_children/1 to count the number of children being managed without the memory impact of which_children/1. (Thanks to Jay Nelson.)
2010-02-11Fix CVE-2008-2371 (outer level option with alternatives caused crash).Michael Santos
The patch is from: http://vcs.pcre.org/viewvc?revision=360&view=revision Test case: re:compile(<<"(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]">>, [unicode]). An option change at the start of a pattern that had top-level alternatives could cause overwriting and/or a crash. This potential security problem was recorded as CVE-2008-2371.
2010-02-10Add count_children/1 to supervisor.erl to determine the number ofJay Nelson
children being managed without the memory impact of which_children/1 The function which_children/1 returns a list of the child processes currently being supervised, but it has the penalty of creating a new list thereby consuming more memory. In low memory situations it is often desirable to know which supervisor may have generated many processes, but the act of discovering the culprit should not cause the node to crash (or worse a different node if the kernel kills one randomly). The new function count_children/1 can give an indication of which supervisor is taxing resources the most without adding to the burden. Rather than creating a new list, it walks the supervisor's internal children structure using an accumulator function so that any used memory can be incrementally collected yet the resulting count can still be obtained. The return result of count_children/1 is a property list of counts containing: - {specs, Total_Num_Child_Specs} - {active, Num_Active_Child_Processes_Of_Supervisor_Or_Worker_Type} - {supervisors, Num_Supervisor_Type_Children_Including_Dead_Processes} - {workers, Num_Worker_Type_Children_Including_Dead_Processes} This patch was made in response to mailing list discussions of the problem diagnosing heavily taxed production systems. I cannot find the original request, but http://www.erlang.org/cgi-bin/ezmlm-cgi/4/35060 is my original post of the patch.
2010-02-10OTP-8418 user.erl (used in oldshell) is updated to handle unicode inPatrik Nyblom
prompt strings (io:get_line/{1,2}). io_lib is also updated to format prompts with the 't' modifier (i.e. ~ts instead of ~s).
2010-02-10Merge branch 'ks/erl_lint' into ccase/r13b04_devErlang/OTP
* ks/erl_lint: erl_lint_SUITE: adjust failing test case Allow recursive types and check for undefined types OTP-8421: ks/erl_lint
2010-02-09erl_lint_SUITE: adjust failing test caseBjörn Gustavsson
Errors are now reported slightly differently, so we'll need to adjust the test case.
2010-02-05OTP-8393 The new function shell:prompt_func/1 and the new applicationHans Bolinder
configuration parameter shell_prompt_func can be used for customizing the Erlang shell prompt.
2010-02-01epp_SUITE: Increase code coverageHans Bolinder
2010-02-01epp: change rules to choose the right version of a macroChristopher Faulet
Now, when we have only the constant definition of a macro (without arguments), we always use it. In all other cases, we try to find the exact matching definition. We throw an error if we don't find it.
2010-02-01epp: Add support of macros overloadingChristopher Faulet
This feature simplifies the definition of macros by avoiding to have a different name for each version (with different arities) of the same macros. New rules: - can have multiple definitions of the same macro with different arities - cannot overload macro with the same arity - the overloading of predefined macros (?MODULE, ?LINE, ...) is forbidden - the directive '-undef' removes all definitions of a macro
2010-02-01Merge branch 'bg/hipe-fixes' into ccase/r13b04_devErlang/OTP
* bg/hipe-fixes: compiler: make ignore_native_errors also handle internal hipe errors re tests: disable native-code compilation for huge modules Teach the compiler the no_native option
2010-01-31Merge branch 'bg/cleanup-tests' into ccase/r13b04_devErlang/OTP
* bg/cleanup-tests: file_SUITE: eliminate a warning for an unused variable kernel tests: modernize guard tests unicode_SUITE: replace deprecated concat_binary/1 with list_to_binary/1 stdlib tests: modernize guard tests Test suites: fix creation of Emakefiles
2010-01-30re tests: disable native-code compilation for huge modulesBjörn Gustavsson
Two generated modules contains too big functions for the native-code compiler to handle (even the BEAM compiler struggles when compiling them).
2010-01-30Update copyright headerBjörn Gustavsson
2010-01-30Merge branch 'ta/ensure_dir_eexist' into ccase/r13b04_devErlang/OTP
* ta/ensure_dir_eexist: filelib_SUITE: strenghten tests of filelib:ensure_dir/1 Don't return a false {error,eexist} in filelib:ensure_dir/1 OTP-8389 Because of a race condition, using filelib:ensure_dir/1 from multiple processes to create the same path or parts of the same directory structure, filelib:ensure_dir/1 could return a meaningless {error,eexist}. That race condition has been eliminated, and {error,eexist} will now be returned only if there exists a regular file, device file, or some other non-directory file with the same name. (Thanks to Tuncer Ayaz.)
2010-01-29unicode_SUITE: replace deprecated concat_binary/1 with list_to_binary/1Björn Gustavsson
2010-01-29stdlib tests: modernize guard testsBjörn Gustavsson
Don't change any guard tests in the id_transform_SUITE module, because it intentionally use the old guard tests to test that id_transform can handle them.
2010-01-29Test suites: fix creation of EmakefilesBjörn Gustavsson
The Emakefiles in some test suite directories are only appended to, never created from scratch, which can cause problems especially when swithching branches in a git repository.
2010-01-27Merge branch 'rb/stdlib_re_unicode_fixes' into ccase/r13b04_devErlang/OTP
* rb/stdlib_re_unicode_fixes: Fix lost unicode option in re:compile() Refactor out repeated block in re module Fix re:replace/4 to handle unicode charlist Replacement argument Fix re:replace/4 to handle unicode charlist RE argument Fix re:replace/4 to handle binary unicode output when nothing replaced OTP-8394 A number of bugs concerning re and unicode are corrected: - re:compile no longer loses unicode option, which also fixes bug in re:split. - re:replace now handles unicode charlist replacement argument - re:replace now handles unicode RE charlist argument correctly - re:replace now handles binary unicode output correctly when nothing is replaced. Most code, testcases and error isolation done by Rory Byrne.
2010-01-27Fix lost unicode option in re:compile()Patrik Nyblom
Noticed-by: Rory Byrne
2010-01-27Fix re:replace/4 to handle unicode charlist Replacement argumentRory Byrne
A bug in re:replace/4 causes a badarg exception to be thrown when the Replacement argument is a charlist containing non-ascii codepoints. The problem is that the code incorrectly assumes that the Replacement text is iodata() and calls iolist_to_binary/1 on it. This patch fixes it to obey the 'unicode' option and handle charlist() Replacement arguments correctly.
2010-01-27Fix re:replace/4 to handle unicode charlist RE argumentPatrik Nyblom
The real problem is in the re:run/3 BIF. Noticed-by: Rory Byrne Tests-by: Rory Byrne
2010-01-27Fix re:replace/4 to handle binary unicode output when nothing replacedRory Byrne
A bug with re:replace/4 causes an exception when: (a) it's given a unicode charlist as input; (b) it's set to {return,binary}; and (c) it finds nothing to replace. The problem is: when re:replace/4 does not find anything to replace in its Subject input, it calls iolist_to_binary on this data. This fails if the original input is a charlist with non-ascii codepoints.
2010-01-27Added a small timeout to take care of race in newshell. Also removed ↵Patrik Nyblom
deletion of files when compiled with debug option. Changed LC_CTYPE for sunos of certain versions.
2010-01-23filelib_SUITE: strenghten tests of filelib:ensure_dir/1Björn Gustavsson
Test that filelib:ensure_dir/1 returns {error,eexist} if there already exists a regular file with the name as a directory that should be created. While at it, slightly strenghten the otp_5960/1 test case by repeating each call to filelib:ensure_dir/1.