add tests for saved-errno

This commit is contained in:
Ryan Culpepper 2016-02-21 21:27:41 -05:00
parent c1664610e1
commit 5aff9925ad
2 changed files with 26 additions and 0 deletions

View File

@ -1,4 +1,5 @@
#include <stdlib.h>
#include <errno.h>
#ifdef USE_THREAD_TEST
#include <pthread.h>
#endif
@ -256,3 +257,13 @@ X void* foreign_thread_callback(test_callback_t f,
return r;
}
#endif
X int check_multiple_of_ten(int v) {
int r = v % 10;
if (r == 0) {
return 0;
} else {
errno = r;
return -1;
}
}

View File

@ -552,6 +552,21 @@
(define a-bar (bar (malloc 16 'raw)))
(free a-bar))
(let ()
;; saved-errno tests
(define check-multiple-of-ten
(get-ffi-obj 'check_multiple_of_ten test-lib (_fun #:save-errno 'posix _int -> _int)))
(test 0 check-multiple-of-ten 40)
(test -1 check-multiple-of-ten 42)
(test 2 saved-errno)
(saved-errno 5)
(test 5 saved-errno)
;; test saved-errno is thread-local
(define errno-from-thread #f)
(sync (thread (lambda () (check-multiple-of-ten 17) (set! errno-from-thread (saved-errno)))))
(test 5 saved-errno) ;; same as before
(test 7 (lambda () errno-from-thread)))
(delete-test-files)
(let ()