[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 295efb6025: Throw errors in XDS handler directly
From: |
Po Lu |
Subject: |
master 295efb6025: Throw errors in XDS handler directly |
Date: |
Sun, 24 Jul 2022 09:33:52 -0400 (EDT) |
branch: master
commit 295efb60257d6eefa5d570009f4de3f6088af25e
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Throw errors in XDS handler directly
* lisp/x-dnd.el (x-dnd-xds-testing): New defvar.
(x-dnd-handle-direct-save): Signal errors directly if it is
true.
* test/lisp/x-dnd-tests.el (x-dnd-xds-testing): New defvar.
(x-dnd-tests-do-direct-save-internal): Bind it to t around
x-begin-drag. (bug#56712)
---
lisp/x-dnd.el | 22 ++++++++++++++++++----
test/lisp/x-dnd-tests.el | 5 ++++-
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el
index a61905cfac..10fd9e5dac 100644
--- a/lisp/x-dnd.el
+++ b/lisp/x-dnd.el
@@ -1442,6 +1442,11 @@ ACTION is the action given to `x-begin-drag'."
(defvar x-dnd-disable-motif-protocol)
(defvar x-dnd-use-unsupported-drop)
+(defvar x-dnd-xds-testing nil
+ "Whether or not XDS is being tested from ERT.
+When non-nil, throw errors from the `XdndDirectSave0' converters
+instead of returning \"E\".")
+
(defun x-dnd-handle-direct-save (_selection _type _value)
"Handle a selection request for `XdndDirectSave'."
(setq x-dnd-xds-performed t)
@@ -1456,15 +1461,24 @@ ACTION is the action given to `x-begin-drag'."
(dnd-get-local-file-name local-file-uri))))
(if (not local-name)
'(STRING . "F")
- (condition-case nil
- (progn
+ ;; We want errors to be signalled immediately during ERT
+ ;; testing, instead of being silently handled. (bug#56712)
+ (if x-dnd-xds-testing
+ (prog1 '(STRING . "S")
(copy-file x-dnd-xds-current-file
local-name t)
(when (equal x-dnd-xds-current-file
dnd-last-dragged-remote-file)
(dnd-remove-last-dragged-remote-file)))
- (:success '(STRING . "S"))
- (error '(STRING . "E"))))))
+ (condition-case nil
+ (progn
+ (copy-file x-dnd-xds-current-file
+ local-name t)
+ (when (equal x-dnd-xds-current-file
+ dnd-last-dragged-remote-file)
+ (dnd-remove-last-dragged-remote-file)))
+ (:success '(STRING . "S"))
+ (error '(STRING . "E")))))))
(defun x-dnd-handle-octet-stream (_selection _type _value)
"Handle a selecton request for `application/octet-stream'.
diff --git a/test/lisp/x-dnd-tests.el b/test/lisp/x-dnd-tests.el
index 8856be79eb..ef9c8aada2 100644
--- a/test/lisp/x-dnd-tests.el
+++ b/test/lisp/x-dnd-tests.el
@@ -90,6 +90,8 @@ AgAABQMAAAYDAAATGwAAGhsAAA==")
;;; XDS tests.
+(defvar x-dnd-xds-testing)
+
(defvar x-dnd-tests-xds-target-dir nil
"The name of the target directory where the file will be saved.")
@@ -162,7 +164,8 @@ hostname in the target URI."
(original-file (expand-file-name
(make-temp-name "x-dnd-test")
temporary-file-directory))
- (x-dnd-tests-xds-name (make-temp-name "x-dnd-test-target")))
+ (x-dnd-tests-xds-name (make-temp-name "x-dnd-test-target"))
+ (x-dnd-xds-testing t))
;; The call to `gui-set-selection' is only used for providing the
;; conventional `text/uri-list' target and can be ignored.
(cl-flet ((gui-set-selection #'ignore))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 295efb6025: Throw errors in XDS handler directly,
Po Lu <=