<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Forgot to say that, in the case of <i class="">my_fun</i>, I do test it with stuff like 0 or -1 or something_that_is_not_even_an_integer… But dialyzer doesn’t complain, since the spec allows it.<div class=""><br class=""></div><div class="">(Sorry for the double-emailing)<br class=""><div class="">
<div style="color: rgb(0, 0, 0); font-family: 'Trebuchet MS'; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><span id="docs-internal-guid-e691a4cc-056a-0210-b8b7-ea8d87d888ad" class=""><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;" class=""><br class="Apple-interchange-newline"><hr class=""></span></span><div class=""><b class=""><i class=""><a href="http://about.me/elbrujohalcon" class="">Brujo Benavides</a></i></b></div></div></div><div style="color: rgb(0, 0, 0); font-family: 'Trebuchet MS'; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><b class=""><br class=""></b></div><br class="Apple-interchange-newline">
</div>
<div><br class=""><blockquote type="cite" class=""><div class="">On 13 Nov 2018, at 09:49, Brujo Benavides <<a href="mailto:elbrujohalcon@gmail.com" class="">elbrujohalcon@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I generally tend to follow the rule that people (users of my libs, in particular) should use dialyzer themselves.<div class="">So, for instance, if the the spec says this function should be called with a positive_integer(), I don’t test it with 0.</div><div class="">If anybody tries to use the function with the wrong input… something that will trigger a warning from dialyzer… they should detect it when running dialyzer on their code.</div><div class=""><br class=""></div><div class="">So, no… I don’t do <i class="">negative tests</i>, in that sense.</div><div class=""><br class=""></div><div class="">On the other hand, if I have a function like…</div><div class=""><br class=""></div><div class="">my_fun(X) when X > 0 -> work_with(X);</div><div class="">my_fun(X) -> error({invalid_input, X}).</div><div class=""><br class=""></div><div class="">I don’t spec it as…</div><div class="">-spec my_fun(pos_integer()) -> ….</div><div class=""><br class=""></div><div class="">I spec it as…</div><div class="">-spec my_fun(pos_integer()) -> …</div><div class="">     ; my_fun(X) -> no_return().</div><div class=""><br class=""></div><div class="">(or something similar, I typed that off-the-top-of-my-head)</div><div class=""><div class="">
<div style="font-family: "Trebuchet MS"; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class=""><span id="docs-internal-guid-e691a4cc-056a-0210-b8b7-ea8d87d888ad" class=""><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;" class=""><br class="Apple-interchange-newline"><hr class=""></span></span><div class=""><b class=""><i class=""><a href="http://about.me/elbrujohalcon" class="">Brujo Benavides</a></i></b></div></div></div><div style="font-family: "Trebuchet MS"; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><b class=""><br class=""></b></div><br class="Apple-interchange-newline">
</div>
<div class=""><br class=""><blockquote type="cite" class=""><div class="">On 13 Nov 2018, at 09:44, Fred Hebert <<a href="mailto:mononcqc@ferd.ca" class="">mononcqc@ferd.ca</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On 11/13, Brujo Benavides wrote:<br class=""><blockquote type="cite" class="">Funny… I do exactly the opposite thing.<br class=""><br class="">Since many of my projects are libraries and dialyzer is mostly clueless on the correctness of exported function specs when it has no other code using them, I use the tests to let dialyzer know how the functions are meant to be used. That way it can tell me if my specs are wrong or if something I meant to do with those functions is actually not possible.<br class=""><br class="">That’s why, more often than not, instead of `rebar3 dialyzer`, I do `rebar3 as test dialyzer`.<br class=""><br class="">BTW, I don’t think Krzysztof was saying that he run dialyzer against tests, just that (on one hand) tests pass but (on the other hand) when he checked his code with dialyzer, it complained. Mostly because I can see how dialyzer would complain with just his code, and no tests :)<br class=""><br class="">Cheers<br class=""><br class="">Brujo Benavides <<a href="http://about.me/elbrujohalcon" class="">http://about.me/elbrujohalcon</a>><br class=""><br class=""></blockquote><br class="">Do you just not do negative tests or you silence each of them individually?<br class=""></div></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></body></html>