diff options
author | Maxime Devos <maximedevos@telenet.be> | 2021-09-02 18:55:54 +0200 |
---|---|---|
committer | Maxime Devos <maximedevos@telenet.be> | 2021-09-21 12:20:56 +0200 |
commit | 289c4adba9ab875223a269aaee1b9b28b3981537 (patch) | |
tree | 5a95830b22ca8e5792ab0bd55e31434437d9184c /tests | |
parent | 299ccf8c7cf22816da4d1acf4fb711fe375c076f (diff) | |
download | gnunet-scheme-289c4adba9ab875223a269aaee1b9b28b3981537.tar.gz gnunet-scheme-289c4adba9ab875223a269aaee1b9b28b3981537.zip |
mq: Inject errors when message verification has negative result.
* README.org (List of errors): Document logic:ill-formed.
* doc/scheme-gnunet.tm (logic:ill-formed): New explanation.
* gnu/gnunet/mq.scm (inject-message!): Document logic:ill-formed
error. Inject that error when the verificator returns falsehood.
* tests/mq.scm ("ill-formed message error"): New test.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/mq.scm | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/tests/mq.scm b/tests/mq.scm index 3485022..c4763c9 100644 --- a/tests/mq.scm +++ b/tests/mq.scm | |||
@@ -631,7 +631,31 @@ with @code{x}." | |||
631 | (! mq (make-message-queue no-handlers error-handler #f))) | 631 | (! mq (make-message-queue no-handlers error-handler #f))) |
632 | (inject-message! mq slice) | 632 | (inject-message! mq slice) |
633 | errored?)) | 633 | errored?)) |
634 | ;; TODO: what if the message is (otherwise) malformed? | 634 | |
635 | (test-assert "ill-formed message error" | ||
636 | (let^ ((! errored? #f) | ||
637 | (! slice (bv-slice/read-write #vu8(0 4 0 0))) | ||
638 | (! handlers | ||
639 | (message-handlers | ||
640 | (message-handler | ||
641 | (type 0) | ||
642 | ((interpose code) code) | ||
643 | ((well-formed? s) | ||
644 | (assert (eq? s slice)) | ||
645 | #f) | ||
646 | ((handle! slice) | ||
647 | (error "unreachable"))))) | ||
648 | (! (error-handler . e) | ||
649 | (match e | ||
650 | ;; Note: it theoretically may have some unspecified rest | ||
651 | ;; rest arguments. In ‘real code’, use | ||
652 | ;; (logic:ill-formed 0 . rest) instead. | ||
653 | ('(logic:ill-formed 0) | ||
654 | (assert (not errored?)) | ||
655 | (set! errored? #t)))) | ||
656 | (! mq (make-message-queue handlers error-handler #f))) | ||
657 | (inject-message! mq slice) | ||
658 | errored?)) | ||
635 | 659 | ||
636 | 660 | ||
637 | 661 | ||