doom-modeline/test/doom-modeline-core-test.el

346 lines
16 KiB
EmacsLisp
Raw Normal View History

;;; doom-modeline-core-test.el --- Unit tests for doom-modeline -*- lexical-binding: t; -*-
2018-12-08 02:59:08 +08:00
2019-01-02 16:51:26 +08:00
;; Copyright (C) 2018-2019 Vincent Zhang
2018-12-08 02:59:08 +08:00
;; Author: Vincent Zhang <seagle0128@gmail.com>
;; Homepage: https://github.com/seagle0128/doom-modeline
;; This file is not part of GNU Emacs.
;;
;; 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 2, 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; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
;; Floor, Boston, MA 02110-1301, USA.
;;
;;; Commentary:
;;
;; Unit tests for doom-modeline.
;;
;;; Code:
(require 'cl-lib)
(require 'doom-modeline-core)
2019-11-26 01:19:26 +08:00
(ert-deftest doom-modeline-icon/octicon-icon ()
(let ((doom-modeline-icon t)
(doom-modeline-unicode-fallback t))
2021-07-22 18:13:39 +08:00
;; In TUI, fallback to unicode.
(should
(string= (substring-no-properties
(doom-modeline-icon 'octicon "octoface" "" ":)" 'error))
""))))
2019-11-26 01:19:26 +08:00
(ert-deftest doom-modeline-icon/octicon-unicode ()
(let ((doom-modeline-icon nil)
(doom-modeline-unicode-fallback t))
2021-07-22 17:58:35 +08:00
(should
(string= (substring-no-properties
(doom-modeline-icon 'octicon "octoface" "" ":)" 'error))
""))))
2019-11-26 01:19:26 +08:00
(ert-deftest doom-modeline-icon/octicon-text ()
(let ((doom-modeline-icon nil)
(doom-modeline-unicode-fallback nil))
2021-07-22 17:58:35 +08:00
(should
(string= (substring-no-properties
(doom-modeline-icon 'octicon "octoface" "" ":)" 'error))
":)"))))
2019-11-26 01:19:26 +08:00
2021-08-24 17:51:23 +08:00
(ert-deftest doom-modeline-project-root/auto ()
2019-11-26 02:34:38 +08:00
(let ((default-directory "/home/user/project/")
2021-08-24 17:51:23 +08:00
(doom-modeline-project-detection 'auto)
(doom-modeline--project-root nil))
(cl-flet ((project-current (&optional _maybe-prompt _dir)
`(vc . ,default-directory)))
(should (string= (doom-modeline-project-root) default-directory)))))
(ert-deftest doom-modeline-project-root/ffip ()
(let ((default-directory "/home/user/project-ffip/")
2019-11-26 02:34:38 +08:00
(doom-modeline-project-detection 'ffip)
(doom-modeline--project-root nil))
2021-08-24 18:20:31 +08:00
(cl-flet ((ffip-get-project-root-directory () default-directory))
(should (string= (doom-modeline-project-root) default-directory)))))
2019-11-26 02:34:38 +08:00
(ert-deftest doom-modeline-project-root/projectile ()
(let ((default-directory "/home/user/projectile/")
(doom-modeline-project-detection 'projectile)
(doom-modeline--project-root nil))
2019-11-26 02:34:38 +08:00
(cl-flet ((projectile-project-root () default-directory))
2021-08-24 18:20:31 +08:00
(should (string= (doom-modeline-project-root) default-directory)))))
2019-11-26 02:34:38 +08:00
(ert-deftest doom-modeline-project-root/project ()
(let ((default-directory "/home/user/project-current/")
(doom-modeline-project-detection 'project)
(doom-modeline--project-root nil))
2019-11-26 02:34:38 +08:00
(cl-flet ((project-current (&optional _maybe-prompt _dir)
`(vc . ,default-directory)))
2021-08-24 18:20:31 +08:00
(should (string= (doom-modeline-project-root) default-directory)))))
2019-11-26 02:34:38 +08:00
(ert-deftest doom-modeline-project-root/default ()
(let ((default-directory "/home/user/project/")
2021-08-24 18:20:31 +08:00
(doom-modeline-project-detection nil))
(should (string= (doom-modeline-project-root) default-directory))))
2019-11-26 02:34:38 +08:00
2020-02-11 15:00:58 +08:00
(ert-deftest doom-modeline-buffer-file-name/invalid ()
:expected-result :failed
(let* ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline--project-root default-directory)
(doom-modeline-buffer-file-name-style 'invalid))
(cl-flet ((doom-modeline-project-p () t)
(doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
2020-02-11 15:00:58 +08:00
"test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/auto-in-project ()
(let* ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline--project-root default-directory)
(doom-modeline-buffer-file-name-style 'auto))
(cl-flet ((doom-modeline-project-p () t)
(doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"project/relative/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/auto-file-name ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'auto))
(cl-flet ((doom-modeline-project-p () nil)
(doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
2021-08-24 21:23:18 +08:00
"project/relative/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/file-name ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'file-name))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"test.txt"))))
(ert-deftest doom-modeline-buffer-file-name/buffer-name ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'buffer-name))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
2020-02-24 01:19:00 +08:00
"%b"))))
(ert-deftest doom-modeline-buffer-file-name/truncate-upto-project ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'truncate-upto-project))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"/h/u/project/relative/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/truncate-from-project ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'truncate-from-project))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"/home/user/project/r/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/truncate-with-project ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'truncate-with-project))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"project/r/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/truncate-except-project ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'truncate-except-project))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"/h/u/project/r/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/truncate-upto-root ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'truncate-upto-root))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"/h/u/p/relative/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/truncate-all ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline-buffer-file-name-style 'truncate-all))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"/h/u/p/r/test.txt")))))
2020-04-17 13:39:11 +08:00
(ert-deftest doom-modeline-buffer-file-name/truncate-nil ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline-buffer-file-name-style 'truncate-nil))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"/home/user/project/relative/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/relative-to-project ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'relative-to-project))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"relative/test.txt")))))
(ert-deftest doom-modeline-buffer-file-name/relative-from-project ()
(let ((default-directory "/home/user/project/")
(buffer-file-name "/home/user/project/relative/test.txt")
(buffer-file-truename "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t)
(doom-modeline-buffer-file-name-style 'relative-from-project))
(cl-flet ((doom-modeline-project-root () default-directory))
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties (doom-modeline-buffer-file-name))
"project/relative/test.txt")))))
2018-12-08 02:59:08 +08:00
(ert-deftest doom-modeline--buffer-file-name/truncate-upto-project ()
(let ((default-directory "/home/user/project/")
(file-path "/home/user/project/relative/test.txt")
(true-file-path nil)
(doom-modeline--project-detected-p t))
2018-12-08 02:59:08 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-08 02:59:08 +08:00
(doom-modeline--buffer-file-name file-path true-file-path 'shrink))
"/h/u/project/relative/test.txt"))))
(ert-deftest doom-modeline--buffer-file-name/truncate-from-project ()
(let ((default-directory "/home/user/project/")
(file-path "/home/user/project/relative/test.txt")
(true-file-path nil)
(doom-modeline--project-detected-p t))
2018-12-08 02:59:08 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-08 02:59:08 +08:00
(doom-modeline--buffer-file-name file-path true-file-path nil 'shrink))
"/home/user/project/r/test.txt"))))
(ert-deftest doom-modeline--buffer-file-name/truncate-with-project ()
(let ((default-directory "/home/user/project/")
(file-path "/home/user/project/relative/test.txt")
(true-file-path nil)
(doom-modeline--project-detected-p t))
2018-12-08 02:59:08 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-08 02:59:08 +08:00
(doom-modeline--buffer-file-name file-path true-file-path 'shrink 'shrink 'hide))
"project/r/test.txt"))))
(ert-deftest doom-modeline--buffer-file-name/truncate-except-project ()
(let ((default-directory "/home/user/project/")
(file-path "/home/user/project/relative/test.txt")
(true-file-path nil)
(doom-modeline--project-detected-p t))
2018-12-08 02:59:08 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-08 02:59:08 +08:00
(doom-modeline--buffer-file-name file-path true-file-path 'shrink 'shrink))
"/h/u/project/r/test.txt"))))
2018-12-11 01:05:16 +08:00
(ert-deftest doom-modeline--buffer-file-name-truncate/truncate-upto-root ()
(let ((default-directory "/home/user/project/")
(file-path "/home/user/project/relative/test.txt")
(true-file-path "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t))
2018-12-11 01:05:16 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-11 01:05:16 +08:00
(doom-modeline--buffer-file-name-truncate file-path true-file-path))
"/h/u/p/relative/test.txt"))))
2018-12-11 01:05:16 +08:00
(ert-deftest doom-modeline--buffer-file-name-truncate/truncate-all ()
(let ((default-directory "/home/user/project/")
(file-path "/home/user/project/relative/test.txt")
(true-file-path "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t))
2018-12-11 01:05:16 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-11 01:05:16 +08:00
(doom-modeline--buffer-file-name-truncate file-path true-file-path t))
"/h/u/p/r/test.txt"))))
2018-12-11 01:05:16 +08:00
2020-04-17 13:39:11 +08:00
(ert-deftest doom-modeline--buffer-file-name/truncate-nil ()
(let ((default-directory "/home/user/project/")
(file-path "/home/user/project/relative/test.txt")
(true-file-path nil)
(doom-modeline--project-detected-p t))
(should
(string= (substring-no-properties
(doom-modeline--buffer-file-name file-path true-file-path 'nil))
"/home/user/project/relative/test.txt"))))
2018-12-11 01:05:16 +08:00
(ert-deftest doom-modeline--buffer-file-name-relative/relative-to-project ()
(let ((default-directory "/home/user/project/")
(file-path nil)
(true-file-path "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t))
(cl-flet ((doom-modeline-project-root () default-directory))
2018-12-11 01:05:16 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-11 01:05:16 +08:00
(doom-modeline--buffer-file-name-relative file-path true-file-path))
"relative/test.txt")))))
(ert-deftest doom-modeline--buffer-file-name-relative/relative-from-project ()
(let ((default-directory "/home/user/project/")
(file-path nil)
(true-file-path "/home/user/project/relative/test.txt")
(doom-modeline--project-detected-p t))
(cl-flet ((doom-modeline-project-root () default-directory))
2018-12-11 01:05:16 +08:00
(should
2020-02-12 21:48:48 +08:00
(string= (substring-no-properties
2018-12-11 01:05:16 +08:00
(doom-modeline--buffer-file-name-relative file-path true-file-path 'include-project))
"project/relative/test.txt")))))
;;; doom-modeline-core-test.el ends here