summaryrefslogtreecommitdiff
path: root/test/lisp/net/dbus-tests.el
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2020-09-29 19:43:02 +0200
committerMichael Albinus <michael.albinus@gmx.de>2020-09-29 19:43:02 +0200
commit7e45ed3a9674e9f436c337bed647ce9f60939ee0 (patch)
tree60c51def12fcbce14fb69e5f0cf2454d5356c9fd /test/lisp/net/dbus-tests.el
parent7f2c35d02874129723cc5e89d54cc3ab5bf07a31 (diff)
downloademacs-7e45ed3a9674e9f436c337bed647ce9f60939ee0.tar.gz
emacs-7e45ed3a9674e9f436c337bed647ce9f60939ee0.tar.bz2
emacs-7e45ed3a9674e9f436c337bed647ce9f60939ee0.zip
More strict D-Bus type checking
* lisp/net/dbus.el (dbus-register-monitor): Register proper key. (dbus-monitor-handler): Adapt docstring. Use grave text-quoting-style. * src/dbusbind.c (xd_signature, xd_append_arg): More strict tests. (syms_of_dbusbind): Adapt docstring. * test/lisp/net/dbus-tests.el (dbus-test01-basic-types): Extend test.
Diffstat (limited to 'test/lisp/net/dbus-tests.el')
-rw-r--r--test/lisp/net/dbus-tests.el73
1 files changed, 62 insertions, 11 deletions
diff --git a/test/lisp/net/dbus-tests.el b/test/lisp/net/dbus-tests.el
index b853542a1f0..74c0dddcf52 100644
--- a/test/lisp/net/dbus-tests.el
+++ b/test/lisp/net/dbus-tests.el
@@ -99,7 +99,10 @@
"Check basic D-Bus type arguments."
(skip-unless dbus--test-enabled-session-bus)
- ;; Unknown keyword.
+ ;; No argument or unknown keyword.
+ (should-error
+ (dbus-check-arguments :session dbus--test-service)
+ :type 'wrong-number-of-arguments)
(should-error
(dbus-check-arguments :session dbus--test-service :keyword)
:type 'wrong-type-argument)
@@ -108,6 +111,9 @@
(should (dbus-check-arguments :session dbus--test-service "string"))
(should (dbus-check-arguments :session dbus--test-service :string "string"))
(should-error
+ (dbus-check-arguments :session dbus--test-service :string)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :string 0.5)
:type 'wrong-type-argument)
@@ -116,6 +122,10 @@
(dbus-check-arguments
:session dbus--test-service :object-path "/object/path"))
(should-error
+ (dbus-check-arguments :session dbus--test-service :object-path)
+ :type 'wrong-type-argument)
+ ;; Raises an error on stdin.
+ (should-error
(dbus-check-arguments :session dbus--test-service :object-path "string")
:type 'dbus-error)
(should-error
@@ -125,6 +135,10 @@
;; `:signature'.
(should (dbus-check-arguments :session dbus--test-service :signature "as"))
(should-error
+ (dbus-check-arguments :session dbus--test-service :signature)
+ :type 'wrong-type-argument)
+ ;; Raises an error on stdin.
+ (should-error
(dbus-check-arguments :session dbus--test-service :signature "string")
:type 'dbus-error)
(should-error
@@ -136,10 +150,10 @@
(should (dbus-check-arguments :session dbus--test-service t))
(should (dbus-check-arguments :session dbus--test-service :boolean nil))
(should (dbus-check-arguments :session dbus--test-service :boolean t))
- ;; Will be handled as `nil'.
- (should (dbus-check-arguments :session dbus--test-service :boolean))
- ;; Will be handled as `t'.
(should (dbus-check-arguments :session dbus--test-service :boolean 'whatever))
+ (should-error
+ (dbus-check-arguments :session dbus--test-service :boolean)
+ :type 'wrong-type-argument)
;; `:byte'.
(should (dbus-check-arguments :session dbus--test-service :byte 0))
@@ -147,6 +161,9 @@
(should
(dbus-check-arguments :session dbus--test-service :byte most-positive-fixnum))
(should-error
+ (dbus-check-arguments :session dbus--test-service :byte)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :byte -1)
:type 'wrong-type-argument)
(should-error
@@ -161,6 +178,9 @@
(should (dbus-check-arguments :session dbus--test-service :int16 #x7fff))
(should (dbus-check-arguments :session dbus--test-service :int16 #x-8000))
(should-error
+ (dbus-check-arguments :session dbus--test-service :int16)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :int16 #x8000)
:type 'args-out-of-range)
(should-error
@@ -177,6 +197,9 @@
(should (dbus-check-arguments :session dbus--test-service :uint16 0))
(should (dbus-check-arguments :session dbus--test-service :uint16 #xffff))
(should-error
+ (dbus-check-arguments :session dbus--test-service :uint16)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :uint16 #x10000)
:type 'args-out-of-range)
(should-error
@@ -194,6 +217,9 @@
(should (dbus-check-arguments :session dbus--test-service :int32 #x7fffffff))
(should (dbus-check-arguments :session dbus--test-service :int32 #x-80000000))
(should-error
+ (dbus-check-arguments :session dbus--test-service :int32)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :int32 #x80000000)
:type 'args-out-of-range)
(should-error
@@ -211,6 +237,9 @@
(should (dbus-check-arguments :session dbus--test-service :uint32 0))
(should (dbus-check-arguments :session dbus--test-service :uint32 #xffffffff))
(should-error
+ (dbus-check-arguments :session dbus--test-service :uint32)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :uint32 #x100000000)
:type 'args-out-of-range)
(should-error
@@ -230,6 +259,9 @@
(should
(dbus-check-arguments :session dbus--test-service :int64 #x-8000000000000000))
(should-error
+ (dbus-check-arguments :session dbus--test-service :int64)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :int64 #x8000000000000000)
:type 'args-out-of-range)
(should-error
@@ -247,6 +279,9 @@
(should
(dbus-check-arguments :session dbus--test-service :uint64 #xffffffffffffffff))
(should-error
+ (dbus-check-arguments :session dbus--test-service :uint64)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :uint64 #x10000000000000000)
:type 'args-out-of-range)
(should-error
@@ -268,6 +303,9 @@
(should (dbus-check-arguments :session dbus--test-service :double 1.0e+INF))
(should (dbus-check-arguments :session dbus--test-service :double 0.0e+NaN))
(should-error
+ (dbus-check-arguments :session dbus--test-service :double)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :double "string")
:type 'wrong-type-argument)
@@ -279,6 +317,9 @@
;; type range fail.
(should (dbus-check-arguments :session dbus--test-service :unix-fd 0))
(should-error
+ (dbus-check-arguments :session dbus--test-service :unix-fd)
+ :type 'wrong-type-argument)
+ (should-error
(dbus-check-arguments :session dbus--test-service :unix-fd -1)
:type 'args-out-of-range)
(should-error
@@ -300,7 +341,7 @@
(should
(dbus-check-arguments
:session dbus--test-service '(:array :string "string1" "string2")))
- ;; Empty array.
+ ;; Empty array (of strings).
(should (dbus-check-arguments :session dbus--test-service '(:array)))
(should
(dbus-check-arguments :session dbus--test-service '(:array :signature "o")))
@@ -318,7 +359,11 @@
(should
(dbus-check-arguments
:session dbus--test-service '(:variant (:array "string"))))
- ;; More than one element.
+ ;; No or more than one element.
+ ;; FIXME.
+ ;; (should-error
+ ;; (dbus-check-arguments :session dbus--test-service '(:variant))
+ ;; :type 'wrong-type-argument)
(should-error
(dbus-check-arguments
:session dbus--test-service
@@ -336,10 +381,13 @@
(dbus-check-arguments
:session dbus--test-service
'(:array :dict-entry (:string "string" :boolean t))))
- ;; The second element is `nil' (implicitly). FIXME: Is this right?
- (should
- (dbus-check-arguments
- :session dbus--test-service '(:array (:dict-entry :string "string"))))
+ ;; FIXME: Must be errors.
+ ;; (should
+ ;; (dbus-check-arguments
+ ;; :session dbus--test-service '(:array (:dict-entry))))
+ ;; (should
+ ;; (dbus-check-arguments
+ ;; :session dbus--test-service '(:array (:dict-entry :string "string"))))
;; Not two elements.
(should-error
(dbus-check-arguments
@@ -357,7 +405,8 @@
(dbus-check-arguments
:session dbus--test-service '(:dict-entry :string "string" :boolean t))
:type 'wrong-type-argument)
- ;; Different dict entry types can be part of an array.
+ ;; FIXME:! This doesn't look right.
+ ;; Different dict entry types can be part of an array ???
(should
(dbus-check-arguments
:session dbus--test-service
@@ -366,6 +415,8 @@
(:dict-entry :string "string2" :object-path "/object/path"))))
;; `:struct'. There is no restriction what could be an element of a struct.
+ ;; Empty struct. FIXME: Is this right?
+ ;; (should (dbus-check-arguments :session dbus--test-service '(:struct)))
(should
(dbus-check-arguments
:session dbus--test-service