2.1 KiB
These are commands that will likely be useful during development.
General: ./test.sh
compiles and builds both the Haskell and Scala code and runs all tests. Recommended that you run this before pushing any code to a branch that others might be working on.
Scala
Launch sbt
in runtime-jvm
directory, then here are various useful commands:
main/test:run
- runs all the testsmain/test:run compilation
- runs tests prefixed by"compilation"
main/test:run 102932 compilation.let3
- runs tests prefixed by"compilation.let3"
with the random seed 102932benchmark/run
- presents menu of benchmarks to run;clean;coverage;main/test:run;coverageReport
followed optionally by;coverageOff
- generates test coverage reportmain/compile
- builds the interpretermain/run
- builds and runs the interpreter
The runtime doesn't build with JDK 10 at the moment, but this will work:
JAVA_HOME=`/usr/libexec/java_home -v 9` sbt <commands ...>
To run the built interpreter without booting sbt:
scala -cp main/target/scala-2.12/classes org.unisonweb.Bootstrap test.ub
or from the project root directory:
scala -cp runtime-jvm/main/target/scala-2.12/classes org.unisonweb.Bootstrap test.ub
Haskell
For doing compilation you can do:
stack repl unison-parser-typechecker
You can also do:
stack build unison-parser-typechecker && stack exec tests
If you want to run the tests outside the REPL. The stack exec tests
takes an optional command line arg specifying the test prefix. In the REPL, you can also do:
> import EasyTest as ET
> ET.runOnly "typechecker" Main.test
What if you want a profiled build? Do:
stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" unison-parser-typechecker
Again you can leave off the flag. To run an executable with profiling enabled, do:
stack exec -- <executable-name> +RTS -p
That will generate a <executable-name>.prof
plain text file with profiling data. More info on profiling.