diff options
author | Helmut Eller <eller.helmut@gmail.com> | 2013-11-07 22:28:19 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2013-11-07 22:28:19 -0500 |
commit | 21cfbae5b5b359a270a1df8c0fd41c0ad53b6529 (patch) | |
tree | 2c58c1827b6ee69d4dbad65c8d9a6602681f7bd3 /test | |
parent | 1f9239238301d92e539260f908916d3c188ffead (diff) | |
download | emacs-21cfbae5b5b359a270a1df8c0fd41c0ad53b6529.tar.gz |
* test/automated/sentinel-tests.el: New file.
Diffstat (limited to 'test')
-rw-r--r-- | test/ChangeLog | 4 | ||||
-rw-r--r-- | test/automated/sentinel-tests.el | 53 |
2 files changed, 57 insertions, 0 deletions
diff --git a/test/ChangeLog b/test/ChangeLog index 2e8b8a6dca8..32d856c33b8 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +2013-11-08 Helmut Eller <eller.helmut@gmail.com> + + * automated/sentinel-tests.el: New file. + 2013-11-08 Dmitry Gutov <dgutov@yandex.ru> * indent/ruby.rb: New examples. diff --git a/test/automated/sentinel-tests.el b/test/automated/sentinel-tests.el new file mode 100644 index 00000000000..f694a341661 --- /dev/null +++ b/test/automated/sentinel-tests.el @@ -0,0 +1,53 @@ +;;; process-tests.el --- Testing the process facilities + +;; Copyright (C) 2013 Free Software Foundation, Inc. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; + +;;; Code: + +(require 'ert) + +;; Timeout in seconds; the test fails if the timeout is reached. +(defvar process-test-sentinel-wait-timeout 2.0) + +;; Start a process that exits immediately. Call WAIT-FUNCTION, +;; possibly multiple times, to wait for the process to complete. +(defun process-test-sentinel-wait-function-working-p (wait-function) + (let ((proc (start-process "test" nil "bash" "-c" "exit 20")) + (sentinel-called nil) + (start-time (float-time))) + (set-process-sentinel proc (lambda (proc msg) + (setq sentinel-called t))) + (while (not (or sentinel-called + (> (- (float-time) start-time) + process-test-sentinel-wait-timeout))) + (funcall wait-function)) + (cl-assert (eq (process-status proc) 'exit)) + (cl-assert (= (process-exit-status proc) 20)) + sentinel-called)) + +(ert-deftest process-test-sentinel-accept-process-output () + (should (process-test-sentinel-wait-function-working-p + #'accept-process-output))) + +(ert-deftest process-test-sentinel-sit-for () + (should + (process-test-sentinel-wait-function-working-p (lambda () (sit-for 0.01 t))))) + +(provide 'process-tests) |