diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-24 00:37:00 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-09-13 09:34:41 -0500 |
| commit | cb7019387d8b5bd7ebd385272126accfd37e4b1b (patch) | |
| tree | 09942e20cf6923d614b8c88ff892e93637805449 /tests/test-wttrin-hide-follow-line.el | |
| parent | 37e1c94d523e1d9b96ac8d8acbb488636f31c2cc (diff) | |
| download | emacs-wttrin-cb7019387d8b5bd7ebd385272126accfd37e4b1b.tar.gz emacs-wttrin-cb7019387d8b5bd7ebd385272126accfd37e4b1b.zip | |
feat: add wttrin-hide-follow-line to hide the wttr.in follow line
I added a boolean defcustom, wttrin-hide-follow-line (default nil), that suppresses the "Follow @igor_chubin for wttr.in updates" line in the weather buffer. When it's on, wttrin--build-url adds the wttr.in F flag to the request, so the service omits the line server-side. That stays correct across languages, where a local regex on the English text would miss translated responses.
The helper wttrin--effective-display-options folds F into wttrin-display-options when hiding and F isn't already there, so the toggle and the options string compose without duplicating the flag. The default is off to keep current behavior on upgrade and to leave the upstream author's follow request in place unless the user opts out.
It affects the weather buffer only. The mode-line uses its own compact format with no follow line.
Diffstat (limited to 'tests/test-wttrin-hide-follow-line.el')
| -rw-r--r-- | tests/test-wttrin-hide-follow-line.el | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/test-wttrin-hide-follow-line.el b/tests/test-wttrin-hide-follow-line.el new file mode 100644 index 0000000..fcfb906 --- /dev/null +++ b/tests/test-wttrin-hide-follow-line.el @@ -0,0 +1,75 @@ +;;; test-wttrin-hide-follow-line.el --- Tests for hiding the follow line -*- lexical-binding: t; -*- + +;; Copyright (C) 2026 Craig Jennings + +;;; Commentary: + +;; Unit tests for wttrin--effective-display-options and its effect on +;; wttrin--build-url: the wttr.in F flag is added to the buffer request when +;; wttrin-hide-follow-line is non-nil, composing with wttrin-display-options. + +;;; Code: + +(require 'ert) +(require 'wttrin) + +;;; -------------------------------------------------------------------------- +;;; wttrin--effective-display-options +;;; -------------------------------------------------------------------------- + +;;; Normal Cases + +(ert-deftest test-wttrin--effective-display-options-normal-hide-empty-adds-f () + "Normal: hiding with no other options yields just the F flag." + (let ((wttrin-display-options nil) + (wttrin-hide-follow-line t)) + (should (equal (wttrin--effective-display-options) "F")))) + +(ert-deftest test-wttrin--effective-display-options-normal-hide-appends-f () + "Normal: hiding appends F to existing options." + (let ((wttrin-display-options "0q") + (wttrin-hide-follow-line t)) + (should (equal (wttrin--effective-display-options) "0qF")))) + +(ert-deftest test-wttrin--effective-display-options-normal-no-hide-unchanged () + "Normal: not hiding leaves the options untouched." + (let ((wttrin-display-options "0q") + (wttrin-hide-follow-line nil)) + (should (equal (wttrin--effective-display-options) "0q")))) + +;;; Boundary Cases + +(ert-deftest test-wttrin--effective-display-options-boundary-f-already-present () + "Boundary: F already in the options is not duplicated." + (let ((wttrin-display-options "0Fq") + (wttrin-hide-follow-line t)) + (should (equal (wttrin--effective-display-options) "0Fq")))) + +(ert-deftest test-wttrin--effective-display-options-boundary-no-hide-nil-options () + "Boundary: not hiding with nil options yields an empty string." + (let ((wttrin-display-options nil) + (wttrin-hide-follow-line nil)) + (should (equal (wttrin--effective-display-options) "")))) + +;;; -------------------------------------------------------------------------- +;;; wttrin--build-url integration +;;; -------------------------------------------------------------------------- + +;;; Normal Cases + +(ert-deftest test-wttrin--build-url-normal-hide-appends-f-to-url () + "Normal: hiding the follow line puts the F flag at the end of the URL." + (let ((wttrin-display-options nil) + (wttrin-hide-follow-line t) + (wttrin-unit-system nil)) + (should (string-suffix-p "F" (wttrin--build-url "Tokyo"))))) + +(ert-deftest test-wttrin--build-url-normal-no-hide-no-trailing-f () + "Normal: with hiding off, the URL does not end in the F flag." + (let ((wttrin-display-options nil) + (wttrin-hide-follow-line nil) + (wttrin-unit-system nil)) + (should-not (string-suffix-p "F" (wttrin--build-url "Tokyo"))))) + +(provide 'test-wttrin-hide-follow-line) +;;; test-wttrin-hide-follow-line.el ends here |
