diff options
| author | Craig Jennings <c@cjennings.net> | 2026-04-04 16:32:16 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-04-04 16:32:16 -0500 |
| commit | 73c81a00a10766900318d86640249d1b54c6b351 (patch) | |
| tree | 793f9c858060591c34813af05e84c7a6a5442153 /tests/test-wttrin--extract-response-body.el | |
| parent | a77a7b86f45ae96ff1802ea6f8b87dafd46b17b0 (diff) | |
| download | emacs-wttrin-73c81a00a10766900318d86640249d1b54c6b351.tar.gz emacs-wttrin-73c81a00a10766900318d86640249d1b54c6b351.zip | |
feat: specific error messages for fetch failures
Add HTTP status code checking (wttrin--extract-http-status) and pass
error descriptions through the callback chain so users see "Location
not found (HTTP 404)" or "Network error — check your connection"
instead of the generic "Perhaps the location was misspelled?" for
every failure.
Also fix pre-existing bug where the condition-case error handler in
extract-response-body killed an unrelated buffer after unwind-protect
already cleaned up.
330 tests (was 307), all passing.
Diffstat (limited to 'tests/test-wttrin--extract-response-body.el')
| -rw-r--r-- | tests/test-wttrin--extract-response-body.el | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/test-wttrin--extract-response-body.el b/tests/test-wttrin--extract-response-body.el index 8dcf2d2..8e6686c 100644 --- a/tests/test-wttrin--extract-response-body.el +++ b/tests/test-wttrin--extract-response-body.el @@ -163,5 +163,33 @@ (should-not (buffer-live-p test-buffer)))) (should (string= "data" result)))) +;;; HTTP Status Code Handling +;; Note: wttrin--extract-response-body kills its buffer, so we capture +;; the result via a let binding before the buffer disappears. + +(ert-deftest test-wttrin--extract-response-body-error-404-returns-nil () + "A 404 response should return nil — the location doesn't exist." + (let (result) + (with-current-buffer (generate-new-buffer " *test-404*") + (insert "HTTP/1.1 404 Not Found\r\nContent-Type: text/plain\r\n\r\nPage not found") + (setq result (wttrin--extract-response-body))) + (should-not result))) + +(ert-deftest test-wttrin--extract-response-body-error-500-returns-nil () + "A 500 response should return nil — the server is broken." + (let (result) + (with-current-buffer (generate-new-buffer " *test-500*") + (insert "HTTP/1.1 500 Internal Server Error\r\n\r\nServer error") + (setq result (wttrin--extract-response-body))) + (should-not result))) + +(ert-deftest test-wttrin--extract-response-body-normal-200-still-returns-body () + "A 200 response should still extract and return the body as before." + (let (result) + (with-current-buffer (generate-new-buffer " *test-200*") + (insert "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nWeather data here") + (setq result (wttrin--extract-response-body))) + (should (equal result "Weather data here")))) + (provide 'test-wttrin--extract-response-body) ;;; test-wttrin--extract-response-body.el ends here |
