aboutsummaryrefslogtreecommitdiffstats
path: root/test/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ; Minor license statement fixesStefan Kangas2021-02-082-22/+22
|
* Move line-number-at-pos to CLars Ingebrigtsen2021-02-071-4/+4
| | | | | | | | | | | | | * doc/lispref/positions.texi (Text Lines): Revert previous change. * lisp/simple.el (line-number-at-pos): Remove definition. * lisp/simple.el (count-lines): Revert back to using `forward-line', because there seems to be a disagreement on how lines should be counted in a region... * src/fns.c (Fline_number_at_pos): Rename from Fline_number_at_position and adjust parameter list.
* Add a new function 'line-number-at-position'Lars Ingebrigtsen2021-02-071-0/+8
| | | | | | | | | * doc/lispref/positions.texi (Text Lines): Document it. * lisp/simple.el (count-lines): Use it. (line-number-at-pos): Ditto. * src/fns.c (Fline_number_at_position): New function (bug#22763).
* ; Fix byte-compilation warningEli Zaretskii2021-02-061-1/+1
| | | | | * test/src/process-tests.el (process-sentinel-interrupt-event): Fix byte compilation warning.
* ; Fix last changeEli Zaretskii2021-02-061-2/+1
|
* New test for src/process.c on MS-WindowsIoannis Kappas2021-02-061-0/+29
| | | | | | | * test/src/process-tests.el (process-sentinel-interrupt-event): New test. (Bug#46284) Copyright-paperwork-exempt: yes
* Fix copying text properties in 'format'Eli Zaretskii2021-02-061-1/+21
| | | | | | | | * src/editfns.c (styled_format): Fix accounting for text properties that come from the format string. (Bug#46317) * test/src/editfns-tests.el (format-properties): Add new tests for bug#46317.
* * test/src/minibuf-tests.el (test-inhibit-interaction): Fix test.Stefan Kangas2021-02-011-4/+4
|
* Add more assertions to recently-added process test.Philipp Stephani2021-01-241-1/+2
| | | | | | * test/src/process-tests.el (process-tests/multiple-threads-waiting): Also check that 'thread-join' and 'thread-last-error' return the expected errors.
* Add a unit test testing interaction between threads and processes.Philipp Stephani2021-01-231-0/+29
| | | | | | | | This unit test tests that we can call 'accept-process-output' in parallel from multiple threads. * test/src/process-tests.el (process-tests/multiple-threads-waiting): New unit test.
* * test/src/xdisp-tests.el: Fix tests to work in batch modeAaron Jensen2021-01-181-18/+15
| | | | | | | (xdisp-tests--window-text-pixel-size) (xdisp-tests--window-text-pixel-size-leading-space) (xdisp-tests--window-text-pixel-size-trailing-space): Fix tests. (Bug#45748)
* Replace Unix commands with Emacs in process tests.Philipp Stephani2021-01-181-9/+71
| | | | | | | | | | | | That way, the tests only depend on Emacs, and not on utilities that might not be available during test time. * test/src/process-tests.el (process-tests--eval) (process-tests--emacs-command, process-tests--emacs-binary) (process-tests--dump-file) (process-tests--usable-file-for-reinvoke): New helper functions. (process-tests/sentinel-called) (process-tests/sentinel-with-multiple-processes): Use them.
* Ensure that sentinels are called during 'accept-process-output'.Philipp Stephani2021-01-171-0/+53
| | | | | | | | | | | | When we're trying to notify a process about a status change, we need to ignore the SIGCHLD pipe temporarily, otherwise the code would likely not run into the timeout case that's necessary for a status change to happen. * src/process.c (wait_reading_process_output): Ignore the SIGCHLD pipe when notifying a process about a status change. * test/src/process-tests.el (process-tests/sentinel-called) (process-tests/sentinel-with-multiple-processes): New unit tests.
* Fix deadlock when receiving SIGCHLD during 'pselect'.Philipp Stephani2021-01-161-5/+0
| | | | | | | | | | | | | | | | | | | | | | If we receive and handle a SIGCHLD signal for a process while waiting for that process, 'pselect' might never return. Instead, we have to explicitly 'pselect' that the process status has changed. We do this by writing to a pipe in the SIGCHLD handler and having 'wait_reading_process_output' select on it. * src/process.c (child_signal_init): New helper function to create a pipe for SIGCHLD notifications. (child_signal_read, child_signal_notify): New helper functions to read from/write to the child signal pipe. (create_process): Initialize the child signal pipe on first use. (handle_child_signal): Notify waiters that a process status has changed. (wait_reading_process_output): Make sure that we also catch SIGCHLD/process status changes. * test/src/process-tests.el (process-tests/fd-setsize-no-crash/make-process): Remove workaround, which is no longer needed.
* Fix 'window-text-pixel-size' when there are leading/trailing spacesAaron Jensen2021-01-151-0/+30
| | | | | | | | | | | | | | | First, scan to find the first non-whitespace character and then backtrack to find the beginning of the line. The previous algorithm always started on the non-whitespace character during the backtrack, causing it to stop immediately and not actually find the beginning of the line. The same applies to the end of line calculation. * src/xdisp.c: (Fwindow_text_pixel_size): Fix off by one error. (Bug#45748) * test/src/xdisp-tests.el (xdisp-tests--window-text-pixel-size) (xdisp-tests--window-text-pixel-size-leading-space) (xdisp-tests--window-text-pixel-size-trailing-space): New tests.
* Prefer skip-unless in more testsStefan Kangas2021-01-132-17/+17
| | | | | | * test/lisp/emacs-lisp/timer-tests.el (timer-tests-debug-timer-check): * test/src/decompress-tests.el (zlib--decompress): * test/src/xml-tests.el (libxml-tests): Prefer skip-unless.
* Only run IPv6 tests if we have an IPv6 addressRobert Pluim2021-01-121-5/+16
| | | | | | | | | | | | | | * test/src/process-tests.el (ipv6-is-available): New function for checking whether we have a globally routable IPv6 prefix assigned. (lookup-family-specification): Use 'ipv6-is-available' to check for IPv6. Use 'localhost' instead of 'google.com' to test 'network-lookup-address-info' API. (lookup-google): Use 'ipv6-is-available' to check for IPv6. * test/lisp/net/nsm-tests.el (nsm-ipv6-is-available): Rename to 'ipv6-is-available', make identical to the one in test/src/process-tests.el.
* Add a new function 'buffer-line-statistics'Lars Ingebrigtsen2021-01-121-0/+58
| | | | * src/fns.c (Fbuffer_line_statistics): New function.
* Add a new variable `inhibit-interaction'Lars Ingebrigtsen2021-01-122-0/+21
| | | | | | | | | | | | | | | | | | | * doc/lispref/elisp.texi (Top): Add a link. * doc/lispref/errors.texi (Standard Errors): Mention the new error. * doc/lispref/minibuf.texi (Minibuffers): Add a link. (Inhibiting Interaction): New node. * src/data.c (syms_of_data): Define the `inhibited-interaction' error. * src/lisp.h: Export the barfing function. * src/lread.c (Fread_char, Fread_event, Fread_char_exclusive): Barf if inhibited. * src/minibuf.c (barf_if_interaction_inhibited): New function. (Fread_from_minibuffer, Fread_no_blanks_input): Barf if inhibited. (syms_of_minibuf): Define the `inhibit-interaction' variable.
* Increase probability that a process test succeeds.Philipp Stephani2021-01-101-0/+5
| | | | | | * test/src/process-tests.el (process-tests/fd-setsize-no-crash/make-process): Work around potential Emacs bug.
* Fix process-tests on MS-WindowsEli Zaretskii2021-01-051-0/+11
| | | | | | | It was again broken by recent changes. * test/src/process-tests.el (process-tests/fd-setsize-no-crash/make-serial-process): Skip test on MS-Windows.
* Pretty-print keys without <> around modifiers (bug#45536)Mattias Engdegård2021-01-051-0/+12
| | | | | | | | | | | | | | | Be consistent when pretty-printing keys: put modifiers outside <>, thus the more logical C-M-<return> instead of <C-M-return>. * src/keymap.c (Fsingle_key_description): Skip modifier prefix before adding <>. * doc/lispref/help.texi (Describing Characters): Update example. * doc/lispref/debugging.texi (Backtraces): * doc/lispref/minibuf.texi (Text from Minibuffer): Use @kbd instead of @key. * etc/NEWS: Announce the change. * test/src/keymap-tests.el (keymap--key-description): * test/lisp/subr-tests.el (subr--kbd): New tests.
* Make a process tests a bit more robust.Philipp Stephani2021-01-041-2/+5
| | | | | | * test/src/process-tests.el (process-tests/fd-setsize-no-crash/make-process): Allow for processes to fail before 'exec'.
* Make a process test faster.Philipp Stephani2021-01-021-3/+5
| | | | | | | | | | | | The test 'process-tests/fd-setsize-no-crash/make-process' used to call 'sleep' to ensure that enough processes are live to trigger a FD_SETSIZE overflow. However, we can just call 'cat' instead and close standard input when done. That way, we only wait as long as needed. * process-tests.el (process-tests/fd-setsize-no-crash/make-process): Invoke 'cat' instead of 'sleep'. Close standard input to exit the 'cat' processes.
* Simplify TTY allocation.Philipp Stephani2021-01-021-59/+12
| | | | | | | | | | | | The 'process-tty-name' already provides the TTY name, we don't have interrogate the TTY host. * test/src/process-tests.el (process-tests/fd-setsize-no-crash/make-serial-process): Use 'process-tty-name' instead of having the TTY host print its TTY name. Check whether TTY names are unique. (process-tests--new-pty, process-tests--with-temp-file): Remove; no longer used.
* Update copyright year to 2021Paul Eggert2021-01-0139-39/+39
| | | | Run "TZ=UTC0 admin/update-copyright".
* Fix process-tests on MS-WindowsEli Zaretskii2020-12-311-0/+7
| | | | | * test/src/process-tests.el (process-tests--fd-setsize-test): On MS-Windows start the pipe processes in the "stopped" condition.
* * test/src/process-tests.el: Let timeouts fail the tests. Fix some docstringsMichael Albinus2020-12-311-26/+26
|
* Unbreak process tests if 'errno' is not installed.Philipp Stephani2020-12-311-1/+3
| | | | | * test/src/process-tests.el (process-tests--EMFILE-message): Don't signal an error if the 'errno' binary is unavailable.
* Manually limit file descriptors that we select on to FD_SETSIZE.Philipp Stephani2020-12-311-29/+71
| | | | | | | | | | | | | | | | | | This works even if another thread or process resets the resource limit for open file descriptors, e.g., using 'prlimit' on GNU/Linux. * src/process.c (create_process, create_pty, Fmake_pipe_process) (Fmake_serial_process, connect_network_socket) (server_accept_connection): Limit file descriptors to FD_SETSIZE. * test/src/process-tests.el (process-tests--with-raised-rlimit): New helper macro. (process-tests--fd-setsize-test): Rename from 'process-tests--with-many-pipes'. Increase resource limit during test if possible. (process-tests/fd-setsize-no-crash/make-process) (process-tests/fd-setsize-no-crash/make-pipe-process) (process-tests/fd-setsize-no-crash/make-network-process) (process-tests--new-pty): Rename callers.
* Fix a potential unit test breakage on GNU/Linux.Philipp Stephani2020-12-311-1/+8
| | | | | | * test/src/process-tests.el (process-tests/fd-setsize-no-crash/make-process): Allow special exit codes that can happen if terminal setup fails in the child process.
* Fix an incorrect Edebug specification.Philipp Stephani2020-12-301-1/+1
| | | | | * test/src/process-tests.el (process-tests--with-many-pipes): Fix incorrect Edebug specification.
* Extend and overhaul FD_SETSIZE overflow tests.Philipp Stephani2020-12-301-35/+307
| | | | | | | | | | | | | | | | | | | | | | | | Instead of trying to generate the right number of processes, pre-create lots of unused pipe processes until creation fails. Extend the tests to the 'pty' connection type and other kinds of process objects. * test/src/process-tests.el (process-tests--ignore-EMFILE) (process-tests--with-buffers, process-tests--with-processes) (process-tests--with-many-pipes, process-tests--with-temp-file) (process-tests--with-temp-directory): New helper macros. (process-tests/fd-setsize-no-crash/make-process): Renamed from 'process-tests/fd-setsize-no-crash'. Fail on timeout. Also test the 'pty' connection type. Pre-create lots of pipe processes so we reach the FD_SETSIZE limit faster. Ignore EMFILE more precisely, if possible. (process-tests/fd-setsize-no-crash/make-pipe-process) (process-tests/fd-setsize-no-crash/make-network-process) (process-tests/fd-setsize-no-crash/make-serial-process): New tests that test FD_SETSIZE limits for other kinds of processes. (process-tests--EMFILE-message): New helper function and cache variable. (process-tests--new-pty): New helper function.
* ; * test/src/process-tests.el: Fix comment style.Philipp Stephani2020-12-301-1/+1
|
* ; Fix my previous commitStefan Kangas2020-12-301-1/+1
| | | | | * test/src/chartab-tests.el (chartab-test-char-table-extra-slot): Fix test.
* Add some char-table testsStefan Kangas2020-12-301-0/+20
| | | | | | | * test/src/chartab-tests.el (chartab-test-char-table-p) (chartab-test-char-table-subtype) (chartab-test-char-table-parent) (chartab-test-char-table-extra-slot): New tests.
* A better fix for process-tests on MS-WindowsEli Zaretskii2020-12-291-2/+3
| | | | | | | | | * src/w32.c (pipe2): When forcibly closing pipe handles due to overflow of FD_SETSIZE, set the handles to -1, to avoid assertion violations in emacs_close. * test/src/process-tests.el (process-tests/fd-setsize-no-crash): No need to skip this test anymore.
* Fix process-tests on MS-WindowsEli Zaretskii2020-12-291-0/+1
| | | | | | * test/src/process-tests.el (process-tests/fd-setsize-no-crash): Skip this test on windows-nt systems, as we cannot use more than FD_SETSIZE file descriptors there: if we try, we crash.
* Instrument process-tests.el for timeouts on embaMichael Albinus2020-12-291-19/+38
|
* Add a regression test for Bug#24325.Philipp Stephani2020-12-291-0/+35
| | | | | * test/src/process-tests.el (process-tests/fd-setsize-no-crash): New unit test.
* Fix up length_internal with degenerate length inputsLars Ingebrigtsen2020-12-271-0/+11
| | | | * src/fns.c (length_internal): Protect against edge conditions.
* Add new predicates for sequence lengthsLars Ingebrigtsen2020-12-271-0/+30
| | | | | | | | | | | | | * doc/lispref/sequences.texi (Sequence Functions): Document them. * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Mark them as side-effect-free. * lisp/emacs-lisp/shortdoc.el (list): Mention them. * src/fns.c (Flength): Mention them in the doc string. (length_internal): New function. (Flength_less, Flength_greater, Flength_equal): New defuns. (syms_of_fns): Sym them.
* Reject filenames containing NUL bytes.Philipp Stephani2020-12-231-0/+6
| | | | | | | | | | | | | | | Such filenames are dangerous, as Emacs would silently only use the part up to the first NUL byte. Reject them explicitly instead. * src/coding.c (encode_file_name_1): New helper function. (encode_file_name): Check that encoded filename doesn't contain a NUL byte. (syms_of_coding): Define 'filenamep' symbol. * test/src/fileio-tests.el (fileio-tests/null-character): New unit test. * etc/NEWS: Document change.
* Inhibit buffer hooks in temporary buffersBasil L. Contovounesios2020-12-201-3/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Give get-buffer-create an optional argument to inhibit buffer hooks in internal or temporary buffers for efficiency (bug#34765). * etc/NEWS: Announce new parameter of get-buffer-create and generate-new-buffer, and that with-temp-buffer and with-temp-file now inhibit buffer hooks. * doc/lispref/buffers.texi (Buffer Names): Fix typo. (Creating Buffers): Document new parameter of get-buffer-create and generate-new-buffer. (Buffer List, Killing Buffers): Document when buffer hooks are inhibited. (Current Buffer): * doc/lispref/files.texi (Writing to Files): Document that with-temp-buffer and with-temp-file inhibit buffer hooks. * doc/lispref/internals.texi (Buffer Internals): Document inhibit_buffer_hooks flag. Remove stale comment. * doc/misc/gnus-faq.texi (FAQ 5-8): * lisp/simple.el (shell-command-on-region): Fix indentation. * lisp/files.el (kill-buffer-hook): Document when hook is inhibited. (create-file-buffer): * lisp/gnus/gnus-uu.el (gnus-uu-unshar-article): * lisp/international/mule.el (load-with-code-conversion): * lisp/mh-e/mh-xface.el (mh-x-image-url-fetch-image): * lisp/net/imap.el (imap-open): * lisp/net/mailcap.el (mailcap-maybe-eval): * lisp/progmodes/flymake-proc.el (flymake-proc--read-file-to-temp-buffer) (flymake-proc--copy-buffer-to-temp-buffer): Simplify. * lisp/subr.el (generate-new-buffer): Forward new optional argument to inhibit buffer hooks to get-buffer-create. (with-temp-file, with-temp-buffer, with-output-to-string): * lisp/json.el (json-encode-string): Inhibit buffer hooks in buffer used. * src/buffer.c (run_buffer_list_update_hook): New helper function. (Fget_buffer_create): Use it. Add optional argument to set inhibit_buffer_hooks flag instead of comparing the buffer name to Vcode_conversion_workbuf_name. All callers changed. (Fmake_indirect_buffer, Frename_buffer, Fbury_buffer_internal) (record_buffer): Use run_buffer_list_update_hook. (Fkill_buffer): Document when buffer hooks are inhibited. Use run_buffer_list_update_hook. (init_buffer_once): Inhibit buffer hooks in Vprin1_to_string_buffer. (Vkill_buffer_query_functions, Vbuffer_list_update_hook): Document when hooks are inhibited. * src/buffer.h (struct buffer): Update inhibit_buffer_hooks commentary. * src/coding.h (Vcode_conversion_workbuf_name): * src/coding.c (Vcode_conversion_workbuf_name): Make static again since it is no longer needed in src/buffer.c. (code_conversion_restore, code_conversion_save, syms_of_coding): Prefer boolean over integer constants. * src/fileio.c (Finsert_file_contents): Inhibit buffer hooks in " *code-converting-work*" buffer. * src/window.c (Fselect_window): Fix grammar. Mention window-selection-change-functions alongside buffer-list-update-hook. * test/src/buffer-tests.el: Fix requires. (buffer-tests-inhibit-buffer-hooks): New test.
* Convert apropos-internal from C to Lisp (Bug#44529)Stefan Kangas2020-12-191-13/+0
| | | | | | | | | | | | | | | | | | | | | This runs insignificantly faster in C, and is already fast enough on reasonably modern hardware. We might as well lift it to Lisp. This benchmark can be used to verify: (benchmark-run 10 (apropos-command "test")) => (0.12032415399999999 2 0.014772391999999995) ; C => (0.13513192100000002 2 0.017216643000000004) ; Lisp * lisp/subr.el (apropos-internal): New defun, converted from C. * src/keymap.c (Fapropos_internal): Remove defun. (apropos_accum): Remove function. (apropos_predicate, apropos_accumulate): Remove variables. (syms_of_keymap): Remove defsubr for Fapropos_internal, and definitions of the above variables. * test/src/keymap-tests.el (keymap-apropos-internal) (keymap-apropos-internal/predicate): Move tests from here... * test/lisp/subr-tests.el (apropos-apropos-internal) (apropos-apropos-internal/predicate): ...to here.
* Document and enforce some properties for strings created by modules.Philipp Stephani2020-12-122-0/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | When creating multibyte or unibyte strings, we should guarantee the following invariants: - When creating empty strings, a NULL data pointer should be allowed. This often arises in practice if the string length isn't known in advance, and we don't want to unnecessarily trigger undefined behavior. Since functions like memcpy might not accept NULL pointers, use the canonical empty string objects in this case. - Nonzero strings should be guaranteed to be unique and mutable. These are the same guarantees expected from Lisp functions such as 'make-string' or 'unibyte-string'. On the other hand, empty strings might not be unique. * src/emacs-module.c (module_make_string) (module_make_unibyte_string): Correctly handle empty strings. * test/src/emacs-module-resources/mod-test.c (Fmod_test_make_string): New test function. (emacs_module_init): Expose it. * test/src/emacs-module-tests.el (mod-test-make-string/empty) (mod-test-make-string/nonempty): New unit tests. * doc/lispref/internals.texi (Module Values): Document properties and corner cases for strings.
* Fix object-interval testsLars Ingebrigtsen2020-12-111-4/+4
| | | | * test/src/fns-tests.el (object-intervals): Fix tests.
* Add new function `object-intervals'Lars Ingebrigtsen2020-12-111-0/+16
| | | | | | * doc/lispref/text.texi (Examining Properties): Document it. * src/fns.c (Fobject_intervals): New defun. (collect_interval): New function.
* Fupcase no longer maps ?ß to itself (bug#11309)Mattias Engdegård2020-12-101-1/+2
| | | | | | | | * test/src/casefiddle-tests.el (casefiddle-tests-char-casing): (upcase ?ß) now returns ?ẞ (U+7838), partly for technical reasons but the previous behaviour was arbitrary and arguably less useful. Correct upcasing of ß is normally SS, which is what Fupcase returns if given a string, or (for special purposes) ẞ.
* Recognise ß properly as a lower-case letter (bug#11309)Mattias Engdegård2020-12-091-4/+11
| | | | | | | | | | | | | | ß was incorrectly treated as a caseless character and thus not matched by the regexp [[:lower:]] (or, in case-folding mode, [[:upper:]]). The reason is that the upcase table maps it to itself, which can be remedied by mapping it to ẞ (U+7838) instead. Doing so does not affect upcasing since the special-uppercase property maps it to SS. * lisp/international/characters.el (tbl): Map ß to ẞ in the upcase table. * test/src/regex-emacs-tests.el (regexp-eszett): Uncomment previously failing tests. Add checks to make sure that case transformations remain valid.