shithub: MicroHs

Download patch

ref: 8bfee44d23eaf1bc6e0d02d124c56a02888907ae
parent: d5fed2d80ccb009da7e9d95d0cc3c18d191d4503
author: Lennart Augustsson <lennart@augustsson.net>
date: Sat Nov 23 06:48:16 EST 2024

Add a target for emscripten tests.

--- a/.github/workflows/mhs-ci.yml
+++ b/.github/workflows/mhs-ci.yml
@@ -221,7 +221,7 @@
        with:
          node-version: 20
      - name: run emscripten tests
-       run: make emscripten
+       run: make runtestemscripten
 
   build-macos-emscripten:
     runs-on: macos-latest
@@ -232,4 +232,4 @@
        with:
          node-version: 20
      - name: run emscripten tests
-       run: make emscripten
+       run: make runtestemscripten
--- a/Makefile
+++ b/Makefile
@@ -140,6 +140,11 @@
 runtestmhs:
 	cd tests; make MHS=../bin/mhs cache; make MHS="../bin/mhs +RTS -H4M -RTS -CR" info test errtest
 
+# Run test examples going via JavaScript
+runtestemscripten:
+	cd tests; MHSDIR=.. make MHS="../bin/gmhs -temscripten -oout.js" EVAL="node out.js" alltest
+
+
 # Compress the binary (broken on MacOS)
 bin/umhs: bin/mhs
 	rm -f bin/umhs
@@ -163,7 +168,6 @@
 #
 clean:
 	rm -rf src/*/*.hi src/*/*.o *.comb *.tmp *~ bin/* a.out $(GHCOUTDIR) Tools/*.o Tools/*.hi dist-newstyle generated/*-stage* .mhscache targets.conf .mhscache dist-mcabal cpphssrc Interactive.hs .mhsi
-	make clean -f Makefile.emscripten
 	cd tests; make clean
 	-cabal clean
 
@@ -206,9 +210,6 @@
 
 nfibtest: bin/mhs bin/mhseval
 	bin/mhs -itests Nfib && bin/mhseval
-
-emscripten: bin/mhs targets.conf
-	make test -f Makefile.emscripten
 
 ######
 
--- a/Makefile.emscripten
+++ /dev/null
@@ -1,53 +1,0 @@
-TMHS=./bin/mhs -itests
-CC=emcc -sALLOW_MEMORY_GROWTH -sTOTAL_STACK=5MB
-NODE=node
-CONF=unix-64
-.PHONY: test
-
-tests/emtarget : targets.conf
-	echo '' >> targets.conf
-	echo [emscripten] >> targets.conf
-	echo cc = \"$(CC)\" >> targets.conf
-	echo conf = \"$(CONF)\" >> targets.conf
-	touch tests/emtarget
-
-test: tests/emtarget
-	$(TMHS) -temscripten Hello -otests/Hello.js && $(NODE) tests/Hello.js > tests/Hello.out && diff tests/Hello.ref tests/Hello.out
-	$(TMHS) -temscripten IOTest -otests/IOTest.js && (echo q | $(NODE) tests/IOTest.js a bb ccc | sed 's/^[0-9]*ms/1ms/' > tests/IOTest.out) && diff tests/IOTest.ref tests/IOTest.out
-	$(TMHS) -temscripten StringTest -otests/StringTest.js && $(NODE) tests/StringTest.js > tests/StringTest.out && diff tests/StringTest.ref tests/StringTest.out
-	$(TMHS) -temscripten ListTest -otests/ListTest.js && $(NODE) tests/ListTest.js > tests/ListTest.out && diff tests/ListTest.ref tests/ListTest.out
-	$(TMHS) -temscripten Fac -otests/Fac.js && $(NODE) tests/Fac.js > tests/Fac.out && diff tests/Fac.ref tests/Fac.out
-	$(TMHS) -temscripten Misc -otests/Misc.js && $(NODE) tests/Misc.js > tests/Misc.out && diff tests/Misc.ref tests/Misc.out
-	$(TMHS) -temscripten Case -otests/Case.js && $(NODE) tests/Case.js > tests/Case.out && diff tests/Case.ref tests/Case.out
-	$(TMHS) -temscripten Arith -otests/Arith.js && $(NODE) tests/Arith.js > tests/Arith.out && diff tests/Arith.ref tests/Arith.out
-	$(TMHS) -temscripten Guard -otests/Guard.js && $(NODE) tests/Guard.js > tests/Guard.out && diff tests/Guard.ref tests/Guard.out
-	$(TMHS) -temscripten Newtype -otests/Newtype.js && $(NODE) tests/Newtype.js > tests/Newtype.out && diff tests/Newtype.ref tests/Newtype.out
-	$(TMHS) -temscripten LitMatch -otests/LitMatch.js && $(NODE) tests/LitMatch.js > tests/LitMatch.out && diff tests/LitMatch.ref tests/LitMatch.out
-	$(TMHS) -temscripten Word -otests/Word.js && $(NODE) tests/Word.js > tests/Word.out && diff tests/Word.ref tests/Word.out
-	$(TMHS) -temscripten Enum -otests/Enum.js && $(NODE) tests/Enum.js > tests/Enum.out && diff tests/Enum.ref tests/Enum.out
-	# $(TMHS) Foreign -otests/Foreign.js && $(NODE) tests/Foreign.js > tests/Foreign.out && diff tests/Foreign.ref tests/Foreign.out
-	$(TMHS) -temscripten MutRec -otests/MutRec.js && $(NODE) tests/MutRec.js > tests/MutRec.out && diff tests/MutRec.ref tests/MutRec.out
-	$(TMHS) -temscripten LocalPoly -otests/LocalPoly.js && $(NODE) tests/LocalPoly.js > tests/LocalPoly.out && diff tests/LocalPoly.ref tests/LocalPoly.out
-	$(TMHS) -temscripten Rank2 -otests/Rank2.js && $(NODE) tests/Rank2.js > tests/Rank2.out && diff tests/Rank2.ref tests/Rank2.out
-	$(TMHS) -temscripten Catch -otests/Catch.js && $(NODE) tests/Catch.js | sed 's/tests\/Catch.hs/.\/Catch.hs/' > tests/Catch.out && diff tests/Catch.ref tests/Catch.out
-	$(TMHS) -temscripten FArith -otests/FArith.js && $(NODE) tests/FArith.js > tests/FArith.out && diff tests/FArith.ref tests/FArith.out
-	$(TMHS) -temscripten Infix -otests/Infix.js && $(NODE) tests/Infix.js > tests/Infix.out && diff tests/Infix.ref tests/Infix.out
-	$(TMHS) -temscripten Class -otests/Class.js && $(NODE) tests/Class.js > tests/Class.out && diff tests/Class.ref tests/Class.out
-	$(TMHS) -temscripten Eq -otests/Eq.js && $(NODE) tests/Eq.js > tests/Eq.out && diff tests/Eq.ref tests/Eq.out
-	# $(TMHS) Floating -otests/Floating.js && $(NODE) tests/Floating.js > tests/Floating.out && diff tests/Floating.ref tests/Floating.out
-	$(TMHS) -temscripten Default -otests/Default.js && $(NODE) tests/Default.js > tests/Default.out && diff tests/Default.ref tests/Default.out
-	$(TMHS) -temscripten Multi -otests/Multi.js && $(NODE) tests/Multi.js > tests/Multi.out && diff tests/Multi.ref tests/Multi.out
-	$(TMHS) -temscripten Exists -otests/Exists.js && $(NODE) tests/Exists.js > tests/Exists.out && diff tests/Exists.ref tests/Exists.out
-	$(TMHS) -temscripten TypeEq -otests/TypeEq.js && $(NODE) tests/TypeEq.js > tests/TypeEq.out && diff tests/TypeEq.ref tests/TypeEq.out
-	$(TMHS) -temscripten Sieve -otests/Sieve.js && $(NODE) tests/Sieve.js > tests/Sieve.out && diff tests/Sieve.ref tests/Sieve.out
-	$(TMHS) -temscripten Dict -otests/Dict.js && $(NODE) tests/Dict.js > tests/Dict.out && diff tests/Dict.ref tests/Dict.out
-	$(TMHS) -temscripten Symbol -otests/Symbol.js && $(NODE) tests/Symbol.js > tests/Symbol.out && diff tests/Symbol.ref tests/Symbol.out
-	$(TMHS) -temscripten FunDep -otests/FunDep.js && $(NODE) tests/FunDep.js > tests/FunDep.out && diff tests/FunDep.ref tests/FunDep.out
-	$(TMHS) -temscripten TypeLits -otests/TypeLits.js && $(NODE) tests/TypeLits.js > tests/TypeLits.out && diff tests/TypeLits.ref tests/TypeLits.out
-	$(TMHS) -temscripten View -otests/View.js && $(NODE) tests/View.js > tests/View.out && diff tests/View.ref tests/View.out
-	$(TMHS) -temscripten IOArray -otests/IOArray.js && $(NODE) tests/IOArray.js > tests/IOArray.out && diff tests/IOArray.ref tests/IOArray.out
-	$(TMHS) -temscripten ST -otests/ST.js && $(NODE) tests/ST.js > tests/ST.out && diff tests/ST.ref tests/ST.out
-	$(TMHS) -temscripten Info -otests/Info.js && $(NODE) tests/Info.js
-
-clean:
-	rm -f tests/*.out tests/*.tmp tests/*.js tests/*.wasm tests/emtarget
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -88,4 +88,4 @@
 	$(TMHS) Nfib && $(EVAL)
 
 clean:
-	rm -f *.out *.tmp
+	rm -f *.out *.tmp *.js