From: Michael Albinus Date: Thu, 31 Mar 2016 09:45:45 +0000 (+0200) Subject: Fix OS X specific settings in tramp-tests X-Git-Tag: emacs-25.0.93~87 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/df441b362c25c4ad59ea3d83137328d0d4098eaf Fix OS X specific settings in tramp-tests * lisp/net/tramp-sh.el (tramp-maybe-open-connection): Use it. * lisp/net/tramp.el (tramp-get-local-locale): New defun. * test/automated/tramp-tests.el (tramp--test-darwin-p): Remove. (tramp--test-utf8): Improve settings of coding systems. Do not use `tramp--test-darwin-p' anymore. (Bug#22145) --- diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 9fa46109a5..5b9083203b 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -2865,7 +2865,7 @@ This is like `dired-recursive-delete-directory' for Tramp files." (narrow-to-region (point) (point)) ;; We cannot use `insert-buffer-substring' because the Tramp ;; buffer changes its contents before insertion due to calling - ;; `expand-file' and alike. + ;; `expand-file-name' and alike. (insert (with-current-buffer (tramp-get-buffer v) (buffer-string))) @@ -4865,7 +4865,7 @@ connection if a previous connection has died for some reason." (when (and p (processp p)) (delete-process p)) (setenv "TERM" tramp-terminal-type) - (setenv "LC_ALL" "en_US.utf8") + (setenv "LC_ALL" (tramp-get-local-locale vec)) (if (stringp tramp-histfile-override) (setenv "HISTFILE" tramp-histfile-override) (if tramp-histfile-override diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 43962169d5..19dced6c2f 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3939,6 +3939,26 @@ This is used internally by `tramp-file-mode-from-int'." (tramp-compat-funcall 'group-gid) (nth 3 (tramp-compat-file-attributes "~/" id-format)))) +(defun tramp-get-local-locale (&optional vec) + ;; We use key nil for local connection properties. + (with-tramp-connection-property nil "locale" + (let ((candidates '("en_US.utf8" "C.utf8" "en_US.UTF-8")) + locale) + (with-temp-buffer + (unless (or (memq system-type '(windows-nt)) + (not (zerop (tramp-call-process + nil "locale" nil t nil "-a")))) + (while candidates + (goto-char (point-min)) + (if (string-match (format "^%s\r?$" (regexp-quote (car candidates))) + (buffer-string)) + (setq locale (car candidates) + candidates nil) + (setq candidates (cdr candidates)))))) + ;; Return value. + (when vec (tramp-message vec 7 "locale %s" (or locale "C"))) + (or locale "C")))) + ;;;###tramp-autoload (defun tramp-check-cached-permissions (vec access) "Check `file-attributes' caches for VEC. diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el index d9563ec917..a12ee38757 100644 --- a/test/automated/tramp-tests.el +++ b/test/automated/tramp-tests.el @@ -1785,14 +1785,6 @@ Several special characters do not work properly there." (file-truename tramp-test-temporary-file-directory) nil (string-match "^HP-UX" (tramp-get-connection-property v "uname" "")))) -(defun tramp--test-darwin-p () - "Check, whether the remote host runs Mac OS X. -Several special characters do not work properly there." - ;; We must refill the cache. `file-truename' does it. - (with-parsed-tramp-file-name - (file-truename tramp-test-temporary-file-directory) nil - (string-match "^Darwin" (tramp-get-connection-property v "uname" "")))) - (defun tramp--test-check-files (&rest files) "Run a simple but comprehensive test over every file in FILES." ;; We must use `file-truename' for the temporary directory, because @@ -2041,15 +2033,17 @@ Use the `ls' command." (defun tramp--test-utf8 () "Perform the test in `tramp-test32-utf8*'." - (let ((coding-system-for-read 'utf-8) - (coding-system-for-write 'utf-8) - (file-name-coding-system 'utf-8)) + (let* ((utf8 (if (and (eq system-type 'darwin) + (memq 'utf-8-hfs (coding-system-list))) + 'utf-8-hfs 'utf-8)) + (coding-system-for-read utf8) + (coding-system-for-write utf8) + (file-name-coding-system utf8)) (tramp--test-check-files (unless (tramp--test-hpux-p) "Γυρίστε το Γαλαξία με Ώτο Στοπ") - (unless (or (tramp--test-hpux-p) (tramp--test-darwin-p)) + (unless (tramp--test-hpux-p) "أصبح بوسعك الآن تنزيل نسخة كاملة من موسوعة ويكيبيديا العربية لتصفحها بلا اتصال بالإنترنت") - (unless (tramp--test-darwin-p) - "银河系漫游指南系列") + "银河系漫游指南系列" "Автостопом по гала́ктике"))) (ert-deftest tramp-test32-utf8 ()