OUnit and Files

Creating a couple more files can make the use of OUnit more pleasant.

Tags file

We compiled the OUnit test file, we had to specify linking of OUnit:

$ ocamlbuild -pkgs oUnit sum_test.byte

If you get tired of typing the pkgs oUnit part of that, you can instead create a file named _tags (note the underscore) in the same directory and put the following into it:

true: package(oUnit)

Now Ocamlbuild will automatically link in OUnit everytime you compile in this directory, without you having to give the pkgs flag. The tradeoff is that you now have to pass a different flag to Ocamlbuild:

$ ocamlbuild -use-ocamlfind sum_test.byte

And you will continue having to pass that flag as long as the _tags file exists. Why is this any better? If there are many packages you want to link, with the tags file you end up having to pass only one option on the command line, instead of many.

Merlin file

If you are using Merlin (e.g., your editor is VS Code or Emacs), you will notice two things that aren't quite optimal at this point. First, Merlin doesn't understand the OUnit code. Second, Merlin doesn't understand the code located in sum.ml while you are editing sum_test.ml. To fix both of those problems, create a file in the same directory and name it .merlin. (Note the leading dot in that filename.) In that file put the following:

B _build
PKG oUnit

The first line tells Merlin to look for compiled code from other source files inside the _build directory, which is where Ocamlbuild places compiled code. The second line tells Merlin to look for the oUnit package. You might need to restart your editor for these changes to take effect. After that, you definitely have to compile the code with Ocamlbuild, so that the compiled code exists in the _build directory where Merlin now expects to find it.

results matching ""

    No results matching ""