diff options
Diffstat (limited to 'tests/test-gloss-fetch--definitions-timeout-returns-unreachable.el')
| -rw-r--r-- | tests/test-gloss-fetch--definitions-timeout-returns-unreachable.el | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/test-gloss-fetch--definitions-timeout-returns-unreachable.el b/tests/test-gloss-fetch--definitions-timeout-returns-unreachable.el new file mode 100644 index 0000000..881b783 --- /dev/null +++ b/tests/test-gloss-fetch--definitions-timeout-returns-unreachable.el @@ -0,0 +1,44 @@ +;;; test-gloss-fetch--definitions-timeout-returns-unreachable.el --- timeout path -*- lexical-binding: t -*- + +;; SPDX-License-Identifier: GPL-3.0-or-later + +;;; Commentary: +;; A timeout (or any other transport-level failure) makes +;; `url-retrieve-synchronously' return nil; the source maps to +;; :unreachable, which joins :failed at the rollup. + +;;; Code: + +(require 'ert) +(require 'cl-lib) +(require 'gloss-fetch) +(require 'testutil-gloss-fetch) + +(ert-deftest test-gloss-fetch-definitions-timeout-rolls-up-to-failed () + "Normal: nil from url-retrieve-synchronously rolls up to :failed." + (gloss-fetch-test--with-mocked-url + (lambda (_url) nil) + (let ((result (gloss-fetch-definitions "anaphora"))) + (should (eq (car result) :empty)) + (should (member 'wiktionary (plist-get result :failed))) + (should-not (plist-get result :no-defs))))) + +(ert-deftest test-gloss-fetch-definitions-timeout-marks-source-unreachable () + "Boundary: per-source status is :unreachable, distinct from :server-error." + (gloss-fetch-test--with-mocked-url + (lambda (_url) nil) + (let* ((per-source (gloss-fetch--collect "anaphora")) + (entry (car per-source))) + (should (eq (plist-get entry :source) 'wiktionary)) + (should (eq (plist-get entry :status) :unreachable))))) + +(ert-deftest test-gloss-fetch-definitions-error-signal-marks-source-unreachable () + "Error: a signaled error inside url-retrieve-synchronously also yields :unreachable." + (gloss-fetch-test--with-mocked-url + (lambda (_url) (error "Connection refused")) + (let* ((per-source (gloss-fetch--collect "anaphora")) + (entry (car per-source))) + (should (eq (plist-get entry :status) :unreachable))))) + +(provide 'test-gloss-fetch--definitions-timeout-returns-unreachable) +;;; test-gloss-fetch--definitions-timeout-returns-unreachable.el ends here |
