Running OUnit tests using dune
I'm having difficulties running oUnit tests, mostly because I'm new to both dune and OUnit. dune complains when I run dune runtest:
File "test/dune", line 4, characters 13-14:
Error: Library "f" not found.
Hint: try: dune external-lib-deps --missing @runtest
Here's the project structure:
├── dune
├── f.ml # This is the source file.
└── test
├── dune
└── f_test.ml # This is the test.
This is dune:
(executable
(name f))
This is test/dune:
(test
(name f_test)
(libraries oUnit f)) ; <- `f` here causes problems.
I can see that the error appears because dune does not know about f.ml, and hence does not know about f in the dune file.
Question is: How can I make dune compile f.ml in such a way that test/dune knows about the f library that I use in test/f_test.ml? How can I run the unit tests properly?
ocaml ounit ocaml-dune
add a comment |
I'm having difficulties running oUnit tests, mostly because I'm new to both dune and OUnit. dune complains when I run dune runtest:
File "test/dune", line 4, characters 13-14:
Error: Library "f" not found.
Hint: try: dune external-lib-deps --missing @runtest
Here's the project structure:
├── dune
├── f.ml # This is the source file.
└── test
├── dune
└── f_test.ml # This is the test.
This is dune:
(executable
(name f))
This is test/dune:
(test
(name f_test)
(libraries oUnit f)) ; <- `f` here causes problems.
I can see that the error appears because dune does not know about f.ml, and hence does not know about f in the dune file.
Question is: How can I make dune compile f.ml in such a way that test/dune knows about the f library that I use in test/f_test.ml? How can I run the unit tests properly?
ocaml ounit ocaml-dune
add a comment |
I'm having difficulties running oUnit tests, mostly because I'm new to both dune and OUnit. dune complains when I run dune runtest:
File "test/dune", line 4, characters 13-14:
Error: Library "f" not found.
Hint: try: dune external-lib-deps --missing @runtest
Here's the project structure:
├── dune
├── f.ml # This is the source file.
└── test
├── dune
└── f_test.ml # This is the test.
This is dune:
(executable
(name f))
This is test/dune:
(test
(name f_test)
(libraries oUnit f)) ; <- `f` here causes problems.
I can see that the error appears because dune does not know about f.ml, and hence does not know about f in the dune file.
Question is: How can I make dune compile f.ml in such a way that test/dune knows about the f library that I use in test/f_test.ml? How can I run the unit tests properly?
ocaml ounit ocaml-dune
I'm having difficulties running oUnit tests, mostly because I'm new to both dune and OUnit. dune complains when I run dune runtest:
File "test/dune", line 4, characters 13-14:
Error: Library "f" not found.
Hint: try: dune external-lib-deps --missing @runtest
Here's the project structure:
├── dune
├── f.ml # This is the source file.
└── test
├── dune
└── f_test.ml # This is the test.
This is dune:
(executable
(name f))
This is test/dune:
(test
(name f_test)
(libraries oUnit f)) ; <- `f` here causes problems.
I can see that the error appears because dune does not know about f.ml, and hence does not know about f in the dune file.
Question is: How can I make dune compile f.ml in such a way that test/dune knows about the f library that I use in test/f_test.ml? How can I run the unit tests properly?
ocaml ounit ocaml-dune
ocaml ounit ocaml-dune
edited Nov 15 '18 at 12:49
Flux
asked Nov 15 '18 at 10:34
FluxFlux
1,1371832
1,1371832
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
One possibility is to split f into a private library and an executable, and then test the split library.
EDIT:
For instance, the project structure could be updated to
├── dune
├── f.ml # f only contains the I/O glue code.
├── lib
| ├── dune
| └── a.ml # a implements the features that need to be tested.
└── test
├── dune
└── test.ml # This is the test.
with dune
(executable (name main) (libraries Lib))
For the test, test/dune:
(test (name test) (libraries Lib oUnit))
and finally lib/dune
(library (name Lib))
With this setup, the test can be run with dune runtest.
Do you mind providing a short example?
– Flux
Nov 16 '18 at 1:16
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53317459%2frunning-ounit-tests-using-dune%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
One possibility is to split f into a private library and an executable, and then test the split library.
EDIT:
For instance, the project structure could be updated to
├── dune
├── f.ml # f only contains the I/O glue code.
├── lib
| ├── dune
| └── a.ml # a implements the features that need to be tested.
└── test
├── dune
└── test.ml # This is the test.
with dune
(executable (name main) (libraries Lib))
For the test, test/dune:
(test (name test) (libraries Lib oUnit))
and finally lib/dune
(library (name Lib))
With this setup, the test can be run with dune runtest.
Do you mind providing a short example?
– Flux
Nov 16 '18 at 1:16
add a comment |
One possibility is to split f into a private library and an executable, and then test the split library.
EDIT:
For instance, the project structure could be updated to
├── dune
├── f.ml # f only contains the I/O glue code.
├── lib
| ├── dune
| └── a.ml # a implements the features that need to be tested.
└── test
├── dune
└── test.ml # This is the test.
with dune
(executable (name main) (libraries Lib))
For the test, test/dune:
(test (name test) (libraries Lib oUnit))
and finally lib/dune
(library (name Lib))
With this setup, the test can be run with dune runtest.
Do you mind providing a short example?
– Flux
Nov 16 '18 at 1:16
add a comment |
One possibility is to split f into a private library and an executable, and then test the split library.
EDIT:
For instance, the project structure could be updated to
├── dune
├── f.ml # f only contains the I/O glue code.
├── lib
| ├── dune
| └── a.ml # a implements the features that need to be tested.
└── test
├── dune
└── test.ml # This is the test.
with dune
(executable (name main) (libraries Lib))
For the test, test/dune:
(test (name test) (libraries Lib oUnit))
and finally lib/dune
(library (name Lib))
With this setup, the test can be run with dune runtest.
One possibility is to split f into a private library and an executable, and then test the split library.
EDIT:
For instance, the project structure could be updated to
├── dune
├── f.ml # f only contains the I/O glue code.
├── lib
| ├── dune
| └── a.ml # a implements the features that need to be tested.
└── test
├── dune
└── test.ml # This is the test.
with dune
(executable (name main) (libraries Lib))
For the test, test/dune:
(test (name test) (libraries Lib oUnit))
and finally lib/dune
(library (name Lib))
With this setup, the test can be run with dune runtest.
edited Nov 16 '18 at 6:38
answered Nov 15 '18 at 17:48
octachronoctachron
5,1431614
5,1431614
Do you mind providing a short example?
– Flux
Nov 16 '18 at 1:16
add a comment |
Do you mind providing a short example?
– Flux
Nov 16 '18 at 1:16
Do you mind providing a short example?
– Flux
Nov 16 '18 at 1:16
Do you mind providing a short example?
– Flux
Nov 16 '18 at 1:16
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53317459%2frunning-ounit-tests-using-dune%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown