Improving testing

This commit is contained in:
retropikzel 2025-11-28 12:21:02 +02:00
parent 9850f8e632
commit c55ac3c3f6
2 changed files with 20 additions and 29 deletions

View File

@ -10,6 +10,7 @@ RUN wget https://gitlab.com/-/project/6808260/uploads/094ce726ce3c6cf8c14560f1e3
&& mv akku-1.1.0.amd64-linux akku && mv akku-1.1.0.amd64-linux akku
RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1 RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1
RUN git clone https://codeberg.org/retropikzel/compile-scheme.git --depth=1 RUN git clone https://codeberg.org/retropikzel/compile-scheme.git --depth=1
RUN git clone https://codeberg.org/foreign-c/foreign-c.git --depth=1
WORKDIR /build/chibi-scheme WORKDIR /build/chibi-scheme
RUN make RUN make
RUN make install RUN make install
@ -19,7 +20,7 @@ RUN make build-gauche
ARG SCHEME=chibi ARG SCHEME=chibi
ARG IMAGE=${SCHEME}:head ARG IMAGE=${SCHEME}:head
FROM schemers/${IMAGE} FROM schemers/${IMAGE}
RUN apt-get update && apt-get install -y make libffi-dev libcurl4 gauche RUN apt-get update && apt-get install -y make gcc libffi-dev libcurl4 gauche
RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
COPY --from=build /build /build COPY --from=build /build /build
ARG SCHEME=chibi ARG SCHEME=chibi
@ -33,10 +34,12 @@ WORKDIR /build/akku
RUN bash install.sh RUN bash install.sh
ENV PATH=/root/.local/bin:${PATH} ENV PATH=/root/.local/bin:${PATH}
RUN akku update RUN akku update
WORKDIR / WORKDIR /build/foreign-c
RUN timeout 60 snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)" RUN timeout 60 snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)"
RUN timeout 60 snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)" RUN timeout 60 snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)"
RUN make SCHEME=${SCHEME} build install
WORKDIR /workdir WORKDIR /workdir
RUN cp -r /build/foreign-c/foreign .
COPY Makefile . COPY Makefile .
COPY retropikzel retropikzel/ COPY retropikzel retropikzel/

View File

@ -1,4 +1,4 @@
.SILENT: build install test test-docker clean ${TMPDIR} .SILENT: build install test test-docker clean
SCHEME=chibi SCHEME=chibi
LIBRARY=system LIBRARY=system
AUTHOR=Retropikzel AUTHOR=Retropikzel
@ -9,8 +9,7 @@ DESCRIPTION=$(shell head -n1 retropikzel/${LIBRARY}/README.md)
README=retropikzel/${LIBRARY}/README.html README=retropikzel/${LIBRARY}/README.html
TESTFILE=retropikzel/${LIBRARY}/test.scm TESTFILE=retropikzel/${LIBRARY}/test.scm
PKG=foreign-c-${LIBRARY}-${VERSION}.tgz PKG=retropikzel-${LIBRARY}-${VERSION}.tgz
TMPDIR=.tmp/${LIBRARY}/${SCHEME}
DOCKERIMG=${SCHEME}:head DOCKERIMG=${SCHEME}:head
ifeq "${SCHEME}" "chicken" ifeq "${SCHEME}" "chicken"
@ -29,37 +28,26 @@ install:
uninstall: uninstall:
-snow-chibi remove --impls=${SCHEME} ${PKG} -snow-chibi remove --impls=${SCHEME} ${PKG}
.akku: test-r7rs:
akku install chez-srfi akku-r7rs echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (retropikzel ${LIBRARY}) (srfi 64))" > test-r7rs.scm
cat retropikzel/${LIBRARY}/test.scm >> test-r7rs.scm
tmpdir: .akku COMPILE_R7RS=${SCHEME} compile-scheme -I . -o test-r7rs test-r7rs.scm
mkdir -p ${TMPDIR} printf "\n" | ./test-r7rs
cp ${TESTFILE} ${TMPDIR}/
mkdir -p ${TMPDIR}/retropikzel
cp -r retropikzel/${LIBRARY} ${TMPDIR}/retropikzel/
cp -r retropikzel/${LIBRARY}.s* ${TMPDIR}/retropikzel/
test-r7rs: tmpdir
cd ${TMPDIR} && echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (retropikzel ${LIBRARY}) (srfi 64))" > test-r7rs.scm
cd ${TMPDIR} && cat retropikzel/${LIBRARY}/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
test-r7rs-docker: test-r7rs-docker:
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} . docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} .
docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} test-r7rs" docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} LIBRARY=${LIBRARY} build install test-r7rs"
test-r6rs: tmpdir test-r6rs:
cd ${TMPDIR} && echo "(import (rnrs) (retropikzel ${LIBRARY}) (srfi :64))" > test-r6rs.sps echo "(import (rnrs) (retropikzel ${LIBRARY}) (srfi :64))" > test-r6rs.sps
cd ${TMPDIR} && cat retropikzel/${LIBRARY}/test.scm >> test-r6rs.sps cat retropikzel/${LIBRARY}/test.scm >> test-r6rs.sps
cd ${TMPDIR} && akku install akku install chez-srfi akku-r7rs
cp -r .akku/* ${TMPDIR}/.akku/ COMPILE_R7RS=${SCHEME} compile-scheme -I .akku/lib -o test-r6rs test-r6rs.sps
cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I .akku/lib -o test-r6rs test-r6rs.sps ./test-r6rs
cd ${TMPDIR} && ./test-r6rs
test-r6rs-docker: test-r6rs-docker:
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} . docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} .
docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} test-r6rs" docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} LIBRARY=${LIBRARY} test-r6rs"
clean: clean:
git clean -X -f git clean -X -f