From 99e344d7492384991c35ae3ee909e6e4b8a7f068 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sat, 26 Mar 2022 15:09:51 -0700 Subject: [PATCH 1/2] Add tests for Eshell's umask command 'em-basic-test/umask-set' fails when passing an actual number to the command, but this is fixed in the subsequent commit. test/lisp/eshell/em-basic-tests.el: New file. --- test/lisp/eshell/em-basic-tests.el | 71 ++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 test/lisp/eshell/em-basic-tests.el diff --git a/test/lisp/eshell/em-basic-tests.el b/test/lisp/eshell/em-basic-tests.el new file mode 100644 index 0000000000..7a24f8b46c --- /dev/null +++ b/test/lisp/eshell/em-basic-tests.el @@ -0,0 +1,71 @@ +;;; em-basic-tests.el --- em-basic test suite -*- lexical-binding:t -*- + +;; Copyright (C) 2022 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs 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 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs 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 GNU Emacs. If not, see . + +;;; Commentary: + +;; Tests for basic Eshell commands. + +;;; Code: + +(require 'ert) +(require 'em-basic) + +(require 'eshell-tests-helpers + (expand-file-name "eshell-tests-helpers" + (file-name-directory (or load-file-name + default-directory)))) + +;;; Tests: + +(ert-deftest em-basic-test/umask-print-numeric () + "Test printing umask numerically." + (cl-letf (((symbol-function 'default-file-modes) (lambda () #o775))) + (should (equal (eshell-test-command-result "umask") "002\n"))) + (cl-letf (((symbol-function 'default-file-modes) (lambda () #o654))) + (should (equal (eshell-test-command-result "umask") "123\n"))) + ;; Make sure larger numbers don't cause problems. + (cl-letf (((symbol-function 'default-file-modes) (lambda () #o1775))) + (should (equal (eshell-test-command-result "umask") "002\n")))) + +(ert-deftest em-basic-test/umask-read-symbolic () + "Test printing umask symbolically." + (cl-letf (((symbol-function 'default-file-modes) (lambda () #o775))) + (should (equal (eshell-test-command-result "umask -S") + "u=rwx,g=rwx,o=rx\n"))) + (cl-letf (((symbol-function 'default-file-modes) (lambda () #o654))) + (should (equal (eshell-test-command-result "umask -S") + "u=wx,g=rx,o=x\n"))) + ;; Make sure larger numbers don't cause problems. + (cl-letf (((symbol-function 'default-file-modes) (lambda () #o1775))) + (should (equal (eshell-test-command-result "umask -S") + "u=rwx,g=rwx,o=rx\n")))) + +(ert-deftest em-basic-test/umask-set () + "Test setting umask." + (let ((file-modes 0)) + (cl-letf (((symbol-function 'set-default-file-modes) + (lambda (mode) (setq file-modes mode)))) + (eshell-test-command-result "umask 002") + (should (= file-modes #o775)) + (eshell-test-command-result "umask 123") + (should (= file-modes #o654)) + (eshell-test-command-result "umask $(identity #o222)") + (should (= file-modes #o555))))) + +;; em-basic-tests.el ends here -- 2.25.1