Adding testing

This commit is contained in:
retropikzel 2025-10-24 20:23:57 +03:00
commit 7feda1cade
6 changed files with 132 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*/README.html
*.tgz
tmp

2
Dockerfile.jenkins Normal file
View File

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

33
Dockerfile.test Normal file
View File

@ -0,0 +1,33 @@
ARG SCHEME=chibi
ARG IMAGE=${SCHEME}:head
FROM debian:trixie AS cache
RUN apt-get update && apt-get install -y git ca-certificates make gcc libffi-dev
RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
WORKDIR /cache
RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1
RUN git clone https://codeberg.org/retropikzel/compile-r7rs.git --depth=1 --branch=silence
WORKDIR /cache/chibi-scheme
RUN make
RUN make install
WORKDIR /cache/compile-r7rs
RUN snow-chibi install --always-yes "(foreign c)"
RUN snow-chibi install --always-yes "(srfi 170)"
RUN make build-chibi
ARG SCHEME=chibi
ARG IMAGE=${SCHEME}:head
FROM schemers/${IMAGE}
RUN apt-get update && apt-get install -y make gcc libffi-dev
RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
COPY --from=cache /cache /cache
COPY --from=cache /usr/local/share/snow /usr/local/share/snow
COPY --from=cache /usr/local/lib/snow /usr/local/lib/snow
ARG SCHEME=chibi
WORKDIR /cache/compile-r7rs
RUN make install
WORKDIR /cache/chibi-scheme
RUN make install
WORKDIR /
RUN snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)"
RUN snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)"

42
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,42 @@
pipeline {
agent {
dockerfile {
filename 'Dockerfile.jenkins'
image 'debian'
args '--user=root --privileged -v /var/run/docker.sock:/var/run/docker.sock'
}
}
options {
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10'))
}
parameters {
string(name: 'LIBRARIES', defaultValue: 'system', description: '')
}
stages {
stage('Tests') {
steps {
script {
def implementations = sh(script: 'compile-r7rs --list-r7rs-schemes', returnStdout: true).split()
params.LIBRARIES.split().each { LIBRARY ->
stage("${LIBRARY}") {
parallel implementations.collectEntries { SCHEME ->
[(SCHEME): {
stage("${SCHEME}") {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh "make SCHEME=${SCHEME} clean test-docker"
}
}
}]
}
}
}
}
}
}
}
}

51
Makefile Normal file
View File

@ -0,0 +1,51 @@
.SILENT: build install test test-docker clean ${TMPDIR}
LIBRARY=system
README=${LIBRARY}/README.html
DESCRIPTION=$(shell head -n1 ${LIBRARY}/README.md)
VERSION=$(shell cat ${LIBRARY}/VERSION)
AUTHOR=$(shell cat ${LIBRARY}/AUTHOR | tr '[:upper:]' '[:lower:]')
LIBRARY_FILE=${LIBRARY}/${AUTHOR}/${LIBRARY}.sld
PKG=${AUTHOR}-${LIBRARY}-${VERSION}.tgz
SCHEME=chibi
TMPDIR=tmp/${SCHEME}
TESTFILE=${LIBRARY}/test.scm
DOCKERIMG=${SCHEME}:head
ifeq "${SCHEME}" "chicken"
DOCKERIMG="chicken:5"
endif
all: build
build: ${LIBRARY}/LICENSE ${LIBRARY}/VERSION ${LIBRARY}/AUTHOR
echo "<pre>$$(cat ${LIBRARY}/README.md)</pre>" > ${README}
snow-chibi package --version=${VERSION} --authors=${AUTHOR} --doc=${README} --description="${DESCRIPTION}" ${LIBRARY_FILE}
install:
snow-chibi install --impls=${SCHEME} ${SNOW_CHIBI_ARGS} ${PKG}
uninstall:
-snow-chibi remove --impls=${SCHEME} ${PKG}
${TMPDIR}:
@mkdir -p ${TMPDIR}
@cp ${TESTFILE} ${TMPDIR}/
@cp -r ${LIBRARY} ${TMPDIR}/
test: ${TMPDIR}
echo "Hello"
cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-r7rs -I . -o test test.scm
cd ${TMPDIR} && ./test
test-docker: ${TMPDIR}
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f Dockerfile.test . 2> ${TMPDIR}/docker.log || cat ${TMPDIR}/docker.log
docker run -it -v "${PWD}:/workdir" -w /workdir -t foreign-c-test-${SCHEME} \
sh -c "make SCHEME=${SCHEME} SNOW_CHIBI_ARGS=--always-yes build install test; chmod -R 755 ${TMPDIR}"
clean:
find . -name "README.html" -delete
rm -rf ${TMPDIR}
rm -rf *.tgz
clean-all:
rm -rf tmp

1
system Submodule

@ -0,0 +1 @@
Subproject commit 5a543f51e99f79b7ee22e19fd235f5f75da4f5a4