aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/test/io_SUITE.erl
AgeCommit message (Collapse)Author
2019-03-05stdlib: Correct and optimize pretty printing of stringsHans Bolinder
Avoid traversing all of the list/string when only part of it will be used. An explicit check that the list is flat is needed since string:slice() accepts deep lists and more.
2018-08-20stdlib: Improve error handling in module io_libHans Bolinder
2018-06-28stdlib: Fix a 'chars_limit' bugHans Bolinder
2018-06-07stdlib: Make pP insert no line breaks with field width zeroHans Bolinder
See also https://bugs.erlang.org/browse/ERL-607. A zero field width used to insert line breaks "everywhere", but with this patch no line breaks are inserted.
2018-05-04Add ct:get_progname/0Richard Carlsson
This replaces all uses of lib:progname/0 in tests.
2018-04-25stdlib: Modify the printing of map associations with wWpPHans Bolinder
Use the same depth for all (printed) elements of a map. Since the order of keys can vary when printing a map--maps:iterator/1 and maps:next/1 are used--it is more consistent to print all associations with the same depth. If the associations printed are limited by the depth, the selection of associations is arbitrary, as before.
2018-04-25stdlib: Introduce characters limit of formated stringsHans Bolinder
Inspiration from module lager_format. Also some improvements of Unicode handling. io_lib:format/3 and io_lib:fwrite/3 are new functions. The representation of the options is a list, but we are considering using a map instead. If we change, it will happen after Erlang/OTP 21.0-rc1 is released.
2018-04-25stdlib: Modify ~w/~W when number of characters is limitedHans Bolinder
A bug fix: limited maps end with "...", not "...=>...". A modification: wW separate pairs with " => ", not "=>". When the output is limited on number of characters, the term is balanced by wW the same way as is done with pP (see commit bc38638).
2018-04-25stdlib: Introduce characters limit of formatted stringsHans Bolinder
The name of the io_lib_pretty:print/2 option 'max_chars' is changed to 'line_max_chars' (used by module shell only). The new option for limiting the number of returned characters of io_lib_pretty:print() is called 'chars_limit'.
2018-03-13Merge pull request #1743 from richcarl/io-format-multiple-modifiersHans Bolinder
Allow multiple modifier characters in io:format control sequences OTP-14971
2018-03-12Allow multiple modifier characters in io:format control sequencesRichard Carlsson
This makes it possible to print unicode atoms at the same time as suppressing detection of printable lists.
2018-03-09Merge pull request #1735 from richcarl/io_lib-unscan-fixHans Bolinder
Make io_lib:unscan_format/1 work with pad char and default precision OTP-14958
2018-03-08stdlib: Improve io_lib:limit_term/2Hans Bolinder
Improve handling of maps. Addendum to b57e890.
2018-03-02Make io_lib:unscan_format/1 work with pad char and default precisionRichard Carlsson
2018-01-23Merge branch 'maint'Hans Bolinder
* maint: kernel: Correct contracts and a bug in group_history stdlib: Correct contracts dialyzer: Optimize handling of a lot of warnings Conflicts: lib/kernel/src/erl_boot_server.erl
2018-01-22stdlib: Correct contractsHans Bolinder
2017-11-20stdlib: Make io_lib and io_lib_pretty use maps iteratorLukas Larsson
2017-05-18stdlib: Add io_lib:limit_term/2Hans Bolinder
The term returned by io_lib:limit_term(Term, Depth) should return the same string if substituted for Term in io_lib:format("~P", [Term, Depth]) or io_lib:format("~W", [Term, Depth]).
2017-04-24stdlib: Add Unicode modifier t to control sequence aHans Bolinder
The Unicode translation modifier 't' is added to the io:fread/2,3 control sequence 'a'.
2017-04-24stdlib: Add Unicode modifier t to control sequences w and WHans Bolinder
As of the introduction of Unicode characters in atoms, the control sequences 'w' and 'W' can return non-Latin-1 characters, unless some measure is taken. This commit makes sure that '~w' and '~W' always return Latin-1 characters, or bytes, which can be output to ports or written to raw files. The Unicode translation modifier 't' is needed to return non-Latin-1 characters.
2017-04-07stdlib: Add function to io_lib to handle Unicode atomsHans Bolinder
2017-02-22Merge branch 'maint'Hans Bolinder
* maint: [xmerl] Remove faulty throws [xmerl] Fix XML "well-formedness" bug i SAX parser [xmerl] Correct bug handling multiple documents on a stream stdlib: Improve pretty-printing of terms with maps Conflicts: lib/stdlib/test/io_SUITE.erl
2017-02-21stdlib: Improve pretty-printing of terms with mapsHans Bolinder
As of committing this branch maps:fold/3 calls maps:to_list/1, which means that the time and memory needed for printing maps is not always proportional to the size of the generated deep list of characters.
2017-02-02Make "~s" fail for Unicode atomsBjörn Gustavsson
26b59dfe67e introduced support for arbitrary Unicode characters in atoms. After that commit, it is possible to print any atom with a "~s" format string: 1> io:format("~s\n", ['спутник']). спутник Note that the same text as a string will fail: 2> io:format("~s\n", ["спутник"]). ** exception error: bad argument in function io:format/3 called as io:format(<0.53.0>,"~s\n", [[1089,1087,1091,1090,1085,1080,1082]]) Being more permissive for atoms is probably beneficial for io:format/2. However, for io_lib:format/2, the new behavior breaks this guarantee in the documentation for io_lib:format/2: If and only if the Unicode translation modifier is used in the format string (that is, ~ts or ~tc), the resulting list can contain characters beyond the ISO Latin-1 character range (that is, numbers > 255). The problem is that you can no longer be sure whether io_lib:format/2 will return an iolist that can be successfully passed to a port or iolist_to_binary/1. We see three solutions: 1. Keep the new behavior. That means that you can get non-iolist data when you use ~s for printing an atom, but a 'badarg' when printing Unicode strings. That is inconsistent, and it delays error detection if the result is passed to a port or iolist_to_binary/1. 2. Always allow Unicode characters for ~s. That would be incompatible, because ~s says that any binary is encoded in latin1, while ~ts says that any binary is encoded in UTF-8. To implement this solution, we could no longer support latin1 binaries; all binaries would have to be encoded in UTF-8. 3. Only allow ~s for atoms where all characters are less than 256. Require ~ts to print atoms such as 'спутник'. We reject solution 1 because it is slightly incompatible and is inconsistent. We reject solution 2 because it too incompatible. Therefore, this commit implements solution 3.
2016-05-27stdlib: Strengthen or relax test casesBjörn-Egil Dahlberg
In particular, valgrind needs a lot of time for certain tests.
2016-03-15update copyright-yearHenrik Nord
2016-03-09Eliminate use of ?config() macroBjörn Gustavsson
2016-03-09Remove ?line macrosBjörn Gustavsson
While we are it, also re-ident the files.
2016-03-09Replace "%" with "%%" at the beginning of a lineBjörn Gustavsson
We want to re-ident the source files after having taken out all ?line macros. When re-indenting using Emacs, it's important that comments that should be at the beginning of a line (or follow the indentation of statements around it) must start with "%%".
2016-03-09Eliminate 'suite' and 'doc' clausesBjörn Gustavsson
2016-03-09Eliminate use of test_server:fail/0,1Björn Gustavsson
2016-03-09Modernize use of timetrapsBjörn Gustavsson
Either rely on the default 30 minutes timetrap, or set the timeout using the supported methods in common_test.
2016-03-09Merge branch 'maint'Björn Gustavsson
* maint: io_SUITE: Don't fail on fast computers with rough timers Fix code_SUITE after test_server change Set default value for crash_dump_dir
2016-03-09Merge branch 'bjorn/cuddle-with-tests' into maintBjörn Gustavsson
* bjorn/cuddle-with-tests: io_SUITE: Don't fail on fast computers with rough timers
2016-03-08Merge branch 'maint'Sverker Eriksson
2016-03-07stdlib: Fix io_SUITE:bad_printable_range for windowsSverker Eriksson
avoid os:cmd as it treats stderr different on windows.
2016-03-07io_SUITE: Don't fail on fast computers with rough timersBjörn Gustavsson
On a computer which is fast, but with timers with low resolution, the measured time for an empty queue could be zero, which could cause the test case to fail. Add a calibration function to scale up the amount the amount of work so that the measured time will not be lower than 50 ms.
2016-02-17Eliminate use of test_server.hrl and test_server_line.hrlBjörn Gustavsson
As a first step to removing the test_server application as as its own separate application, change the inclusion of test_server.hrl to an inclusion of ct.hrl and remove the inclusion of test_server_line.hrl.
2015-09-11io_SUITE: Add coverage/1 to completely cover io_lib_prettyBjörn Gustavsson
2015-09-11io_SUITE: Extend coverage of code for testing printable charsBjörn Gustavsson
2015-09-11io_SUITE: Speed up test for bad +pc optionBjörn Gustavsson
Move the test for a bad +pc option to its own test case for cleanliness. Use the os:cmd/1 function to avoid the annyoying 30 seconds time-out in test_server:start_node/3.
2015-09-11io_SUITE: Add test for printing of mapsBjörn Gustavsson
2015-09-10io_SUITE: Eliminate warnings for unused variablesBjörn Gustavsson
2015-06-18Change license text to APLv2Bruce Yinhe
2015-03-10Make the scanned form of the io_lib format strings available for processingRichard Carlsson
This adds three new functions to io_lib - scan_format/2, unscan_format/1, and build_text/1 - which expose the parsed form of the format control sequences to make it possible to easily modify or filter the input to io_lib:format/2. This can e.g. be used in order to replace unbounded-size control sequences like ~w or ~p with corresponding depth-limited ~W and ~P before doing the actual formatting.
2014-09-19Optimise io requests for long message queuesMagnus Henoch
Ensure that the monitor reference is present in all receive clauses, so that the compiler optimisation kicks in and the run time won't depend on the length of the message queue of the calling process. Remove the 'EXIT' clause, as its presence breaks the optimisation, and that case is handled by the 'DOWN' clause anyway. The test io_SUITE:io_with_huge_message_queue is an adaptation of gen_server_SUITE:call_with_huge_message_queue.
2014-05-20Properly handle fields too short in io_lib_formatAnthony Ramine
Values for which the precision or field width were too small in io_lib_format could trigger an infinite loop or crash in term/5. Reported-by: Richard Carlsson
2013-04-19Remove the "coding: utf-8" comment from all Erlang source filesHans Bolinder
2013-02-19Adapt stdlib tests to ~tp detecting latin1 binariesPatrik Nyblom
2013-02-18Correct misspelled comments and space at lin endsPatrik Nyblom