Improve tests, add socket close

This commit is contained in:
retropikzel 2025-12-30 19:03:04 +02:00
parent 5d544f32eb
commit 5de156823d
4 changed files with 35 additions and 9 deletions

View File

@ -33,7 +33,7 @@ uninstall:
test-r7rs: tmpdir
@if [ "${SCHEME}" = "chibi" ]; then rm -rf ${TMPDIR}/srfi/98.*; fi
cd ${TMPDIR} && echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (srfi ${SRFI}) (srfi 64))" > test-r7rs.scm
cd ${TMPDIR} && echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (foreign c) (srfi ${SRFI}) (srfi 64))" > test-r7rs.scm
cd ${TMPDIR} && cat srfi/${SRFI}/test.scm >> test-r7rs.scm
cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I . -o test-r7rs test-r7rs.scm
cd ${TMPDIR} && printf "\n" | ./test-r7rs
@ -43,7 +43,7 @@ test-r7rs-docker:
docker run -t foreign-c-srfi-test-${SCHEME} sh -c "make SCHEME=${SCHEME} SRFI=${SRFI} SNOW_CHIBI_ARGS=--always-yes build install test-r7rs"
test-r6rs: tmpdir
cd ${TMPDIR} && echo "(import (rnrs) (srfi :${SRFI}) (srfi :64))" > test-r6rs.sps
cd ${TMPDIR} && echo "(import (rnrs) (foreign c) (srfi :${SRFI}) (srfi :64))" > test-r6rs.sps
cd ${TMPDIR} && cat srfi/${SRFI}/test.scm >> test-r6rs.sps
cd ${TMPDIR} && akku install chez-srfi akku-r7rs "(foreign c)" #"(retropikzel shell)"
cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I .akku/lib -o test-r6rs test-r6rs.sps

View File

@ -20,6 +20,7 @@
(define-c-procedure c-read libc 'read 'int '(int pointer int))
(define-c-procedure c-poll libc 'poll 'int '(pointer int int))
(define-c-procedure c-strcpy libc 'strcpy 'int '(pointer pointer))
(define-c-procedure c-close libc 'close 'int '(int))
(define-record-type <socket>
@ -215,3 +216,10 @@
(apply message-type flags)))
(bytes-pointer (make-c-bytevector size 0)))
(socket-recv-loop socket bytes-pointer size)))
(define (socket-close socket)
(when (not (socket? socket))
(error "socket-close: Not a socket" socket))
(c-close (socket-file-descriptor socket)))

View File

@ -11,7 +11,7 @@
socket-send
socket-recv
;socket-shutdown
;socket-close
socket-close
;socket-input-port
;socket-output-port
;call-with-socket

View File

@ -1,12 +1,30 @@
(define client-socket (make-client-socket "127.0.0.1" "3000"))
;(define client-socket (make-client-socket "/tmp/demo.sock" "3000" *af-unix*))
(define-c-library libc `("stdlib.h") libc-name '((additional-versions ("0" "6"))))
(define-c-procedure c-system libc 'system 'int '(pointer))
(socket-send client-socket (string->utf8 "Hello from test"))
(display "HERE: ")
(write (utf8->string (socket-recv client-socket 5)))
(c-system (string->c-utf8 "echo \"lol\" | nc -l 3000 &"))
(define sock1 (make-client-socket "127.0.0.1" "3000"))
(display "HERE sock1: ")
(write (utf8->string (socket-recv sock1 3)))
(newline)
(write client-socket)
(socket-send sock1 (string->utf8 "Hello from sock1\n"))
(socket-close sock1)
(c-system (string->c-utf8 "echo \"lol\" | nc -l -U /tmp/demo.sock &"))
(define sock2 (make-client-socket "/tmp/demo.sock" "3000" *af-unix*))
(display "HERE sock2: ")
(write (utf8->string (socket-recv sock2 3)))
(newline)
(socket-send sock2 (string->utf8 "Hello from sock2\n"))
(socket-close sock2)