Handle case-insensitive filenames for load-path shadows (Bug#5845)
[emacs.git] / test / lisp / emacs-lisp / shadow-tests.el
blob9d4969fe8bbca1ea16713619926831200105a34a
1 ;;; shadow-tests.el --- Test suite for shadow. -*- lexical-binding: t -*-
3 ;; Copyright (C) 2018 Free Software Foundation, Inc.
5 ;; This file is part of GNU Emacs.
7 ;; GNU Emacs is free software: you can redistribute it and/or modify
8 ;; it under the terms of the GNU General Public License as published by
9 ;; the Free Software Foundation, either version 3 of the License, or
10 ;; (at your option) any later version.
12 ;; GNU Emacs is distributed in the hope that it will be useful,
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ;; GNU General Public License for more details.
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
20 ;;; Code:
22 (require 'ert)
23 (require 'shadow)
24 (eval-when-compile (require 'cl-lib))
26 (defconst shadow-tests-data-directory
27 (expand-file-name "lisp/emacs-lisp/shadow-resources"
28 (or (getenv "EMACS_TEST_DIRECTORY")
29 (expand-file-name "../../.."
30 (or load-file-name
31 buffer-file-name))))
32 "Directory for shadow test files.")
34 (ert-deftest shadow-case-insensitive ()
35 "Test shadowing for case insensitive filenames."
36 ;; Override `file-name-case-insentive-p' so we test the same thing
37 ;; regardless of what file system we're running on.
38 (cl-letf (((symbol-function 'file-name-case-insensitive-p) (lambda (_f) t)))
39 (should (equal (list (expand-file-name "p1/foo" shadow-tests-data-directory)
40 (expand-file-name "p2/FOO" shadow-tests-data-directory))
41 (load-path-shadows-find
42 (list (expand-file-name "p1/" shadow-tests-data-directory)
43 (expand-file-name "p2/" shadow-tests-data-directory))))))
44 (cl-letf (((symbol-function 'file-name-case-insensitive-p) (lambda (_f) nil)))
45 (should-not (load-path-shadows-find
46 (list (expand-file-name "p1/" shadow-tests-data-directory)
47 (expand-file-name "p2/" shadow-tests-data-directory))))))
49 ;;; shadow-tests.el ends here.