Improve tests

This commit is contained in:
retropikzel 2026-02-27 12:27:40 +02:00
parent 0f8db12e8f
commit 3ea4ae05a3
5 changed files with 55 additions and 49 deletions

3
.gitignore vendored
View File

@ -2,3 +2,6 @@
venv venv
*.html *.html
*.log *.log
foreign
run-test*

2
Dockerfile.jenkins Normal file
View File

@ -0,0 +1,2 @@
FROM debian:trixie
RUN apt-get update && apt-get -y install make docker.io git

55
Jenkinsfile vendored
View File

@ -1,8 +1,8 @@
pipeline { pipeline {
agent { agent {
docker { dockerfile {
filename 'Dockerfile.jenkins'
label 'docker-x86_64' label 'docker-x86_64'
image 'debian'
args '--user=root --privileged -v /var/run/docker.sock:/var/run/docker.sock' args '--user=root --privileged -v /var/run/docker.sock:/var/run/docker.sock'
} }
} }
@ -15,56 +15,41 @@ pipeline {
parameters { parameters {
string(name: 'R7RS_SCHEMES', defaultValue: 'chibi chicken gauche guile kawa mosh racket sagittarius stklos ypsilon', description: '') string(name: 'R7RS_SCHEMES', defaultValue: 'chibi chicken gauche guile kawa mosh racket sagittarius stklos ypsilon', description: '')
string(name: 'R6RS_SCHEMES', defaultValue: 'chezscheme guile ikarus ironscheme mosh racket sagittarius ypsilon', description: '') string(name: 'R6RS_SCHEMES', defaultValue: 'chezscheme guile ikarus ironscheme mosh racket sagittarius ypsilon', description: '')
string(name: 'SRFIS', defaultValue: '160 170', description: '') string(name: 'SRFIS', defaultValue: '106 170', description: '')
} }
stages { stages {
stage('Init') {
steps {
sh "apt-get update && apt-get install -y make docker.io git"
}
}
stage('Tests') { stage('Tests') {
parallel { stage('R6RS x86_64 Debian') {
stage('R6RS x86_64 Debian') { steps {
steps { script {
script { params.SRFIS.split().each { SRFI ->
params.SRFIS.split().each { SRFI -> params.R6RS_SCHEMES.split().each { SCHEME ->
params.R6RS_SCHEMES.split().each { SCHEME -> stage("${SCHEME} - ${SRFI}") {
def IMG="${SCHEME}:head" catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
stage("${SCHEME} - ${SRFI}") { sh "timeout 600 make SCHEME=${SCHEME} SRFI=${SRFI} RNRS=r6rs run-test-docker"
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh "timeout 600 make SCHEME=${SCHEME} SRFI=${SRFI} test-r6rs-docker"
}
} }
} }
} }
} }
} }
} }
stage('R7RS x86_64 Debian') { }
steps { stage('R7RS x86_64 Debian') {
script { steps {
params.SRFIS.split().each { SRFI -> script {
params.R7RS_SCHEMES.split().each { SCHEME -> params.SRFIS.split().each { SRFI ->
def IMG="${SCHEME}:head" params.R7RS_SCHEMES.split().each { SCHEME ->
if("${SCHEME}" == "chicken") { stage("${SCHEME} - ${SRFI}") {
IMG="${SCHEME}:5" catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
} sh "timeout 600 make SCHEME=${SCHEME} SRFI=${SRFI} RNRS=r6rs run-test-docker"
stage("${SCHEME} - ${SRFI}") {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh "timeout 600 make SCHEME=${SCHEME} SRFI=${SRFI} test-r7rs-docker"
}
} }
} }
} }
} }
} }
} }
} }
} }
} }
} }

View File

@ -29,27 +29,40 @@ install:
uninstall: uninstall:
-snow-chibi remove --impls=${SCHEME} ${PKG} -snow-chibi remove --impls=${SCHEME} ${PKG}
run-test-venv: build testfiles:
printf "#!r6rs\n(import (rnrs) (srfi :64) (foreign c) (srfi :${SRFI}))" > run-test.sps
cat ${TESTFILE} >> run-test.sps
echo "(import (scheme base) (scheme write) (scheme read) (scheme char) (scheme file) (scheme process-context) (srfi 64) (foreign c) (srfi ${SRFI}))" > run-test.scm
cat ${TESTFILE} >> run-test.scm
run-test-venv: testfiles build
rm -rf venv rm -rf venv
scheme-venv ${SCHEME} ${RNRS} venv scheme-venv ${SCHEME} ${RNRS} venv
mkdir -p venv/lib/srfi mkdir -p venv/lib/srfi
echo "(import (scheme base) (scheme write) (scheme read) (scheme char) (scheme file) (scheme process-context) (srfi 64) (foreign c) (srfi ${SRFI}))" > venv/test.scm cp run-test.sps venv/
printf "#!r6rs\n(import (rnrs) (srfi :64) (foreign c) (srfi :${SRFI}))" > venv/test.sps cp run-test.scm venv/
cat ${TESTFILE} >> venv/test.scm
cat ${TESTFILE} >> venv/test.sps
if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c ]; then cp -r ../foreign-c/foreign venv/lib/; fi; fi if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c ]; then cp -r ../foreign-c/foreign venv/lib/; fi; fi
if [ "${RNRS}" = "r6rs" ]; then cp -r srfi/${SRFI}.* venv/lib/srfi/; fi if [ "${RNRS}" = "r6rs" ]; then cp -r srfi/${SRFI}.* venv/lib/srfi/; fi
#if [ "${SCHEME}" = "chezscheme" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
#if [ "${SCHEME}" = "ikarus" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
#if [ "${SCHEME}" = "ironscheme" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
#if [ "${SCHEME}" = "racket" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/akku install akku-r7rs; fi if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/akku install akku-r7rs; fi
if [ "${SCHEME}" = "chicken" ]; then ./venv/bin/snow-chibi install --always-yes srfi.64; fi if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install --always-yes srfi.64; fi
if [ "${SCHEME}-${RNRS}" = "mosh-r7rs" ]; then ./venv/bin/snow-chibi install --always-yes srfi.64; fi
if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install ${PKG}; fi if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install ${PKG}; fi
if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/scheme-compile venv/test.sps; fi if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/scheme-compile venv/run-test.sps; fi
if [ "${RNRS}" = "r7rs" ]; then CSC_OPTIONS="-L -lcurl" ./venv/bin/scheme-compile venv/test.scm; fi if [ "${RNRS}" = "r7rs" ]; then CSC_OPTIONS="-L -lcurl" ./venv/bin/scheme-compile venv/run-test.scm; fi
./venv/test ./venv/run-test
run-test-system: testfiles build
if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c ]; then cp -r ../foreign-c/foreign .; fi; fi
if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/akku install akku-r7rs; fi
if [ "${SCHEME}" = "chicken" ]; then snow-chibi install --always-yes srfi.64; fi
if [ "${SCHEME}-${RNRS}" = "mosh-r7rs" ]; then snow-chibi install --always-yes srfi.64; fi
if [ "${RNRS}" = "r7rs" ]; then snow-chibi install ${PKG}; fi
if [ "${RNRS}" = "r6rs" ]; then COMPILE_R7RS=${SCHEME} compile-scheme test.sps; fi
if [ "${RNRS}" = "r7rs" ]; then COMPILE_R7RS=${SCHEME} compile-scheme test.scm; fi
./test
run-test-docker:
docker build --build-arg IMAGE=${DOCKERIMG} -f Dockerfile.test --tag=foreign-c-${SCHEME}-${RNRS} .
docker run -v "${PWD}/logs:/workdir/logs" -w /workdir foreign-c-${SCHEME}-${RNRS} sh -c "make SCHEME=${SCHEME} RNRS=${RNRS} TEST=${TEST} run-test-system; mv *.json logs/ || true"
test-r7rs: tmpdir test-r7rs: tmpdir
@if [ "${SCHEME}" = "chibi" ]; then rm -rf ${TMPDIR}/srfi/98.*; fi @if [ "${SCHEME}" = "chibi" ]; then rm -rf ${TMPDIR}/srfi/98.*; fi

3
srfi/106.rkt Normal file
View File

@ -0,0 +1,3 @@
#lang r7rs
(import (except (scheme base) let let-values let*-values string-copy string-copy! string-for-each string-map string-fill! string->list))
(include "106.sld")