Ensure that byte compilation works for relative files (Bug#45287).
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Don’t fail if target filename doesn’t contain a directory name. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--target-file-no-directory): New unit test.
This commit is contained in:
parent
32d76c0cbc
commit
7fad959114
2 changed files with 20 additions and 1 deletions
|
@ -1967,7 +1967,11 @@ See also `emacs-lisp-byte-compile-and-load'."
|
|||
;; We attempt to create a temporary file in the
|
||||
;; target directory, so the target directory must be
|
||||
;; writable.
|
||||
(file-writable-p (file-name-directory target-file)))
|
||||
(file-writable-p
|
||||
(file-name-directory
|
||||
;; Need to expand in case TARGET-FILE doesn't
|
||||
;; include a directory (Bug#45287).
|
||||
(expand-file-name target-file))))
|
||||
;; We must disable any code conversion here.
|
||||
(let* ((coding-system-for-write 'no-conversion)
|
||||
;; Write to a tempfile so that if another Emacs
|
||||
|
|
|
@ -1016,6 +1016,21 @@ mountpoint (Bug#44631)."
|
|||
(set-file-modes directory #o700)
|
||||
(delete-directory directory :recursive))))))
|
||||
|
||||
(ert-deftest bytecomp-tests--target-file-no-directory ()
|
||||
"Check that Bug#45287 is fixed."
|
||||
(let ((directory (make-temp-file "bytecomp-tests-" :directory)))
|
||||
(unwind-protect
|
||||
(let* ((default-directory directory)
|
||||
(byte-compile-dest-file-function (lambda (_) "test.elc"))
|
||||
(byte-compile-error-on-warn t))
|
||||
(write-region "" nil "test.el" nil nil nil 'excl)
|
||||
(should (byte-compile-file "test.el"))
|
||||
(should (file-regular-p "test.elc"))
|
||||
(should (cl-plusp (file-attribute-size
|
||||
(file-attributes "test.elc")))))
|
||||
(with-demoted-errors "Error cleaning up directory: %s"
|
||||
(delete-directory directory :recursive)))))
|
||||
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; End:
|
||||
|
|
Loading…
Add table
Reference in a new issue