Improve tests
This commit is contained in:
parent
0f8db12e8f
commit
3ea4ae05a3
|
|
@ -2,3 +2,6 @@
|
||||||
venv
|
venv
|
||||||
*.html
|
*.html
|
||||||
*.log
|
*.log
|
||||||
|
foreign
|
||||||
|
run-test*
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
FROM debian:trixie
|
||||||
|
RUN apt-get update && apt-get -y install make docker.io git
|
||||||
|
|
@ -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"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
41
Makefile
41
Makefile
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
Loading…
Reference in New Issue