diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2020-09-29 19:43:02 +0200 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2020-09-29 19:43:02 +0200 |
commit | 7e45ed3a9674e9f436c337bed647ce9f60939ee0 (patch) | |
tree | 60c51def12fcbce14fb69e5f0cf2454d5356c9fd /test/lisp/net/dbus-tests.el | |
parent | 7f2c35d02874129723cc5e89d54cc3ab5bf07a31 (diff) | |
download | emacs-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.el | 73 |
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 |